Новая сетевая карта с общедоступным IP-адресом не имеет подключения к Интернету, а существующая сетевая карта работает нормально

У меня возникла проблема с недавно добавленным сетевым интерфейсом (NIC) на моей виртуальной машине Azure. Хотя существующая сетевая карта работает отлично, новая не может подключиться к Интернету. Вот подробности:

Текущая настройка:

  • Виртуальная машина создана с использованием сетевой конфигурации «Basic SKU Dynamic».

  • Существующий сетевой адаптер имеет несколько общедоступных IP-адресов (базовый SKU, динамический) и работает нормально.

  • Можно с успехом использовать curl --interface <existing interface ipv4 address> http://example.com

Проблема:

  1. Добавлен новый сетевой адаптер с новым общедоступным IP-адресом в виртуальную машину.

    (eth1 is a newly added nic.)
    azureuser@instanceXX:~$ ip addr show
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 60:45:bd:48:e7:f1 brd ff:ff:ff:ff:ff:ff
        inet 10.0.0.5/24 brd 10.0.0.255 scope global eth0
           valid_lft forever preferred_lft forever
     # ~~~~skipping the middle~~~~ 
        inet6 fe80::6245:bdff:fe48:e7f1/64 scope link
           valid_lft forever preferred_lft forever
    3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 7c:1e:52:2b:a9:ff brd ff:ff:ff:ff:ff:ff
        inet 10.0.0.104/24 metric 200 brd 10.0.0.255 scope global eth1
           valid_lft forever preferred_lft forever
        inet6 fe80::7e1e:52ff:fe2b:a9ff/64 scope link
           valid_lft forever preferred_lft forever
    4: enP12745s1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master eth0 state UP group default qlen 1000
        link/ether 60:45:bd:48:e7:f1 brd ff:ff:ff:ff:ff:ff
        altname enP12745p0s2
        inet6 fe80::6245:bdff:fe48:e7f1/64 scope link
           valid_lft forever preferred_lft forever
    

    Глядя на # маршрут -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     200    0        0 eth1
    10.0.0.1        0.0.0.0         255.255.255.255 UH    100    0        0 eth0
    168.63.129.16   10.0.0.1        255.255.255.255 UGH   100    0        0 eth0
    168.63.129.16   0.0.0.0         255.255.255.255 UH    200    0        0 eth1
    169.254.169.254 10.0.0.1        255.255.255.255 UGH   100    0        0 eth0
    
  2. IP-адреса первичного и вторичного типа на новом сетевом адаптере не могут подключиться:

    azureuser@instanceXX:~$ curl --interface 10.0.0.104 http://example.com
    curl: (28) Failed to connect to example.com port 80 after 134224 ms: Connection timed out
    
    
  3. Существующий сетевой адаптер и его IP-адреса по-прежнему работают правильно.

  4. Оба сетевых адаптера используют одну и ту же группу сетевой безопасности (NSG), которая не менялась с момента создания виртуальной машины.

Ожидаемое поведение: два сетевых адаптера, каждый с 225 общедоступными IP-адресами (базовый SKU, динамический), все работают нормально.

Дополнительные замечания:

  • Не используется стандартный номер SKU из-за ограничений по стоимости.

  • Настройки NSG заданы по умолчанию при первоначальном создании виртуальной машины.

Кто-нибудь сталкивался с подобной проблемой или может предложить решение, позволяющее новому сетевому адаптеру работать с подключением к Интернету? Любая информация будет принята с благодарностью...!!!

Попытки решения:

  1. Использовались инструменты устранения неполадок с подключением Azure и поддержка + устранение неполадок (без решения).

  2. Пытался создать IP-адреса с разными SKU, но виртуальная машина не загрузилась из-за несоответствия SKU.

  3. Создал новую виртуальную машину и реплицировал настройку, но столкнулся с той же проблемой.

Решено: stackoverflow.com/questions/59112745/…

NO2 SIIZEXL 12.07.2024 08:31
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
1
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы решить проблему, связанную с тем, что недавно добавленный сетевой интерфейс на вашей виртуальной машине Azure не может подключиться к Интернету, в то время как существующий сетевой адаптер работает нормально, выполните следующие действия:

Создайте виртуальную сеть и подсеть

az network vnet create \
  --resource-group arkorg \
  --name myVNet \
  --address-prefix 10.0.0.0/16 \
  --subnet-name mySubnet \
  --subnet-prefix 10.0.0.0/24

Создайте группу сетевой безопасности (NSG)

az network nsg create \
  --resource-group arkorg \
  --name myNSG

Добавьте правила для входящего трафика в группу безопасности сети для HTTP и SSH.

az network nsg rule create \
  --resource-group arkorg \
  --nsg-name myNSG \
  --name AllowInternetInBound \
  --priority 1000 \
  --direction Inbound \
  --access Allow \
  --protocol Tcp \
  --destination-port-range 80 \
  --source-address-prefix Internet \
  --destination-address-prefix '*'

az network nsg rule create \
  --resource-group arkorg \
  --nsg-name myNSG \
  --name AllowSSH \
  --priority 1100 \
  --direction Inbound \
  --access Allow \
  --protocol Tcp \
  --destination-port-range 22 \
  --source-address-prefix Internet \
  --destination-address-prefix '*'

Создайте общедоступные IP-адреса для сетевых карт.

az network public-ip create \
  --resource-group arkorg \
  --name myExistingPublicIP \
  --sku Basic \
  --allocation-method Dynamic

az network public-ip create \
  --resource-group arkorg \
  --name myNewPublicIP \
  --sku Basic \
  --allocation-method Dynamic

Создайте сетевые интерфейсы и свяжите их с общедоступными IP-адресами.

az network nic create \
  --resource-group arkorg \
  --name myExistingNIC \
  --vnet-name myVNet \
  --subnet mySubnet \
  --network-security-group myNSG \
  --public-ip-address myExistingPublicIP

az network nic create \
  --resource-group arkorg \
  --name myNewNIC \
  --vnet-name myVNet \
  --subnet mySubnet \
  --network-security-group myNSG \
  --public-ip-address myNewPublicIP

Создайте виртуальную машину с существующим сетевым адаптером.

az vm create \
  --resource-group arkorg \
  --name myVM \
  --nics myExistingNIC \
  --image Ubuntu2204 \
  --admin-username azureuser \
  --generate-ssh-keys

Теперь возникает ваша основная проблема: обновить виртуальную машину новым IP-адресом, и она сможет подключиться к сети.

Итак, сначала освободите старый

az vm deallocate \
  --resource-group arkorg \
  --name myVM

После этого добавьте новый сетевой адаптер и перезапустите виртуальную машину.

az vm nic add \
  --resource-group arkorg \
  --vm-name myVM \
  --nics myNewNIC

az vm start \
  --resource-group arkorg \
  --name myVM

Если вы дочитали до сюда, то все в порядке. Теперь вам просто нужно подключиться к виртуальной машине по SSH, используя общедоступный IP-адрес существующего сетевого адаптера.

ssh azureuser@<existing-public-ip>

Выполните следующие команды, чтобы настроить маршрутизацию на основе источника:

sudo su
echo "200 eth0" >> /etc/iproute2/rt_tables
echo "201 eth1" >> /etc/iproute2/rt_tables
ip rule add from 10.0.0.4/32 table eth0
ip rule add from 10.0.0.5/32 table eth1
ip route add 10.0.0.0/24 dev eth0 src 10.0.0.4 table eth0
ip route add default via 10.0.0.1 dev eth0 table eth0
ip route add 10.0.0.0/24 dev eth1 src 10.0.0.5 table eth1
ip route add default via 10.0.0.1 dev eth1 table eth1

Проверьте правила маршрутизации

ip rule show
ip route show table eth0
ip route show table eth1

Тестирование подключения

curl --interface 10.0.0.4 http://example.com
curl --interface 10.0.0.5 http://example.com

Большое спасибо за подробный и полезный ответ! Я очень ценю время и усилия, которые вы вложили в объяснение этого. Ваше решение сработало отлично и помогло мне лучше понять концепцию. Microsoft должна заплатить вам...! :)

NO2 SIIZEXL 12.07.2024 08:46

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