2 сетевые карты маршрутизации
У меня 2 сетевые карты с публичными ips. Я работаю 2 службы. Так как мне маршрутизировать соединения.
На данный момент работает только один интерфейс ip, хотя оба доступны для пинга из интернета.
Моя таблица маршрутизации выглядит так:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.31.128.1 0.0.0.0 UG 0 0 0 eth1
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.31.128.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
172.31.129.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
Так что мне добавить к нему, чтобы оно работало?
На данный момент eth1 работает без проблем.
1 ответ
Я предполагаю Linux из-за имен интерфейсов и тега "iproute2".
Это не работает, потому что простое указание маршрута по умолчанию будет означать, что весь исходящий трафик будет проходить через этот интерфейс, даже ответы на запросы, поступившие из другого интерфейса!
В вашем случае вы говорите, что у вас есть общедоступные IP-адреса, но два напрямую подключенных интерфейса имеют частные IP-адреса, поэтому я предполагаю, что это означает, что у вас включен NAT. Всякий раз, когда у вас есть NAT, вы не можете использовать этот тип треугольной маршрутизации, когда входящие и исходящие пакеты выбирают разные пути, потому что пакеты были изменены при входе с помощью блока NAT, и должны быть изменены таким же образом. На выходе. Ваш запрашивающий клиент в конечном итоге получает пакеты с IP-адреса, который он не ожидает, и не распознает ответ.
Что вам нужно сделать, это сообщить операционной системе, что любые пакеты с IP-адресами, исходящими от вашего интерфейса в 172.31.128.0/24 к Интернету, должны попасть на шлюз 172.31.128.1 и, соответственно, для подсети 172.31.129.0/24.,
Это может быть достигнуто следующим образом:
ip route add 172.31.129.0/24 dev eth0 src 172.31.129.XXX table T1
ip route add default via 172.31.129.1 table T1
ip route add 172.31.128.0/24 dev eth1 src 172.31.128.XXX table T2
ip route add default via 172.31.128.1 table T2
ip rule add from 172.31.129.XXX table T1
ip rule add from 172.31.128.XXX table T2
Вам нужно будет заменить XXX на IP-адрес вашего сервера в этих локальных подсетях.
Это должно начать вас. Вы найдете больше по этой теме в разделе 4.2 HOWTO о Linux Advanced Routing & Traffic Control.