内网终端通过公网 IP 访问内网服务器(NAT hairpin),时通时不通。
故障发生时【所有内网网段同时不能访问】,过一段时间后自行恢复,有时候是几十分钟,有时候是一天。
同一时刻:外网访问正常、内网直连服务器正常、其他端口映射正常。
【已排查内容】1. hairpin 配置正常。display nat all 输出:
NAT hairpinning:
Totally 1 interfaces enabled with NAT hairpinning.
Interface: GigabitEthernet1/0/2
Config status: Active
NAT mapping behavior:
Mapping mode : Endpoint-Independent
Config status: Active2. ACL 安全策略、ARP 表项均正常
3. 资源正常:内存使用率 83%、CPU 25~30%
型号:H3C SecPath F1010(8GE,内存 1008MB)
版本:Comware 7.1.064, Release 9660P57
外网口 GE1/0/1:x.x.x.x(公网)
内网口 GE1/0/2:192.168.5.1/24
NAT server:公网 x.x.x.x:7071 → 192.168.5.190:8081
已做的排除实验:1、同服务器 8181 映射同时段测试 正常 非服务器/服务问题 2、指向 192.168.5.78 的 4 条映射 正常 非整机 NAT 故障 3、新建 7072 → 192.168.5.190:8081 秒通 新端口映射正常 4、删除并重建 7071 规则 仍不通 坏状态跟随端口号,配置层清不掉 5、服务器本机自访 公网IP:7071 / :8181 7071 不通、8181 通 与源地址无关 6、客户端压测 120 并发 / 2140 新建连接每秒 全部通过 无并发/速率限制 7、服务器 netstat -s / conntrack 无 ListenDrops,conntrack 远未满 服务器侧无瓶颈 8、ACL 3011 / 安全策略 / ARP / ping 服务器 全部正常 策略与二层三层正常 9、display nat statistics Total ~13.7k / EIM ~10k,表可增可减 非会话表撑满 我的猜测 1. NAT 引擎针对个别运行时间较长的 nat server 端口映射进入某种坏死状态(疑似僵尸会话残留且无法被删除重建规则清除),属于固件级 bug 2. hairpin 场景下所有内网用户的源地址被折叠为同一公网 IP,长运行时间累积后触发概率升高
配置没问题的话可能得抓包分析了
客户端侧(内网 21 网段,Wireshark):故障时发往 X.X.X.X:7071 的全部为 SYN 重传,无任何 SYN-ACK 服务器侧(192.168.5.190,tcpdump): - 故障时:零收到任何经 7071 映射进来的 SYN(防火墙侧丢包,未转发) - 正常时:收到源地址为 X.X.X.X(hairpin 源折叠,符合预期)的 SYN,三次握手正常
客户端侧(内网 21 网段,Wireshark):故障时发往 X.X.X.X:7071 的全部为 SYN 重传,无任何 SYN-ACK 服务器侧(192.168.5.190,tcpdump): - 故障时:零收到任何经 7071 映射进来的 SYN(防火墙侧丢包,未转发) - 正常时:收到源地址为 X.X.X.X(hairpin 源折叠,符合预期)的 SYN,三次握手正常
这种应该是安全策略的问题,没有完全放通。
我之前测试过l2tp,电脑链接上后,ping会出现丢包。安全策略全放开之后,丢包也没了,延迟也小了。
后面通过dis 查看会话,把另外的一部分安全策略补上就好了。
安全策略无针对该流量的限制,1. 故障时只有这一个端口映射不通: - 同一公网 IP 的其他端口映射(如 8181)正常 - 外网用户访问同一端口正常 - 内网直连服务器 IP:8081 正常 2. 有时可自行恢复(观察到约 17 秒的恢复窗口),有时故障持续一天不自愈
你遇到的这个“所有内网网段同时中断,且能自行恢复”的现象,结合你已排查的结果,问题根源很可能不在 hairpin 配置本身,而在于设备的资源状态或配置冲突。你提供的内存使用率 83% 是一个关键突破口。
你设备的内存(1008MB)使用率达到 83%,这是一个危险信号。H3C 官方建议内存使用率不高于 70%,持续高于 70% 就需要高度关注。
在内存资源紧张时,防火墙的会话表(Session Table) 会变得非常脆弱:
新会话无法建立:内存不足时,设备可能无法为新的 hairpin 访问创建必要的 NAT 会话,导致所有内网用户的访问请求被丢弃。
老会话提前老化或表项错乱:已有的会话可能因内存压力被异常清除或处理错误,造成连接中断。而故障的“自行恢复”,很可能是因为某些占用内存的异常会话或进程被系统回收,暂时释放了资源。
下一步行动:
检查会话表状态:在故障发生时(或平时),执行 display session statistics,查看当前会话总数是否接近设备规格上限。
排查异常会话:执行 display session table verbose,检查是否存在大量半连接(状态为SYN_RCVD) 或永不老化的长连接。误配的会话长连接(session persistent aging-time 0)会导致会话永不释放,持续消耗内存直至耗尽。
定位内存消耗进程:执行 display memory 和 display process memory,确认是哪些进程(如 dpid、iked 等)占用了大量内存。如果开启了 DPI(入侵防御、URL过滤等)功能,可以尝试临时关闭以观察内存是否下降,因为低端防火墙在开启DPI后内存容易飙升。
如果内存问题排除后故障依旧,请检查以下配置冲突点。
1. 全局NAT与接口NAT冲突
这是一个已知的、会导致 hairpin 间歇性失效的经典问题。当防火墙同时配置了全局NAT(nat global-policy) 和接口NAT(如 nat hairpin enable) 时,特定功能(如DPI)的开启可能会改变报文标记,导致全局NAT意外生效,从而破坏 hairpin 的处理流程。
核查方法:执行 display current-configuration | include global-policy,确认是否存在全局NAT策略。如果有,建议移除全局NAT,统一使用接口NAT来实现所有NAT功能。
2. 缺少 nat hairpin server 配置
如果内网终端与内网服务器处于同一网段(例如,终端 192.168.5.100 访问服务器 192.168.5.190),仅配置 nat hairpin enable 可能不够。TCP 三次握手的 SYN-ACK 包可能因路由问题无法正确返回,导致连接时好时坏。
核查方法:确认内网接口下是否配置了 nat hairpin server。如果没有,可以尝试添加此配置。
3. 堆叠环境下的跨框NAT问题(如果适用)
如果你的 F1010 是两台设备堆叠部署的,这是一个已知问题。出问题时,如果只开启了标准的会话同步(session synchronization enable),跨框的NAT流量可能无法正确同步,导致部分访问失败。
解决方案:启用非对称会话同步:session synchronization enable asymmetric。
nat hairpin server怎么配置
nat hairpin server怎么配置
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
已做的排除实验:1、同服务器 8181 映射同时段测试 正常 非服务器/服务问题 2、指向 192.168.5.78 的 4 条映射 正常 非整机 NAT 故障 3、新建 7072 → 192.168.5.190:8081 秒通 新端口映射正常 4、删除并重建 7071 规则 仍不通 坏状态跟随端口号,配置层清不掉 5、服务器本机自访 公网IP:7071 / :8181 7071 不通、8181 通 与源地址无关 6、客户端压测 120 并发 / 2140 新建连接每秒 全部通过 无并发/速率限制 7、服务器 netstat -s / conntrack 无 ListenDrops,conntrack 远未满 服务器侧无瓶颈 8、ACL 3011 / 安全策略 / ARP / ping 服务器 全部正常 策略与二层三层正常 9、display nat statistics Total ~13.7k / EIM ~10k,表可增可减 非会话表撑满 我的猜测 1. NAT 引擎针对个别运行时间较长的 nat server 端口映射进入某种坏死状态(疑似僵尸会话残留且无法被删除重建规则清除),属于固件级 bug 2. hairpin 场景下所有内网用户的源地址被折叠为同一公网 IP,长运行时间累积后触发概率升高