Маршрутизация на основе политик Docker
Я пытаюсь использовать маршрутизацию на основе политик в своей системе. Сеть простая, с двумя независимыми интерфейсами с независимыми сетями... например.
NIC1 = 172.31.3.x/24NIC2 = 172.31.1.x/24
каждый интерфейс получил свой собственный шлюз и создал таблицы в /etc/iproute2/rt_tables
Система также устанавливает структуру докер-контейнера с собственной сетью. Изначально я не мог получить доступ к своим контейнерам и портам по сети... но благодаря пост- Docker симметричной маршрутизации/маршрутизации на основе политик я смог заставить ее работать.
вот команды, которые я запускаю в своей системе
ip route add default scope global nexthop via 172.31.3.185 dev eno1 weight 1 nexthop via 172.31.1.180 dev eno2 weight 2
ip route add 172.31.3.0/24 dev eno1 table eno1
ip route add default via 172.31.3.254 dev eno1 table eno1
ip rule add from 172.31.3.185/32 table eno1
ip rule add to 172.31.3.185/32 table eno1
ip route add 172.31.1.0/24 dev eno2 table eno2
ip route add default via 172.31.1.254 dev eno2 table eno2
ip rule add from 172.31.1.180/32 table eno2
ip rule add to 172.31.1.180/32 table eno2
и чтобы докер работал - следующее
ip rule add fwmark 0x1 table eno1
iptables -t mangle -A PREROUTING -i eno1 -m conntrack --ctstate NEW --ctdir ORIGINAL -j CONNMARK --set-mark 0x1
ip rule add fwmark 0x2 table eno2
iptables -t mangle -A PREROUTING -i eno2 -m conntrack --ctstate NEW --ctdir ORIGINAL -j CONNMARK --set-mark 0x2
iptables -t mangle -A PREROUTING -m conntrack ! --ctstate NEW --ctdir REPLY -m connmark ! --mark 0x0 -j CONNMARK --restore-mark
iptables -t mangle -A OUTPUT -m conntrack ! --ctstate NEW --ctdir REPLY -m connmark ! --mark 0x0 -j CONNMARK --restore-mark
Все работает, за исключением случаев, когда я пытаюсь достичь локальных IP-адресов 172.31.3.185 или 172.31.1.180 локально (из той же системы). Я не могу до них добраться. до него можно добраться извне. Может кто-нибудь, пожалуйста, помогите, может быть, первоначальный автор темы - Антон Данилов. Пожалуйста помоги