Имею 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 работает без проблем.
Я предполагаю 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 Linux Advanced Routing & Traffic Control HOWTO.