`

解剖NetScreen (6)

阅读更多
本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文
档的完整性,严禁用于任何商业用途。
msn: yfydz_no1@hotmail.com
来源:http://yfydz.cublog.cn

0. 声明
本文仅仅是从技术角度分析如何实现NetScreen防火墙,即如果要把本人的一台Linux机器变成NetScreen防火墙估计要作那些工作,所有观点均为个人观点,不代表任何组织或团体,只谈技术,不带任何吹捧、攻击或贬低,欢迎大家一起讨论,有错误请指正,但对文章中如有不明白的名词和概念请问google而不要问我。

1. 参考资料:
http://www.juniper.net/techpubs/software/screenos/screenos5.1.0/translated/
CE_v7_SC.pdf 第7卷:地址转换

2. 前言
 
NAT(Network Address Translation)是在IP(版本4)地址日渐枯竭的情况下出现的一种技术,可将整个组织的内部IP都映射到一个合法IP上来进行Internet 的访问,也可将外部对某IP的访问映射到内部的服务器上。与NAT相关的术语有IP伪装(IP Masquerade)、端口映射(Port Mapping)、端口地址转换(Port Address Translation)、透明代理(Transparent Proxy)等,它们都是NAT的某种表现形式,NAT在RFC3022中定义。
 
NAT分为源NAT和目的NAT两种,源NAT是指转换前源IP地址和转换后源IP地址不同,数据进入防火墙后,防火墙将其源地址进行了转换后再将其发出,使外部看不到数据包原来的源地址;目的NAT是指转换前目的IP地址和转换后目的IP地址不同(对于TCP/UDP协议,也可以改变端口号),数据进入防火墙后,防火墙将其目的地址进行了转换后再将其发出,使看不到数据包原来的目的地址。在进行NAT时,如果是一个地址到一个地址的转换,称为一对一模式;如果是一个网段地址到一个地址的转换,称为多对一的转换;如果是一个网段地址到一个网段地址的转换,称为多对多的转换。上面说的IP伪装就属于源NAT,而端口映射和透明代理等属于目的NAT。
 
NAT从另一个角度也可分为静态和动态两种,静态方式是明确指定了转换前后的地址和端口的情况,可以有一对一、一对多、多对一等方式,如果实际地址发生变化,NAT规则必须相应改变;而动态方式也就是IP伪装方式,是一种多到一的源NAT转换模式,一般只需指定转换前的地址,转换后地址则是防火墙的IP地址,此地址是可以动态改变的,而NAT规则可以不变。静态NAT一般用在防火墙IP地址都是固定的情况,而动态NAT用于防火墙IP地址不固定的场合,如ADSL拨号。动态情况下也可以进行目的NAT,但NAT规则是在获取了地址后才起作用。
 
一般来说,源NAT多用于从内部网络到外部网络的访问,内部网络地址可以是保留IP地址;目的NAT多用于外部网络到内部服务器的访问,内部服务器可使用保留IP地址。当使用透明代理模式时,由内到外的访问实际上是一种目的NAT,是将访问的目的IP和目的端口转换为代理服务器的IP和代理端口。
 
Linux下的netfilter提供了完整的NAT解决方案。
 
使用目的NAT功能时可实现负载均衡(Load Balance,LB)功能,假设防火墙外网卡上有一个合法IP,内部有多个服务器同时提供服务,当将访问防火墙外网卡IP的访问请求转换为这一组内部服务器的IP地址时,访问请求就可以在这一组服务器进行均衡,在Linux下是由IPVS完成的。

3. NS的NAT
 
NS的NAT_src和NAT_dst是两种不相关的处理,这点和netfilter是一样的,netfilter的NAT规则也是只处理单方向的信息,反方向的主动连接不符合此规则。
 
PAT在netfilter中是自动启动的,在NS中还有相关选项启动,以防止在某些特殊场合不能改端口。在禁用PAT的情况下,如果地址足够多,netfilter也可以不用改端口的。
 
NS的NAT规则是加在策略上的,而netfilter是和过滤规则分开的,不过完成的功能是相同的,NS是一起处理了,而netfilter是分两步实现。
 
NS可以实现子网到子网的一对一映射,netfilter本身转换后地址是均衡选择的,不过实现这种多对多时的一对一转换很容易。
 
NS中的MIP相当于加了双向的NAT规则。
 
NS中的VIP就是通过不同端口来映射内部不同主机,这个netfilter也可以很容易实现,比较要注意的虚IP本身,Linux本身不支持虚IP,要处理不同地址的话需要加网卡别名,不过修改网卡结构可以支持网卡上带虚IP。
 
4. 特殊场合的NAT
 
4.1 重叠网段VPN通道中的NAT
 
这种情况在关于VPN那章中说过这种情况,为解决VPN通道两边IP地址重叠时的VPN访问问题,需要对数据在进入VPN通道前和出VPN通道后进行相关的地址转换,netfilter本身不支持这种情况,但作简单修改后可以支持。
 
4.2 访问内部同网段服务器
 
当内部服务器和内部机器在相同的内部网段,地址是内部地址的场合,用合法外部地址访问内部服务器时用普通NAT方式是无法实现的,因为这同时要修改数据包的源地址和目的地址(注意,如果服务器和内部机器不在同一内部网段,通过NAT是可以实现这种访问的)。
为处理这种情况,TRX的NetGuard用了特殊的NAT处理来实现,有的防火墙是通过DNS NAT方式来实现,从NS的手册中没有相关描述,不知道是否能正确处理这种情况。NS中源和目的地址同时改变的场合是4.1中描述的VPN场合。
 
5. 小结
 
NAT技术现在已经是一个很成熟的技术了,netfilter本身提供了完善的NAT功能,基本不比任何商业系统差,而且源码公开可以少量改动就能改造成各种所需要的处理方式。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics