Доступ к Интернету со вторым (или несколькими) сетевыми адаптерами в Azure

У меня есть виртуальная машина в Azure с Ubuntu 19.04 и 4 сетевых адаптера, к каждому из которых привязан публичный IP-адрес, например, это второй сетевой адаптер:

введите здесь описание изображения

Как видите, у него публичный IP 191.234.186.19.

Моя цель - иметь доступ к Интернету с каждой сетевой карты с другим IP-адресом, но внутри виртуальной машины я могу получить к ней доступ только через первую сеть eth0.

Глядя на # route -n, я получаю этот вывод:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.1        0.0.0.0         UG    100    0        0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth2
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth3
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth1
168.63.129.16   10.0.0.1        255.255.255.255 UGH   100    0        0 eth0
169.254.169.254 10.0.0.1        255.255.255.255 UGH   100    0        0 eth0

Я попытался добавить маршруты для других сетевых карт с помощью следующих команд:

sudo ip route add default via 10.0.0.1 dev eth1 metric 101
sudo ip route add default via 10.0.0.1 dev eth2 metric 102
sudo ip route add default via 10.0.0.1 dev eth3 metric 103

Но опять же, я все еще не могу подключиться к Интернету с этими сетевыми картами, только eth0.

Я что-то упускаю? Должен ли я изменить/настроить что-либо еще, чтобы это работало?

Для полноты я использую эту команду для проверки подключения:

curl --interface eth1 api.ipify.org?format=json -w "\n"

И моя виртуальная машина такая же, как в этой статье: статья


person Sassa    schedule 30.11.2019    source источник


Ответы (2)


Я подозреваю, что вам может понадобиться 1) определить новые таблицы маршрутизации для вашего 2-го, 3-го и 4-го интерфейса, 2) добавить маршруты по умолчанию в эти таблицы 3) и определить правила, чтобы обратные пакеты всегда направлялись обратно в тот же интерфейс, что и исходные пакеты. отправлено из.

Для справки есть несколько примеров (например, это и это).

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

person timur    schedule 07.12.2019

Похоже, что только eth0 имеет шлюз по умолчанию. Вы не можете общаться за пределами локальной сети без шлюза по умолчанию

person Shiraz Bhaiji    schedule 30.11.2019
comment
Я просмотрел эту статью docs.microsoft.com/en-us/azure/virtual-machines/windows/, который, по-видимому, объясняет, как добавить новый маршрут к вторичному сетевому адаптеру. Поскольку я использую Linux, я перевел их руководство на эту команду: sudo route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.0.0.1 metric 200 dev eth1, которая добавила эту строку в route -n: 0.0.0.0 10.0.0.1 0.0.0.0 UG 200 0 0 eth1. Но я все еще не могу подключиться к curl. Знаете ли вы, как я могу добавить шлюз по умолчанию к другим моим сетевым адаптерам? - person Sassa; 30.11.2019
comment
@Sassa Azure содержит документацию по Linux здесь docs.microsoft.com/en-us/azure/virtual-machines/linux/ на всякий случай. Хорошо, это не объясняет, как добавлять маршруты. - person Ross Ivantsiv; 03.11.2020