国科学院·ICT项目分享:Lan to Lan的NAT应用

一、网络topo图

国科学院·ICT项目分享:Lan to Lan的NAT应用

二、环境描述

在此topo图中,已经配置好了各接口的ip地址,并在防火墙配置了easy ip和静态nat端口映射,以实现内网用户可以正常访问外网用户;同时外网用户也可通过访问防火墙出接口地址来访问Server服务器。

跟国科科技一起看一下以下公网用户访问web服务器的过程,公网PC通过公网IP:12.12.12.1访问web服务器,流量通过运营商网络转发至防火墙,由于防火墙将内网服务器的80端口映射到公网,所以防火墙将流量的目的IP由12.12.12.1转化为192.168.1.200,转发至内网服务器。服务器收到并处理之后进行回包,流量转发至防火墙时,防火墙将源IP由192.168.1.200转化为12.12.12.1并发送给公网PC,公网PC收到对应的流量完成访问。

国科学院·ICT项目分享:Lan to Lan的NAT应用

三、内网用户无法通过公网IP访问对应的web资源

为了隐藏服务器真实IP地址,所以客户要求内网用户也只能通过公网IP地址去访问服务器资源,但是内网用户如果通过公网IP去访问服务器访问失败,而外网用户访问还是正常的,这是为什么呢?

国科学院·ICT项目分享:Lan to Lan的NAT应用

跟国科科技一起来抓包分析:

Fw1的G1/0/0:

国科学院·ICT项目分享:Lan to Lan的NAT应用

Ø 如图在FW1的G1/0/0接口处抓包,可以发现PC1无法建立TCP连接,并且因为nat的原因,目的地址12.12.12.1被转化成为了内网Server的地址192.168.1.200,但是发送的TCP请求并没有得到回复,别急,我们再从Switch的G0/0/2接口处抓一下包看看。

LSW1的G0/0/2:

国科学院·ICT项目分享:Lan to Lan的NAT应用

Ø 可以看到,Server其实是有回复的,但好像PC1并没有接受它,导致内网用户无法通过外网地址来访问内网Server,让我们来做进一步分析。

国科学院·ICT项目分享:Lan to Lan的NAT应用

四、问题定位

抓包分析了上面的情况,进行了一波头脑风暴,终于想明白了问题所在,让我们以PC1的视角分步看看:

—————————————————————————————————————

Step1:我是PC1,我想访问一下内部的Server,但公司告诉我要想访问Server就用12.12.12.1:80这个公有地址,于是我只好向这个地址发送数据包,于是我就去找我的网关。

国科学院·ICT项目分享:Lan to Lan的NAT应用

Step2:数据包路过了交换机来到了网关,网关帮我把数据包转发给了12.12.12.1:80,因为nat映射的原因,数据包的目的地址被转化为了Server的私网地址192.168.1.200,并发送给Server。

国科学院·ICT项目分享:Lan to Lan的NAT应用

Step3:数据包经过交换机之后来到了Server,Server发现数据包是找自己,所以就对PC1回了一个包,于是就封装了一个回应包。

国科学院·ICT项目分享:Lan to Lan的NAT应用

Step4:由于处于同一个网段,所以交换机直接将数据包转发给了PC1,PC1收到数据包之后,发现自己原本访问的是12.12.12.1,回复自己的却是192.168.1.200,所以就给拒收了,最终导致访问失败。

五、通过LAN to LAN的NAT配置解决

分析完网络中的问题以后,我们就来想想办法,既然问题出在Server回包时源ip地址不是PC1请求的目的ip地址,那么我们就想办法让它回包时的源ip地址变成PC1请求的目的ip地址,即还原回12.12.12.1。

要怎么做呢?请接着看下去

由于正常情况下Server回复给PC1的包直接经过交换机而不是防火墙,所以我就在防火墙的又做了一个nat映射,目的是为了让PC1发来的数据包的源ip地址转化为192.168.1.254这个网关地址,这样Server在回包的时候就会将数据包回复给防火墙,并且此时源ip地址又会转换会12.12.12.1。是不是听起来有些晕晕的,没关系,我们来抓个包分析分析一下:

LSW1的G0/0/1:

国科学院·ICT项目分享:Lan to Lan的NAT应用

Ø 这次我们先在交换机的G0/0/1接口处抓个包,可以看到Clinet1和防火墙已经成功建立起了tcp连接,并且来回的数据包也只有双方交互的数据包,并没有Server直接发过来的,那么我们再去FW1的G1/0/0接口处抓一下看看

LSW1的G0/0/1:

国科学院·ICT项目分享:Lan to Lan的NAT应用

Ø 呵,真热闹,这个原本冷清的端口突然多了这么多流量,让我们来逐条分析。紫色框中是通过这个端口的流量,可以看到原本source:192.168.1.1 destination:12.12.12.1被转化为了source:192.168.1.254 destination:192.168.1.200;同时回来的数据包也从source:192.168.1.200 destination:192.168.1.254转化为了source:12.12.12.1 destination:192.168.1.1,这样,防火墙再回复给PC1时,源地址就是12.12.12.1,Client也就不会再拒收了。

抓包分析完之后我们再来以PC1的视角来分步看一下:

—————————————————————————————————————

Step1:PC1想通过12.12.12.1来访问位于内网的Server,于是封装好数据包发给网关(防火墙),希望网关可以帮我进行转发。

国科学院·ICT项目分享:Lan to Lan的NAT应用

Step2:防火墙收到目的地址为12.12.12.1并且目的端口为80的数据包之后,根据提前设置好的nat映射,将目的地址转化为192.168.1.254,同时另一条nat映射将源地址192.168.1.1转化为了192.168.1.254,这样就可以让Server回包给防火墙,而不是直接发给PC1。

国科学院·ICT项目分享:Lan to Lan的NAT应用

Step3:数据包经过服务器来到了Server,Server收到后发现是找自己的,于是就封装一个回应包给192.168.1.254,并发送给防火墙 。

国科学院·ICT项目分享:Lan to Lan的NAT应用

Step4:防火墙收到数据包之后,根据自己的nat转化记录表,又将报文的源地址和目的地址进行nat转化,转化结果如下:

国科学院·ICT项目分享:Lan to Lan的NAT应用

Step5:转化完成之后,防火墙将数据包发送给PC1,PC1发现自己原本访问的是12.12.12.1,回复自己的也是12.12.12.1,于是便接收报文,完成一次数据交换。

—————————————————————————————————————

六、结论

当客户要求内网用户也通过公网IP访问位于同一个内网的服务器时,会由于来回数据包IP地址不一致问题导致访问失败,这时候需要在出口网关上做了一个Lan to Lan的NAT映射来解决这个问题,大家掌握了吗?


分享到:


相關文章: