本帖最后由 新手529962 于 2023-8-23 22:11 编辑
1.背景
客户网络架构为多出口,一个出口设备为AC,一个出口设备为VPN,现需要在新增的VPN设备上将内网服务器端口映射至公网。 2.拓扑说明 客户侧拓扑如下图所示 3.故障情况描述 在VPN设备上做了DNAT,但是映射不生效,外网地址可达端口不通。 4.故障排查步骤与结果 (1)测试端口 telnet 10.174.10.43 8443 telnet 出口IP 8443 内网端口通,外网不通 (2)查看端口映射 检查配置没有问题 后台看端口映射规则已经存在 (3)抓包排查 在SSL上抓包查看: 在SSL设备LAN口抓包,数据已经从设备lan发出,但是没有收到回包,需要判断服务器是没收到还是收到了没回包。 (4)开直通 怀疑被内网的AF配置的策略拦截,在AF上开直通测试,测试后发现还是不通。 (5)多设备同时抓包 由于客户网络环境为多出口环境,核心交换机写了默认路由指向AC设备。此时怀疑数据包来回路径不一致,外网数据包从VPN设备上进,然后经过核心到达服务器,服务器的回包从AC设备这个外网出口出去。 所以现在进行SSL、AF、AC多设备同时抓包,在AF上抓包有来回数据包,在AC设备上抓包,数据回包给了另一个出口。 5.故障解决方案 在ssl设备上写地址转换,把外网访问内网服务器的源ip转换成设备lan口ip 此场景下,由于数据包从VPN设备的wan口进,地址转换后源地址还是外网地址,服务器回包给外网地址在核心上回包给AC设备。如果是内网地址发送请求,那么数据包来回路径就是一致的。所以做双向地址转换可以解决数据包来回不一致的问题。 而ssl是不支持双向地址转换的,原则上不支持此配置方案,但可以通过调整端口映射和代理上网实现这个效果。 后台执行iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -d 10.174.10.43/32 -o eth0 -j SNAT --to 10.174.9.11后问题解决 这个规则将源地址为0.0.0.0/0(互联网访问的所有地址),目标地址为10.174.10.43/32(内网服务器),出接口为eth0的数据包进行SNAT操作,将源地址修改为10.174.9.11(lan口),从而实现地址转换。 |