Проблема маршрутизации с несколькими IP-адресами на хосте EC2 (VPC)

Мы используем сервер EC2 Ubuntu, выступающий в роли сервера STUN для механизма NAT Traversal в приложении моей компании. По характеру протокола STUN серверу нужны два публичных IP-адреса. Мы наняли некоторых консультантов, чтобы настроить это для нас, но они, похоже, потерпели неудачу, потому что сервер STUN не отвечает ни на какие внешние запросы привязки.

Вот что мы знаем: * У нас есть два EIP, сопоставленных с сервером (один и тот же сетевой интерфейс). * Сервер работает внутри подсети VPC. * Если мы отправляем запросы привязки STUN локально на сервере STUN (указав один из EIP-адресов для клиента STUN), это успешно выполняется. * Если мы сделаем тот же запрос от одного из наших других серверов EC2 (за пределами подсети VPC), запрос не будет выполнен. * Если мы делаем тот же запрос с настольного компьютера в нашем офисе, он не выполняется. * Сервер STUN получает запросы на связывание, но, похоже, ему не удается направить ответ. Вот скриншот разбора Wireshark файла дампа, созданного во время запроса привязки.

Я предполагаю, что мы что-то упустили в наших таблицах маршрутизации. К сожалению, IP-маршрутизация не входит в наши основные компетенции (особенно в Linux). Ниже приведен вывод ifconfig, который, мы надеемся, даст вам более полезную информацию.

eth0 Link encap: Ethernet HWaddr 0e: 5a: ec: 5d: 6d: d5 inetr:10.0.0.22 Bcast:10.0.0.255 Маска:255.255.255.0 inet6 addr: fe80::c5a:ecff:fe5d:6dd5/64 Область действия:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Метрика: 1 пакеты RX:28031 ошибки: 0 отброшено: 0 переполнений: 0 кадр: 0 пакетов TX:18370 ошибок: 0 отброшено: 0 переполнений: 0 несущая: 0 коллизий:0 txqueuelen:1000 RX байт:2329243 (2,3 МБ). TX байт:19316360 (19,3 МБ). Прерывание: 28

eth0: 1 Encap:Ethernet HWaddr 0e:5a:ec:5d:6d:d5 inet addr:10.0.0.23 Bcast:10.0.0.255 Маска: 255.255.255.0 ВВЕРХ В РАМКАХ ВЫПУСКА MULTICAST MTU: 1500 Метрика: 1 Прерывание: 28

eth0: 2 Encap:Ethernet HWaddr 0e:5a:ec:5d:6d:d5 inet addr:107.23.130.153 Bcast:0.0.0.0 Маска:255.255.255.255 UP BROADCAST RUNNING MULTICAST MTU:1500 Метрика: 1 Прерывание: 28

eth0: 3 Encap:Ethernet HWaddr 0e:5a:ec:5d:6d:d5 inet addr:107.23.35.233 Bcast:0.0.0.0 Маска:255.255.255.255 UP BROADCAST RUNNING MULTICAST MTU:1500 Метрика: 1 Прерывание: 28

Вот результат работы маршрута sudo:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

default         10.0.0.1        0.0.0.0         UG    100    0        0 eth0
10.0.0.0        *               255.255.255.0   U     0      0        0 eth0

1 ответ

10.0.0.1 - это ваш шлюз по умолчанию, есть ли маршрутизатор в сети 107.23.XX?

У меня есть ощущение, что вам нужно будет настроить правильные таблицы маршрутизации, чтобы гарантировать, что пакеты, которые входят в одну сеть, также возвращаются через тот же интерфейс, в той же сети.

Вы могли бы сделать что-то вроде этого:

echo 200 Ten >> /etc/iproute2/rt_tables
ip route add 107.23.130.153 dev eth0:2 src 107.23.130.153 table Ten
ip route add default via whatever table Ten

echo 200 Twenty >> /etc/iproute2/rt_tables
ip route add 107.23.35.233 dev eth0:3 src 107.23.35.233 table Twenty
ip route add default via whatever table Twenty

замените все что угодно шлюзом для этих двух адресов, я предполагаю, что это адреса "точка-точка".

Затем добавьте правила, которые отправляют трафик с вашего IP через правильную таблицу, и интерфейсы.

ip rule add from 107.23.130.53 table Ten
ip rule add from 107.23.35.233 table Twenty

Во всяком случае, нет недостатка в информации, доступной в Интернете, посмотрите политику маршрутизации

Другие вопросы по тегам