巧用双向NAT实现外网端口映射

 

环境介绍 

  1. FW1有固定公网IP(默认走internet1),FW2通过拨号上网(默认走internet2),地址不固定

  2. 部门A通过fw1作为出口(SNAT),部门B通过fw2作为出口(SNAT)

  3. 外网用户想直接访问内部业务系统192.168.1.100的9000端口

 网络拓扑如下:

 配置过程:

  涉及到多层NAT的地址转换,外网要访问内网的端口,首先考虑到了DNAT,如在fw1中配置DNAT地址映射,100.1.1.10:9000----->192.168.0.11:9000,然后在fw2中再配置DNAT映射192.168.0.11:9000----->192.168.1.100:9000。配置完成之后,发现业务时钟无法访问。

故障分析:  

  1. 在fw1和fw2中配置DNAT地址映射,100.1.1.10:9000----->192.168.0.11:9000----->192.168.1.100:9000。这层转换是没有问题的

  2. 业务有问题,其实是出在了数据回包的过程,192.168.1.100:9000----->100.1.1.1,当该数据到了fw2之后,fw2对该包有如下处理,查路由表,发现需要从g0/0/0口发出去,然后匹配策略,以及SNAT,但是此时是匹配不了之前SNAT的会话表的(100.1.1.1---->192.168.0.11:9000[192.168.1.100:9000]),因为之前的数据是从G0/0/1接口进来的,所以数据不会转换192.168.0.11。那么该数据包要从G0/0/0出去,就要就要看防火墙的配置了,是否允许该区域之间的流量通过,不过即便允许了数据包也被丢弃了,一般上防火墙都会认为是攻击报文

  3. 那知道问题所在就好,只需要将数据的走向和数据来源一致即可,可以将fw2的默认路由指向fw1,这样数据经过fw2和fw1的dnat规则后会自动转换。但是这种改法有很多缺点,最为明显的就是影响部门B的使用,整个路由都从internet2改成了internet1。另外如果fw1和fw2如果是同一网段还好,如果是跨网段,任意一个路径都有可能从不同的出口出去(实际我的环境就是多层NAT,为了方便理解,我将拓扑优化了)

  4. 最优的办法就是,在fw1中,凡是去往192.168.0.11的9000,8080等端口的,都先做一个源地址转换,转换成自己的出接口地址192.168.0.10,这样fw2在回包的时候,肯定会将数据包送回给fw1再出去。

总结:

  1. 综合来说,fw1做了双向nat,即把去往100.1.1.10的9000转成192.168.0.11的9000,也把源地址100.1.1.1转成了192.168.0.10

  2. 再扩展下双向NAT,常见的互联网架构中,一般会配置多个出口,如电信,联通。如果希望实现源进源出的效果(即电信入站流量默认从电信出站,联通反之),那么采用双向NAT,在转换DNAT的同时,也将公网源地址转换称为防火墙的内网出接口IP(局域网)。这样就很简单的实现了源进源出功能

  3. 高流量场合下,如数据中心出口,配置诸多NAT规则的性能是始终比直接路由转发要低的。如无特殊需求,还是不建议对数据包经常进行双向NAT转换。

猜你喜欢

转载自www.cnblogs.com/System-hjf/p/10261411.html