• 全部
  • 经验案例
  • 典型配置
  • 技术公告
  • FAQ
  • 漏洞说明
  • 全部
  • 全部
  • 大数据引擎
  • 知了引擎
产品线
搜索
取消
案例类型
发布者
是否解决
是否官方
时间
搜索引擎
匹配模式
高级搜索

做了公网端口映射后,内网主机反而访问不了?——NAT 回流(NAT hairpin)原理与解决案例

  • 0关注
  • 0收藏 96浏览
粉丝:1人 关注:0人

组网及说明

问题描述

某单位在出口路由器上做了端口映射(虚拟服务器),把公网地址 123.123.123.123 的 TCP 8080 映射到内网服务器 192.168.1.100 的 TCP 80,并用域名 ***.*** 解析到该公网地址。

  • 外网用户:访问 http://***.***:8080 一切正常;
  • 内网用户:访问同一个网址(即通过公网 IP 访问),页面打不开或一直转圈超时;
  • 内网用户直接访问服务器私网地址 http://192.168.1.100(80 端口)又是正常的。

很多人第一反应是"映射没配好",但外网能访问已经说明映射本身是好的。这是一个非常典型的 NAT 回流(NAT hairpin ) 问题。

过程分析

故障原理:为什么"外网通、内网不通"?

报文交互过程(关键)

内网 PC(192.168.1.50)访问公网地址 123.123.123.123:8080 时:

  1. PC → 路由器:目的地址是公网 IP,不在本网段,PC 把报文交给网关。 报文:源 192.168.1.50 → 目的 123.123.123.123:8080
  2. 路由器做目的地址转换(DNAT):命中端口映射规则,把目的地址和端口改成服务器私网地址后从 LAN 口转发给服务器。 报文:源 192.168.1.50 → 目的 192.168.1.100:80 ⚠️ 注意:此时源地址没有被转换,仍然是 PC 的私网地址。
  3. 服务器回包"抄近路":服务器看到请求来自 192.168.1.50——和自己同一网段,于是回包不发给网关,直接二层送达 PC。 报文:源 192.168.1.100:80 → 目的 192.168.1.50
  4. PC 拒收:PC 发出的 SYN 目的是 123.123.123.123:8080,等来的 SYN+ACK 源地址/端口却是 192.168.1.100:80,四元组对不上,PC 认为这不是自己那条连接的回包,直接丢弃(或回 RST)。

 

三次握手永远建立不起来,表现就是"一直转圈、连接超时"。整个过程形成了一个不对称的"三角形"路径:去程绕网关、回程走直连。

注意:即使 PC 与服务器不在同一网段(中间隔着三层核心交换机),只要服务器回包由核心直接路由回 PC、未经过出口路由器,问题完全相同

 

解决方法

方案一:开启 NAT 回流 / 双向端口映射生效(需出口路由器支持)

原理:在做 DNAT 的同时,把内网访问者的源地址也转换成路由器 LAN 口地址,即再做一次 SNAT。这样服务器看到的请求来自网关 192.168.1.1,回包必然交给网关,由网关沿原路返回,四元组恢复一致。

转换后的报文路径:

 

配置方法(以 Web 管理界面为例):

  1. 进入「网络管理→NAT配置→端口映射」;
  2. 启用NAT hairping功能,设置当前NAT hairping生效接口;

命令行设备(MSR 等 Comware 网关)可在内网接口上同时配置 nat outbound + nat server,即同一接口上既做源转换又做服务器映射,达到相同效果。

若路由器不支持端口回流,可考虑以下方案实现

 

方案二:内网 DNS 分离解析

原理:不让内网流量绕出去再绕回来,而是让内网用户解析域名时直接得到服务器的私网地址。

  1. 在内网 DNS 服务器(或路由器自带的 DNS)上添加静态记录: ***.*** → 192.168.1.100;
  2. 内网终端 DNS 指向内网 DNS 服务器;
  3. 外网用户仍通过公网 DNS 解析到 123.123.123.123,互不影响。

该案例对您是否有帮助:

您的评价:1

若您有关于案例的建议,请反馈:

0 个评论

该案例暂时没有网友评论

编辑评论

举报

×

侵犯我的权益 >
对根叔知了社区有害的内容 >
辱骂、歧视、挑衅等(不友善)

侵犯我的权益

×

泄露了我的隐私 >
侵犯了我企业的权益 >
抄袭了我的内容 >
诽谤我 >
辱骂、歧视、挑衅等(不友善)
骚扰我

泄露了我的隐私

×

您好,当您发现根叔知了上有泄漏您隐私的内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到pub.zhiliao@h3c.com 邮箱,我们会尽快处理。
  • 1. 您认为哪些内容泄露了您的隐私?(请在邮件中列出您举报的内容、链接地址,并给出简短的说明)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)

侵犯了我企业的权益

×

您好,当您发现根叔知了上有关于您企业的造谣与诽谤、商业侵权等内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到 pub.zhiliao@h3c.com 邮箱,我们会在审核后尽快给您答复。
  • 1. 您举报的内容是什么?(请在邮件中列出您举报的内容和链接地址)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)
  • 3. 是哪家企业?(营业执照,单位登记证明等证件)
  • 4. 您与该企业的关系是?(您是企业法人或被授权人,需提供企业委托授权书)
我们认为知名企业应该坦然接受公众讨论,对于答案中不准确的部分,我们欢迎您以正式或非正式身份在根叔知了上进行澄清。

抄袭了我的内容

×

原文链接或出处

诽谤我

×

您好,当您发现根叔知了上有诽谤您的内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到pub.zhiliao@h3c.com 邮箱,我们会尽快处理。
  • 1. 您举报的内容以及侵犯了您什么权益?(请在邮件中列出您举报的内容、链接地址,并给出简短的说明)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)
我们认为知名企业应该坦然接受公众讨论,对于答案中不准确的部分,我们欢迎您以正式或非正式身份在根叔知了上进行澄清。

对根叔知了社区有害的内容

×

垃圾广告信息
色情、暴力、血腥等违反法律法规的内容
政治敏感
不规范转载 >
辱骂、歧视、挑衅等(不友善)
骚扰我
诱导投票

不规范转载

×

举报说明

提出建议

    +

亲~登录后才可以操作哦!

确定

亲~检测到您登陆的账号未在http://hclhub.h3c.com进行注册

注册后可访问此模块

跳转hclhub

你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作