HQY

×

双向NAT与NAT回流:让内网用户“绕圈”访问内网服务器的底层逻辑

hqy hqy 发表于2026-06-24 17:14:32 浏览6 评论0

抢沙发发表评论


在企业网络场景中,我们常常会遇到这样的需求:内网服务器被发布到互联网后,外网用户可以通过公网IP访问,可内网用户也想通过同一个公网IP访问这台内网服务器,这该如何实现?今天我们就来深度解析双向NAT(NAT回流)的原理,带你看透这个“绕圈”访问的底层逻辑。

一、场景铺垫:从外网访问内网服务器说起

假设企业有一台内网服务器(IP:172.16.1.1,提供80端口服务),通过防火墙发布到互联网,公网IP为200.1.1.10。

当外网用户(如IP为88.1.1.1)访问该服务器时,流量流程是这样的:

1. 外网用户发送请求,目的IP为200.1.1.10,目的端口80。

2. 防火墙收到请求后,通过静态NAT映射,将目的IP从200.1.1.10转换为内网服务器IP172.16.1.1,并记录会话表项。



3. 内网服务器收到请求后回包,源IP为172.16.1.1,目的IP为88.1.1.1。

4. 防火墙再次通过会话表项,将源IP从172.16.1.1转换为200.1.1.10,将回包发往外网用户。

这样,外网到内网的访问就顺畅完成了。

但如果内网用户也想通过公网IP200.1.1.10访问这台内网服务器,问题就来了——因为按照常规路由,内网用户直接访问200.1.1.10会被路由到互联网,无法“绕回”内网服务器。这时候,双向NAT(NAT回流)就派上用场了。


二、双向NAT(NAT回流)的核心逻辑

内网用户(如IP为192.168.1.1)想通过公网IP200.1.1.10访问内网服务器172.16.1.1,需要让流量“绕”防火墙一圈,实现步骤如下:


步骤1:目的IP转换(把公网IP转成内网服务器IP)

当内网用户发送请求到200.1.1.10时,防火墙先拦截流量,通过静态NAT策略将目的IP从200.1.1.10转换为内网服务器IP172.16.1.1,确保流量能到达内网服务器。


步骤2:源IP转换(让回包能“绕”回来)

如果只做目的IP转换,内网服务器回包时会直接将数据发给192.168.1.1,但此时内网用户期待的是来自200.1.1.10的响应,导致会话不匹配,访问失败。

因此,还需要第二步:在防火墙配置源NAT策略,将内网用户的**源IP192.168.1.1**转换为防火墙内网口的IP(如10.1.1.1)。这样,内网服务器回包时,目的IP是10.1.1.1,流量会先回到防火墙。


步骤3:回包的二次转换(还原真实源目IP)

防火墙收到内网服务器的回包后,根据之前的会话表项,将:

• 源IP从172.16.1.1转换为200.1.1.10(还原公网IP);

• 目的IP从10.1.1.1转换为192.168.1.1(还原内网用户IP)。

最终,内网用户收到来自200.1.1.10的响应,访问成功。




三、抓包验证:看清流量的“变形记”

为了更直观理解,我们通过抓包分析流量的变化:

1. 内网用户发请求:源IP192.168.1.1,目的IP200.1.1.10,端口80。

2. 防火墙处理后:目的IP变为172.16.1.1,源IP变为10.1.1.1。

3. 内网服务器回包:源IP172.16.1.1,目的IP10.1.1.1。

4. 防火墙二次处理后:源IP变为200.1.1.10,目的IP变为192.168.1.1。

整个过程中,防火墙通过两次NAT转换(目的+源),让流量“绕圈”后仍能正确匹配会话,实现内网用户通过公网IP访问内网服务器。


四、总结

双向NAT(NAT回流)的本质是对流量的“双向变形”:既修改目的IP让流量到达内网服务器,又修改源IP让回包能“绕”回防火墙,最终还原成内网用户期待的会话。

打赏

本文链接:https://www.kinber.cn/post/6658.html 转载需授权!

分享到:


推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

 您阅读本篇文章共花了: 

群贤毕至

访客