nat回流,就是内网用户通过自己公网IP做的端口映射,来访问自己内网的服务器;
在华为中叫作 域内NAT;

零、网络拓扑图

下载链接:https://pan.baidu.com/s/1Nbt3XJrSwNwMlzp1bOh1Zg
提取码:wl1u
image.png

图中,PPPOE实际没有配置,出口只走了固定IP;
端口映射:175.188.189.136:8888 对应 192.168.2.100:8888
启动后需要开启192.168.2.100的http服务,便于client测试;

一、起因简述

某天,公司网络突然很卡,几乎接近断网边缘;
ping百度,有大量的“请求超时”;
从内网ping网关(192.168.1.1),稳定不丢包;
从内网ping公司的公网IP(175.188.189.136),稳定不丢包;
几乎排除了内网的故障,和运营商沟通,反馈说是没问题。派人过来测试,笔记本直接接上光锚,配上固定IP(175.188.189.136),ping百度,稳定不丢包。好,问题又回到了我们这边;
然后一顿操作,各种插拔网线测试,最终定位了问题。
PC直接对接光锚,ping百度是稳定不丢包的,但是打开浏览器,一有浏览网页的操作,就开始超时、丢包;找到运营商,运营商排查了一阵子,也没排查到什么原因,反馈说的他们那边有什么拦截机制,可能我们触发了什么导致这个公网IP被限制(但是我们,啥都没干啊);
为了正常办公,运营商给了一个pppoe拨号(测试通过PPPOE拨号上网是稳定的),于是配置了两个接口,一个PPPOE拨号,一个固定公网IP,并通过策略路由让服务器机组的机器出公网用固定IP(防火墙上有内网服务器的端口映射,对外网提供服务),其他PC客户端默认使用PPPOE拨号上网;

二、NAT回流

配置后,内网的PC端无法通过公网IP访问端口映射的服务器了;
正常的流程应该是:

1、PC端(192.168.1.150)访问防火墙公网端口映射(175.188.189.136:8080)
2、防火墙将源IP地址转换,目的地址和端口改为端口映射中配置的内网服务器IP、端口;
3、数据包发送到内网的服务器;
4、服务器处理后回包,发送给防火墙;
5、防火墙再次进行转换,发送给内网PC(192.168.1.150)

按照教程配置、测试,也没有效果;
此处放上几个nat回流的链接:
域内NAT不生效-Web(点击打不开的话,将链接复制到url框中回车)
华为USG防火墙路由回流,域内NAT
华为USG防火墙配置NAT映射回流解决内网通过公网映射访问内部服务器

先后找了三位大佬来排查,配置各种安全区域策略、策略路由、NAT策略等,都没有生效(显示没有数据包命中);后来找到售后华为工程师客服,按照指示操作了一顿,也还是不行。不过指出了问题点:“pc端访问公网IP的端口映射,防火墙上没有收到数据包。”
这次从PC端开始排查,跟踪路由,看数据包到底去哪了。果然发现了问题,在核心交换机上,之前网络出故障,测试的时候配置了一个vlan 175,并且配置了公网IP(175.188.189.136),所以PC端访问端口映射的数据包全到核心交换机上了。这一操作坑了三位大佬  ̄へ ̄ ,undo掉这个配置后就ok了;

不多说了,直接上干货;

三、域内NAT的几点排查思路

1、数据包到达防火墙

防火墙上有个很好用的功能:监控——会话表
image.png
通过会话表抓包,可以看到pc端的数据包到底有没有到达防火墙,数据包都没过来,更何谈策略的命中了;
不妨排查下PC端、接入交换机、核心交换机、防火墙等设备的路由;

公司网络故障修复后,为解决nat回流的问题,在核心交换机做端口镜像进行抓包,抓到了pc去往175.188.189.136的包,就以为到达防火墙了,万万没想到,核心交换机上之前测试配置了一个vlanif接口IP为175.188.189.136,TNND;

2、NAT策略生效

数据包到达防火墙后就要观察是否按照预定的策略走了。
防火墙设计了安全区域、NAT策略、策略路由等等,如果感觉比较乱,可以一步一步添加;
上图中的NAT策略就没有生效,或者说没有配置NAT策略,因为 NAT源地址、NAT目的地址、NAT源端口和NAT目的端口中都是空的。我再放一张正常的:
image.png

192.168.1.150:62059 访问 175.188.189.136:8888 端口
防火墙NAT策略转换数据包,变成
175.188.189.136:2061 访问 192.168.1.71:8888 端口

注意看会话表中的 源安全区域(trust)和目的安全区域(trust),这表明,在安全区域策略中,是需要放通 trust到trust的;如果你的服务器在dmz区域,这里也会显示出来,便于配置安全区域策略;

3、防火墙路由

经过NAT策略的数据包,会查找路由,将数据包发送出去,所以也要看防火墙上的路由是否正确;尤其是策略路由,它的优先级大于路由表,也是要关注的点;
再不济,就到内网的服务器上抓包,看数据包是否到达了本机,来源IP是不是经过防火墙NAT过后的地址;

如果做了策略路由,请“重点防御”;

这样,NAT成功后数据包就到达服务器了,服务器接收到的数据包,源IP地址也应该是防火墙上的(包括地址池内的IP),服务器处理成功后的包发送给来源IP节点(防火墙),防火墙NAT过程中有记录会话状态,再次NAT后,返回给PC端。

四、完整的NAT回流案例配置

可以下载拓扑图查看配置,没有多余的配置;

1、配置NAT server端口映射

image.png
注意:安全区域,有any选any,没有any,留空;不要选择untrust或者trust;

2、配置NAT策略

【network_nat】策略是出公网的策略,内网用户上网命中的策略就是这个;
image.png

【nat_huiliu】 是nat回流命中的策略,并且要放到 【network_nat】前面;
源地址和目的地址一定要匹配上内网客户端的网段和服务器的网段,如果内网客户端和服务器在一个网段,最好新建一个服务器的IP地址组,总之,尽量详细些,不要any、any,那和下面的那条策略没区别了,也就不会匹配上了;
image.png

有的防火墙【NAT策略】中,有 转换模式 的选项;此处选择【仅转换源地址】
image.png

注意:

NAT策略中的地址池建议使用公网接口地址。
服务器的应答报文需要返回到防火墙之后再转发给客户端PC,如果地址池中的地址是不可达或者路由指向了别的设备,也会造成域内NAT访问失败;

3、配置安全区域

三——2 中的抓包,如果抓包成功,就可以看到源安全区域是和目的安全区域是哪个;
拓扑图中的防火墙抓包:
image.png
所以添加允许 trust 到 trust 的安全策略:
image.png

4、配置策略路由

这里说是配置策略路由,与其说应该是不配置策略路由;
配置策略路由的目的就是怕已经配置了的策略路由影响数据包的走向;
所以,如果原本就有策略路由的话,可以配置上,并且移动到第一条策略,率先匹配;
image.png

源地址为内网PC网段,目的地址为服务器的网段;可以看到后面的命中走的就是这条策略;

上面放置了几个相关的链接,并不是他们的配置不对,而是没有说明其他问题原因;各种因素的影响,谁也说不清现场有什么问题;

五、衍生问题

1、源进源出

源进源出是防火墙接口配置中的一个功能,开始并没有理解,只理解了字面意思,从哪里进来就从那里出去(废话);
我们来看一下华为给的解释:
image.png

举例说明:
企业网络公网出口有多个(假设一个为pppoe拨号,一个为固定IP),其中,我在一个固定公网IP上做了端口映射,用于外网访问我内网的服务,又修改了公网出口的默认路由(pppoe拨号的路由出口的优先级为50,固定IP出口的优先级为60),内网默认走PPPOE拨号(包括服务器)。

此时,整体的网络状态就是,内网(包括服务器)出公网走的pppoe拨号线路,外网访问固定公网IP的端口映射是走不通的,因为服务器回包走的PPPOE拨号,对于外网客户端来说,它访问的是公网固定IP(假设为1.1.1.1:8080),而发送给它回包的确实另一个公网IP(PPPOE自动获取公网IP地址);

两种解决方案:
1、通过策略路由,让服务器出公网时走固定IP,这样,外网客户端访问固定公网IP的端口映射,来回的数据包路径一直,也就可以访问通了;
2、开启源进源出;上图中,在接口下打钩即可;或者在接口下命令行配置;

[USG6100E-GigabitEthernet0/0/1]redirect-reverse next-hop 1.1.1.2
#1.1.1.2 为公网固定IP出口的下一跳,也就是网关,根据自己实际情况配置即可;

这两个方案不冲突,策略路由是主动的,服务器出去的数据包会遵循策略路由;源进源出是被动的,当外来流量访问端口映射时才会触发;

打赏
支付宝 微信
上一篇 下一篇