Azure环境下配置Linux路由实现NVA功能并解决hub-spoke流量转发故障
Azure Hub-Spoke拓扑NVA流量转发失效排查方案
- 优先检查VNet对等连接配置
- 确认hub与spoke1、hub与spoke2的双向对等连接状态为已连接,且两个对等连接均开启了允许转发的流量选项,未开启该选项时Azure会默认丢弃从NVA转发到spoke的跨对等连接流量
- 核查用户自定义路由(UDR)配置
- 确认两个spoke的业务子网均已关联对应UDR,且UDR中目标地址前缀为对端spoke的完整/16地址段(而非仅/24段),下一跳类型为虚拟设备、地址为
10.0.0.5 - 检查hub子网的有效路由,确认系统已自动生成到
10.1.0.0/16、10.2.0.0/16的路由,下一跳为对应VNet对等连接
- 确认两个spoke的业务子网均已关联对应UDR,且UDR中目标地址前缀为对端spoke的完整/16地址段(而非仅/24段),下一跳类型为虚拟设备、地址为
- 排查Linux NVA侧配置问题
- 确认IP转发永久生效:临时执行
echo 1 > /proc/sys/net/ipv4/ip_forward重启后会失效,需修改/etc/sysctl.conf文件,添加net.ipv4.ip_forward = 1配置,执行sysctl -p后永久生效 - 修正NVA路由规则:当前路由仅匹配/24段地址,若流量涉及/16段内其他地址会匹配失败,执行以下命令替换原有路由:
ip route del 10.1.0.0/24 via 10.0.0.1 dev eth0 ip route del 10.2.0.0/24 via 10.0.0.1 dev eth0 ip route add 10.1.0.0/16 via 10.0.0.1 dev eth0 ip route add 10.2.0.0/16 via 10.0.0.1 dev eth0 - 检查iptables转发规则:执行
iptables -L FORWARD查看转发链规则,若默认策略为DROP或存在拦截规则,执行命令放行跨spoke流量:iptables -A FORWARD -s 10.1.0.0/16 -d 10.2.0.0/16 -j ACCEPT iptables -A FORWARD -s 10.2.0.0/16 -d 10.1.0.0/16 -j ACCEPT - 抓包验证流量走向:在NVA上执行
tcpdump -i eth0 net 10.1.0.0/16 or net 10.2.0.0/16,确认spoke的流量已进入NVA,且NVA已将流量转发到hub网关10.0.0.1
- 确认IP转发永久生效:临时执行
- 检查NSG配置
- 确认spoke子网、hub子网、NVA网卡关联的NSG均已放行
10.1.0.0/16与10.2.0.0/16之间的入站、出站流量,无端口或协议拦截
- 确认spoke子网、hub子网、NVA网卡关联的NSG均已放行
内容的提问来源于stack exchange,提问作者Olivier
相关产品推荐
相关产品推荐

