我的 Azure VM 上新添加的网络接口 (NIC) 遇到问题。虽然现有的 NIC 工作正常,但新的 NIC 无法连接到互联网。详情如下:
当前设置:
使用“基本 SKU 动态”网络配置创建的虚拟机
现有 NIC 具有多个公共 IP(基本 SKU,动态)并且工作正常
可以成功使用
curl --interface <existing interface ipv4 address> http://example.com
问题:
向虚拟机添加了具有新公共 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
新网卡上的主要类型和次要类型 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
现有 NIC 及其 IP 仍然可以正常工作
两个 NIC 共享相同的网络安全组 (NSG),该组自 VM 创建以来未曾修改过
预期行为: 两个 NIC,每个都有 225 个公共 IP(基本 SKU,动态),所有功能正常。
补充说明:
由于成本限制不使用标准 SKU
NSG 设置是初始 VM 创建时的默认设置
是否有人遇到过类似的问题,或者可以提出解决方案,使新的网卡能够与互联网连接一起工作?任何见解将不胜感激...!!!
尝试的解决方案:
使用Azure的连接故障排除和支持+故障排除工具(无解决方案)
尝试使用不同的SKU创建IP,但由于SKU不匹配,虚拟机无法启动
创建了一个新的虚拟机并复制了设置,但遇到了同样的问题
要解决 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
创建网络安全组 (NSG)
az network nsg create \
--resource-group arkorg \
--name myNSG
向 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 '*'
为 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
创建网络接口并将其与公共 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
使用现有 NIC 创建虚拟机
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
然后添加新的 NIC 并重新启动虚拟机
az vm nic add \
--resource-group arkorg \
--vm-name myVM \
--nics myNewNIC
az vm start \
--resource-group arkorg \
--name myVM
如果完成到这里,那么你就完成了。现在您只需使用现有 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
验证路由规则
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