Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: ✔️ виртуальные машины Linux
Примечание.
CentOS, на который ссылается в этой статье, является дистрибутивом Linux и достигнет конца жизни (EOL). Думайте об использовании и планировании соответствующим образом. Дополнительные сведения см. в руководстве centOS End Of Life.
В этой статье описывается настройка нескольких виртуальных сетевых интерфейсов в виртуальных машинах Azure Linux, которые выполняют наиболее распространенные дистрибутивы Linux.
Итоги
Вы можете создать виртуальную машину Azure с несколькими сетевыми интерфейсами, подключенными к ней. Распространенный сценарий заключается в наличии разных подсетей для подключения внешнего интерфейса и серверной части или сети, выделенной для решения мониторинга или резервного копирования.
В этой статье приведена необходимая конфигурация для работы нескольких сетевых интерфейсов на виртуальной машине Linux Azure, основанной на следующем примере сценария:
- Виртуальная машина имеет два или более сетевых интерфейсов в одной подсети.
- Виртуальная машина имеет два или более сетевых интерфейсов в разных подсетях, но в одной и той же виртуальная сеть (виртуальной сети).
Дополнительные сведения см. на следующих снимках экрана:
- Виртуальная машина с 2 сетевыми адаптерами в одной подсети
- Виртуальная машина с 2 сетевыми адаптерами в разных подсетях
В каждом сценарии подключение можно проверить с любой виртуальной машины в одной виртуальной сети.
Внимание
Этот же процесс также можно выполнить на виртуальных машинах с более чем двумя сетевыми адаптерами.
Настройка гостевой ОС для нескольких сетевых интерфейсов
При добавлении нескольких сетевых интерфейсов на виртуальную машину Linux необходимо создать правила маршрутизации. Эти правила позволяют виртуальной машине отправлять и получать трафик, принадлежащий определенному сетевому интерфейсу. В противном случае трафик не может быть обработан правильно. Например, трафик, принадлежащий eth1 , не может быть обработан правильно определенным маршрутом по умолчанию.
В следующих разделах приведена необходимая конфигурация для работы двух сетевых интерфейсов на виртуальных машинах Linux, которые выполняют наиболее распространенные дистрибутивы Linux.
Примечание.
Выполните все команды в следующих разделах с помощью привилегий root (переключившись на корень или с помощью служебной sudo
программы команд).
В каждом разделе предполагается, что виртуальная машина имеет два сетевых интерфейса с любым из следующих параметров:
Маршрутизация (выходные
sudo ip route show
данные команды):Две сетевые карты в одной подсети:
default via 10.0.1.1 dev eth0 proto static metric 100 10.0.1.0/24 dev eth0 proto kernel scope link src 10.0.1.4 metric 100 10.0.1.0/24 dev eth1 proto kernel scope link src 10.0.1.5 metric 101 168.63.129.16 via 10.0.1.1 dev eth0 proto dhcp metric 100 169.254.169.254 via 10.0.1.1 dev eth0 proto dhcp metric 100
Две сетевые карты в разных подсетях, но в одной виртуальной сети:
default via 10.0.1.1 dev eth0 proto static metric 100 10.0.1.0/24 dev eth0 proto kernel scope link src 10.0.1.4 metric 100 10.0.2.0/24 dev eth1 proto kernel scope link src 10.0.2.5 metric 101 168.63.129.16 via 10.0.1.1 dev eth0 proto dhcp metric 100 169.254.169.254 via 10.0.1.1 dev eth0 proto dhcp metric 100
Интерфейсы (выходные данные
sudo ip address show
команды):Две сетевые карты в одной подсети:
lo: inet 127.0.0.1/8 scope host lo eth0: inet 10.0.1.4/24 brd 10.0.1.255 scope global eth0 eth1: inet 10.0.1.5/24 brd 10.0.1.255 scope global eth1
Две сетевые карты в разных подсетях, но в одной виртуальной сети:
lo: inet 127.0.0.1/8 scope host lo eth0: inet 10.0.1.4/24 brd 10.0.1.255 scope global eth0 eth1: inet 10.0.2.5/24 brd 10.0.2.255 scope global eth1
Добавьте две таблицы маршрутизации в файл /etc/iproute2/rt_tables , выполнив следующие команды (для каждой сетевой карты требуется одна запись):
sudo echo "200 eth0-rt" >> /etc/iproute2/rt_tables sudo echo "201 eth1-rt" >> /etc/iproute2/rt_tables
Если к виртуальной машине подключены дополнительные сетевые интерфейсы, добавьте дополнительные таблицы маршрутизации (например, 202 eth2-rt, 203 eth3-rt и т. д.).
Убедитесь, что файл конфигурации существует для каждого сетевого интерфейса в каталоге /etc/sysconfig/network-scripts/ . Вы можете создать файлы конфигурации сетевого интерфейса на основе файла конфигурации ifcfg-eth0 (изменить
DEVICE
строку и удалитьDHCP_HOSTNAME
HWADDR
строки из нового файла). Для этого введите указанные ниже команды:sudo cat /etc/sysconfig/network-scripts/ifcfg-eth0 > /etc/sysconfig/network-scripts/ifcfg-eth1 sudo sed -i 's/DEVICE=eth0/DEVICE=eth1/' /etc/sysconfig/network-scripts/ifcfg-eth1 sudo sed -i '/DHCP_HOSTNAME/d' /etc/sysconfig/network-scripts/ifcfg-eth1 sudo sed -i '/HWADDR/d' /etc/sysconfig/network-scripts/ifcfg-eth1
Чтобы сделать изменение постоянным и примененным во время активации сетевого стека, измените файлы /etc/sysconfig/network-scripts/ifcfg-eth0 и /etc/sysconfig/network-scripts/ifcfg-eth1 (ifcfg-eth2, ifcfg-eth3 и т. д., если виртуальная машина имеет более двух сетевых интерфейсов) и измените значение
NM_CONTROLLED
наyes
no
. Для этого введите указанные ниже команды:sudo cp -rp /etc/sysconfig/network-scripts/ifcfg-eth0 /tmp/ifcfg-eth0.bkp sudo cp -rp /etc/sysconfig/network-scripts/ifcfg-eth1 /tmp/ifcfg-eth1.bkp sudo sed -i 's/NM_CONTROLLED=yes/NM_CONTROLLED=no/' /etc/sysconfig/network-scripts/ifcfg-eth0 sudo sed -i 's/NM_CONTROLLED=yes/NM_CONTROLLED=no/' /etc/sysconfig/network-scripts/ifcfg-eth1
Примечание.
Убедитесь, что
NM_CONTROLLED=no
строка добавляется в файлы /etc/sysconfig/network-scripts/ifcfg-eth0 и /etc/sysconfig/network-scripts/ifcfg-eth1 с помощьюcat /etc/sysconfig/network-scripts/ifcfg-eth*
команды. Если строка отсутствует в файлах, добавьте ее вручную с помощьюsudo echo "NM_CONTROLLED=no" >> /etc/sysconfig/network-scripts/ifcfg-eth0
команд иsudo echo "NM_CONTROLLED=no" >> /etc/sysconfig/network-scripts/ifcfg-eth1
команд.После изменения этой конфигурации перезапустите сетевые службы, чтобы применить изменения, выполнив следующую команду:
sudo systemctl restart network
Создайте соответствующие файлы правил и маршрутов с помощью любого текстового редактора (в следующих примерах используется редактор vi), а также добавьте соответствующие правила и маршруты в каждый файл. Выполните следующие действия, чтобы создать один набор файлов rule-eth# и route-eth# для каждого сетевого интерфейса. Замените IP-адрес и сведения подсети соответствующим образом на каждом шаге. Если у вас есть больше сетевых интерфейсов, создайте один и тот же набор файлов rule-eth# и route-eth# для каждого интерфейса с помощью соответствующих IP-адресов, сети и шлюза.
Создайте правила и маршруты для eth0:
Чтобы создать файл правила для eth0, откройте файл /etc/sysconfig/network-scripts/rule-eth0.
sudo vi /etc/sysconfig/network-scripts/rule-eth0
Добавьте следующее содержимое в файл правила. Замените IP-адрес соответствующим образом, убедитесь, что в конфигурации указан IPv4-адрес и сохраните 32-разрядное значение:
from 10.0.1.4/32 table eth0-rt to 10.0.1.4/32 table eth0-rt
Чтобы создать файл маршрута для eth0, откройте файл /etc/sysconfig/network-scripts/route-eth0.
sudo vi /etc/sysconfig/network-scripts/route-eth0
Добавьте следующее содержимое в файл маршрута. Замените значения сети и шлюза соответствующим образом.
10.0.1.0/24 dev eth0 table eth0-rt default via 10.0.1.1 dev eth0 table eth0-rt
Создайте правила и маршруты для eth1:
Чтобы создать файл правила для eth1, откройте файл /etc/sysconfig/network-scripts/rule-eth1.
sudo vi /etc/sysconfig/network-scripts/rule-eth1
Добавьте следующее содержимое в файл правила. Замените IP-адрес соответствующим образом, убедитесь, что в команде указан IPv4-адрес и сохраните 32-разрядное значение.
Две сетевые карты в одной подсети:
from 10.0.1.5/32 table eth1-rt to 10.0.1.5/32 table eth1-rt
Две сетевые карты в разных подсетях, но в одной виртуальной сети:
from 10.0.2.5/32 table eth1-rt to 10.0.2.5/32 table eth1-rt
Чтобы создать файл маршрута для eth1, откройте файл /etc/sysconfig/network-scripts/route-eth1.
sudo vi /etc/sysconfig/network-scripts/route-eth1
Добавьте следующее содержимое в файл маршрута. Замените значения сети и шлюза соответствующим образом.
Две сетевые карты в одной подсети:
10.0.1.0/24 dev eth1 table eth1-rt default via 10.0.1.1 dev eth1 table eth1-rt
Две сетевые карты в разных подсетях, но в одной виртуальной сети:
10.0.2.0/24 dev eth1 table eth1-rt default via 10.0.2.1 dev eth1 table eth1-rt
Чтобы применить изменения, выполните следующую команду, чтобы перезапустить сетевую службу:
sudo systemctl restart network
Теперь правила маршрутизации правильно заданы, а подключение должно работать из любого сетевого интерфейса. Вы можете проверить подключение с помощью Secure Shell (SSH) или проверки связи обоих IP-адресов из виртуальной машины в одной виртуальной сети.
Убедитесь, что текущие маршруты и правила загружаются с помощью следующих команд:
sudo ip route show sudo ip rule show
Внимание
Если у вас по-прежнему возникли проблемы, связанные со вторым сетевым адаптером, перезапустите виртуальную машину с помощью sudo reboot
команды, повторите шаг 7 и снова проверьте подключение.
Свяжитесь с нами для получения помощи
Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.