Azure VM新增带公网IP的NIC无法联网,原有NIC正常
Azure多NIC公网连接故障排查与解决方案
当前配置
- VM采用「Basic SKU dynamic」网络配置创建
- 原有NIC配置多个动态Basic SKU公网IP,运行正常
- 可通过
curl --interface <existing interface ipv4 address> http://example.com成功访问互联网
问题描述
- 新增带公网IP的NIC(eth1为新增网卡),执行
ip addr show输出:
(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
- 新NIC上的主、次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),该NSG自VM创建后未修改
预期行为
- 两块NIC各配置225个动态Basic SKU公网IP,均能正常联网
附加说明
- 因成本限制未使用Standard SKU
- NSG为VM创建时的默认配置
已尝试方案
- 使用Azure连接排查及支持工具,未解决问题
- 尝试创建不同SKU的IP,因SKU不匹配导致VM无法启动
- 创建新VM并复制配置,仍遇到相同问题
解决方案建议
1. 配置源IP策略路由
Basic SKU环境下,默认仅主NIC的主IP会被自动配置SNAT和默认路由,新增NIC的流量需要手动配置策略路由确保回程路径正确:
- 添加自定义路由表标识:
echo "200 eth1rt" >> /etc/iproute2/rt_tables
- 为新NIC的源IP绑定专属路由规则:
ip rule add from 10.0.0.104/32 table eth1rt
- 为自定义路由表添加默认网关:
ip route add default via 10.0.0.1 dev eth1 table eth1rt
- 永久保存规则(以Ubuntu为例),在
/etc/network/interfaces.d/eth1.cfg中添加:
post-up ip rule add from 10.0.0.104/32 table eth1rt post-up ip route add default via 10.0.0.1 dev eth1 table eth1rt pre-down ip rule del from 10.0.0.104/32 table eth1rt pre-down ip route del default via 10.0.0.1 dev eth1 table eth1rt
如果有多个次IP,需要为每个IP重复添加对应的规则和路由。
2. 验证Azure端公网IP关联状态
确认新NIC的公网IP已正确绑定且状态正常:
az network nic show --name <eth1-nic-name> --resource-group <resource-group-name> --query 'ipConfigurations[].publicIpAddress'
输出应包含公网IP的资源ID,且公网IP的SKU为Basic、状态为Enabled。
3. 检查NSG出站规则
虽然NSG是默认配置,但需确认出站规则允许所有流量(默认规则AllowInternetOutBound优先级1000)未被修改或覆盖,确保新NIC的出站流量能正常通过。
内容的提问来源于stack exchange,提问作者NO2 SIIZEXL
相关产品推荐
相关产品推荐

