具有公共IP的新网卡没有互联网连接,而现有网卡工作正常

问题描述 投票:0回答:1

我的 Azure VM 上新添加的网络接口 (NIC) 遇到问题。虽然现有的 NIC 工作正常,但新的 NIC 无法连接到互联网。详情如下:

当前设置:

  • 使用“基本 SKU 动态”网络配置创建的虚拟机

  • 现有 NIC 具有多个公共 IP(基本 SKU,动态)并且工作正常

  • 可以成功使用

    curl --interface <existing interface ipv4 address> http://example.com

问题:

  1. 向虚拟机添加了具有新公共 IP 的新 NIC

    (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
    

    查看 #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     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. 现有 NIC 及其 IP 仍然可以正常工作

  4. 两个 NIC 共享相同的网络安全组 (NSG),该组自 VM 创建以来未曾修改过

预期行为: 两个 NIC,每个都有 225 个公共 IP(基本 SKU,动态),所有功能正常。

补充说明:

  • 由于成本限制不使用标准 SKU

  • NSG 设置是初始 VM 创建时的默认设置

是否有人遇到过类似的问题,或者可以提出解决方案,使新的网卡能够与互联网连接一起工作?任何见解将不胜感激...!!!

尝试的解决方案:

  1. 使用Azure的连接故障排除和支持+故障排除工具(无解决方案)

  2. 尝试使用不同的SKU创建IP,但由于SKU不匹配,虚拟机无法启动

  3. 创建了一个新的虚拟机并复制了设置,但遇到了同样的问题

azure networking azure-virtual-machine nic azure-public-ip
1个回答
0
投票

要解决 Azure VM 上新添加的网络接口无法连接到 Internet 而现有 NIC 工作正常的问题,请按照以下步骤设置网络配置并进行故障排除

创建虚拟网络和子网

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

enter image description here

创建网络安全组 (NSG)

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

enter image description here

向 NSG 添加 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 '*'

enter image description here

enter image description here

为 NIC 创建公共 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

enter image description here

enter image description here

创建网络接口并将其与公共 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

enter image description here

enter image description here

使用现有 NIC 创建虚拟机

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

enter image description here

现在你的主要问题是用新的 IP 更新虚拟机,它应该能够连接到网络。

所以首先释放旧的

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

enter image description here

然后添加新的 NIC 并重新启动虚拟机

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

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

enter image description here

enter image description here

如果完成到这里,那么你就完成了。现在您只需使用现有 NIC 的公共 IP 通过 SSH 访问虚拟机

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

enter image description here

验证路由规则

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

enter image description here

测试连接性

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

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.