如图所示, 企业内网有一台Server2,通过在FW1上配置nat server,将Server2的www端口映射到了公网;
实验环境中,内网和外网都使用外网的server1提供的DNS服务,在DNS服务器上添加A记录,www.baidu.com映射给202.96.208.102;
此时外网能访问该www.baidu.com,但是内网client2却无法访问。
为了实现内网client2也能访问www.baidu.com,在FW1上配置双向NAT。
注意:模拟器只能使用FW防火墙来实现双向NAT
一、配置FW1的访问策略为全通
实验需要,生产环境不可如此配置
配置nat server,将192.168.1.2的www映射成202.96.208.102的www
防火墙和路由器的区别是,防火墙配置nat server是在全局下配置,而路由器是在接口下配置;
二、在Server1上添加A记录
三、在Client1上配置DNS服务器并访问www.baidu.com
此时在Client1上能正常访问www.baidu.com
且在防火墙上能看到会话
能看到202.96.208.101访问202.96.208.102的80端口是,将202.96.208.102转换成了192.168.1.2的80端口;
四、在Client2上配置DNS服务器并访问www.baidu.com
如果Client2要访问外网的DNS服务器,那么还需要在防火墙上配置SRC-NAT
测试Client2能ping通外网DNS服务器202.96.209.102
可以看到client2已经转换成了防火墙外网接口ip出去了
此时从Client2上访问www.baidu.com
可以看到失败了
我们在Client2的接口上抓包,能看到,当Client2去访问www.baidu.com的时候,首先进行了dns解析
然后DNS服务器返回的A记录是202.96.208.102
紧接着Client2去访问202.96.208.102的80端口
但由于防火墙上做了nat server,会将202.96.208.102转换成192.168.1.2,防火墙处理包的流程是先nat server,然后找路由,根据目的192.168.1.2,会将该报文(源192.168.1.1,目的192.168.1.2)直接从自己的内网口转发出去,转发给了Server2(192.168.1.2),Server2看到源是192.168.1.1,就直接通过2层局域网回应了Client2,所以在上图中能看到192.168.1.2回应192.168.1.1的SYN,ACK报文。但是192.168.1.1并没有发送给192.168.1.2 SYN报文,所以直接进行了reset,也就导致访问www.badiu.com失败了。这就是通常所说的“三角传输”。
为了解决这种情况,一般都会在防火墙上做“双向NAT”或叫“回流”或叫“二次NAT”,即,当内网访问内网所映射的公网地址的时候,将源ip转换成防火墙接口ip,让流量往返都能经过防火墙,来实现会话的对应。
五、防火墙配置双向NAT
我们的目的是将192.168.1.1去访问202.96.208.102的时候,让192.168.1.1转换成192.168.1.254,让202.96.208.102转换成192.168.1.2;目的转换已经由nat server实现,那么怎么让192.168.1.1转换成192.168.1.254呢?
前面我们已经配置nat-policy
这个策略是,当源区域trust去访问目的区域untrust的时候,就将源做转换,转换成出接口,那么我们只需要在该策略上添加目的区域为trust,就能实现将192.168.1.1转换成192.168.1.254
六、验证双向NAT后从Client2访问www.baidu.com
可以看到能正常访问
从抓包中能看到已经变成了正常交互,而非“三角传输”
在防火墙会话中也能看到双向NAT
即:
src:192.168.1.1[2073];dst:202.96.208.102[80]
双向NAT后
src:192.168.1.254[2051];dst:192.168.1.2[80]