防火墙技术之NAT技术——目的NAT应用(上)
一、 前言
在很多场景中,比如企业、学校、都有提供一些对外访问的业务,比如门户网址、文件服务器等,在实际部署中,这些提供访问的服务器都部署在内网、分配的是私网地址,导致的情况是公网用户没法对私网地址直接进行访问。通过学习上篇内容,可以知道源NAT功能是把私网用户的源地址转换成可上网的地址(公网地址,由运营商分配的)然后发送出去,那么目的NAT的作用正好相反,它是当其他公网用户访问我们服务的公网地址时候,进行目的地址转换(注意一定要是公网地址)。不同厂商的叫法可能不太一样,如:目的NAT、NAT Server、端口映射、甚至DMZ,是不是有点傻傻分不清楚。不过不要紧,学完本篇后就都了解清楚了,下面来看看都有哪些应用场景吧!
二、从一对一映射案例出发
如图2-1所示,某公司在网络边界处部署了防火墙作为安全网关,Router是ISP提供的接入网关。为了使私网多台WEB服务器、FTP服务器、DNS服务器能够对外提供服务,需要在防火墙上配置目的NAT功能。除了公网接口的IP地址外,公司还向ISP申请了3个IP地址(117.11.39.31~117.11.39.33)作为内网服务器对外提供服务的地址。
图2-1 一对一映射组网
2.1 接口配置
图2-2 接口配置
2.2安全域配置
图2-3 安全域配置
2.3 静态路由配置
外网用户主动发起连接访问服务器映射的公网IP地址,正向报文到达防火墙后正确建立会话表项(形如:入接口-源IP地址-协议-源端口-目的IP地址-目的端口-出接口);服务器返回的反向响应报文直接命中会话进行转发,无需额外配置静态路由,提高防火墙转发效率。
2.4 资产(池)配置
图2-4 资产配置
图2-5 资产池配置
2.5 安全策略配置
图2-6 安全策略配置
2.6 目的NAT配置
图2-7 目的NAT配置
2.7 路由器配置
由于服务器映射的公网IP地址与路由器接口IP地址不在同一网段,因此需要配置静态路由使得公网用户访问服务器映射的公网IP时的流量可以正确转发到防火墙上进行处理,本案例中具体配置为:
(1)iproute-static 117.11.39.31/32 106.120.100.123
(2)iproute-static 117.11.39.32/32 106.120.100.123
(3)iproute-static 117.11.39.33/32 106.120.100.123
从上面的配置可以看出,一对一使用的场景主要一个是公网地址特别多且内网服务器也多的情况
;再一个是需要映射的端口号比较多,比如15000到20000,这个时候还是比较建议用一对一来减少工作量的。但同时也带来了一定问题,首当其冲的就是安全性问题,因为一对一的映射是把所有端口号都给映射出去了,比如这台服务器就只是对外提供FTP服务,但是还运行了远程桌面、SMTP服务等应用,配置一对一映射后,把不想对外提供的服务也给映射出去了,虽然可以通过安全策略(如图2-6)来控制,但是实际上报文处理已经通过了目的转换、还是消耗了设备的性能的。再一个方面,类似80、443这些缺省的WEB端口号运营商要求所提供的WEB服务已经备案过了,才会开通80、443端口号(在一次实际应用中,研发人员将一台漏挖设备映射出去以供其他客户访问设备页面,起初WEB访问侦听TCP 80端口发现本地可以访问但是客户侧可以ping通却无法访问设备页面,后来尝试修改为侦听TCP 8440端口则客户侧可以成功访问),但是实际中往往很多,比如管理平台、临时测试的门户网站内网都是用的80端口号,却远没到需要备案的地步,那么通过映射公网IP的80端口也就无法访问成功。换言之,需要除了映射出公网IP地址外、对于一些特定应用还需要改变端口号。
三、再看端口映射使用场景
如图3-1所示,某公司在网络边界处部署了防火墙作为安全网关,Router是ISP提供的接入网关。为了使私网WEB服务器和FTP服务器能够对外提供服务,需要在防火墙上配置目的NAT功能。除了公网接口的IP地址外,公司没有再向ISP申请公网IP地址。对比图2-1,其实组网上没有什么变化、关键在于需要对外提供服务的内部服务器数量以及公司申请的公网IP数量。该场景下目的NAT的公网地址需要借用公网接口IP地址,如果使用一对一映射则会造成防火墙本身的管理访问受影响,比如HTTPS、TELNET、SSH等都会被映射转换;从而导致无法通过该接口的地址使用WEB方式或SSH方式对设备进行管理,也无法对设备进行Ping探测,因此需要使用端口映射以缩小地址和端口转换的范围,从而避免与访问设备本身的需求相冲突。
图3-1 端口映射组网
3.1 接口配置
图3-2 接口配置
3.2 安全域配置
图3-3 安全域配置
3.3 静态路由配置
外网用户主动发起连接访问服务器映射的公网IP地址,正向报文到达防火墙后正确建立会话表项(形如:入接口-源IP地址-协议-源端口-目的IP地址-目的端口-出接口),服务器返回的反向响应报文直接命中会话进行转发,无需额外配置静态路由。
3.4 资产(池)配置
图3-4 资产配置
图3-5 资产池配置
3.5 安全策略配置
图3-6 安全策略配置
3.6 目的NAT配置
图3-7 目的NAT配置
3.7 路由器配置
本案例中由于服务器映射的公网IP地址直接借用了防火墙接口IP且与路由器接口IP地址在同一网段,因此路由器上不需要额外配置静态路由,便可使公网用户访问服务器映射的公网IP时的流量可以正确转发到防火墙上进行处理。
端口映射从字面意思其实就容易理解,它的功能就是对需要对外提供服务的端口号进行映射发布,这样解决了一对一映射带来的问题。可以灵活地配置端口映射规则,比如内网使用80、3389,而外网端口号可以自定义其他的,灵活性、安全性都可以得到保障。唯一的缺点就是一次只能映射一条,当需要映射的内部服务端口比较多的时候操作上有些繁琐。这一点在后续版本可以考虑进行优化、增加支持端口范围配置(类似接口配置界面的Trunk VLAN ID),从而可以在一定程度上简化操作、更加易用,如图3-8所示。
图3-8 目的NAT之端口范围配置
四、 结语
学习了一对一映射和端口映射,那么在实际场景中该如何选择呢?这里提两点建议,大家可以结合实际项目慢慢体会:
(1) 能用端口映射解决的就用端口映射,不要用一对一映射。
(2) 如果端口非常多、只能使用一对一映射的话,安全策略尽量做到精确匹配,在确保业务不受影响的情况下尽可能地保障系统安全。
对于单一出口下常见的场景,主要的内容已介绍完毕,在实际工作中可能还会遇到客户业务存在多出口(联通、电信)的情况,这样的场景下又该如何去部署防火墙启用目的NAT功能将内部服务映射到公网?
