随着Linux的应用普及,Linux在网络方面的强大逐步为大家所认识,越来越多的单位选择使用Linux来作为服务器的操作系统。今天笔者想就Linux在校园网NAT方面的应用展开一些探讨。
大 家都知道,所谓“网络地址转换”(Network Address Translation, NAT),它是定义于RFC1631中的Internet标准,主要是用来简化及保存IP地址,它可让原来无法上网,但是可以使用内部IP地址的主机可以 成功地连接Internet。这可大大减少IP地址的需求,因为基本上整个内部网络都可以凭借NAT上的一个外部IP来连接Internet。
当 NAT作用于路由器时,通常可以连接两组以上的网络在转送数据包到其他网络前,将内部IP地址转换为Internet上合法的外部IP地址。此外,NAT 还可以对外只用一个地址代表整个网络,这样可以提供更高的安全性,将整个内部网络隐藏在该地址背后,将这种安全性及地址保存的双重功能的程序通常安装在远 程访问的环境。目前许多路由器支持NAT这项功能,其他如Linux中的IP伪装(IP Masquerade),FreeBSD中的NATD或Windows上的Sygate、Wingate、或Winroute等软件都具有相同的功能。
使用NAT的优点如下:
l 减少IP地址使用量。在使用NAT以后,Internet上的主机会误以为它正与NAT服务器进行通信,因为它们并不知在NAT主机背后包含一个局域网。 于是,回传的数据包会直接发送到NAT服务器,然后NAT服务器再将这个数据包头文件目的地的IP地址更改为局域网里真正发出信息的计算机。
l 可在NAT服务器上的外部IP上建立多个“IP Alias”,当收到传给那些IP Alias的请求时,NAT服务器可以把这些请求传给内部网络中提供服务的服务器。
l 负载均衡(Loading Balancing),也就是说,将同一个IP Alias请求分别导向到其他运行相同服务的服务器,可减少单一服务器的工作量。
虽然使用NAT具有以上优点,但是在某些情况下,必须注意到NAT潜藏的缺点,以下举出几个例子共大家参考:
l 理论上,NAT服务器只使用一个IP地址,就可涵盖无数个内部IP地址,但是许多网络通信协议或者应用程序都需要真正点对点的连接。
l 有些数据包是从出发地到目的地的过程中不能修改,像IP安全体系结构就不可以使用NAT来进行映射,因为数据包的文件头文件中含有数字签名,如果头文件被更改(即使是任何一个字),这个数字签名便从此失去效力。
l 虽然NAT对于无法取得足够IP地址的企业组织来说,它是一个极佳的解决方案,但当该组织必需合并多个局域网时,必须仔细重新规划IP分配,否则很容易产生IP重复的情况(因为每个局域网都使用内部IP地址)。
l NAT通常被人视为增加计算机安全性的保护措施,但是如果入侵者可以控制NAT服务器,那么整个局域网就会暴露在Internet当中,因此NAT并不能拿来代替防火墙使用。
NAT依其作用的方向性通常可以区分为两种类型:
l Source NAT (SNAT): 所谓的Source NAT就是改变第一个数据包的来源地址,它永远会在数据包发送到网络之前完成,数据包伪装就是一个SNAT的例子。
l Destination NAT (DNAT): Destination NAT刚好与SNAT相反,它是改变第一个数据包的目的地地址,如平衡负载就属于DNAT。
经过以上的说明,大家应该对NAT服务器的原理有了一定的了解。下面笔者就以自己学校的网络为例,来进行实际的NAT服务器的安装。
学 校整个网络使用四个IP网段:192.168.0.0/24学校办公网络、192.168.1.0/24学校财务网络、10.0.0.0/16学生网络、 192.168.2.0/24 NAT服务器所在网络。这四个网络以华为quidway3526为中心交换机使用vlan划分开,各个vlan之间通过交 换机配置可以实现相互通信。现在要使这192.168.0.0/192.168.1.0/10.0.0.0这三个网段通过NAT服务器 192.168.2.1来上网。
首先,我们先来进行NAT服务器的安装。NAT服务器应该至少具备两张网卡。
第一张网卡名称:eth0。
IP地址:220.204.56.71。
子网掩码:255.255.255.0。
第二张网卡名称:eth1。
IP地址:192.168.2.1。
子网掩码:255.255.255.0。
在安装NAT服务器之前,必须确定系统上是否已经安装了iptables程序,如果不知是否已经安装了iptables,可以使用以下方法来进行判断:
#rpm –qa iptalbes
iptables-1.2.7a-2
如果尚未安装iptables,可以在第一张安装光盘中的/RedHat/RPMS目录下,找到名为“iptables-1.2.7a-2.i386.rpm”的安装程序,然后按以下方法进行安装:
#rpm –ivh iptables-1.2.7a-2.i386.rpm
在安装好iptables以后,我们首先要配置一下静态路由。以确保NAT主机可以和其它各网段可以相互通信。
首先查看一下路由表:
#route
Kernel IP routing table
Destination Gateway Genmask Flags Use Iface
192.168.2.0 * 255.255.255.0 U eth1
127.0.0.0 * 255.0.0.0 U lo
default 220.204.56.1 0.0.0.0 UG eth0
现在的NAT主机是无法和其他网段相互通信的,所以我们用添加静态路由的方法来解决这个问题:
#route add –net 192.168.0.0/24 gw 192.168.2.254
#route add –net 192.168.1.0/24 gw 192.168.2.254
#route add –net 10.0.0.0/16 gw 192.168.2.254
(注:192.168.2.254是quidway3526交换机上192.168.2.0这个vlan的接口)
现在应该已经可以和这三个网段的机器进行相互通信了。用ping命令来进行测试:
C:\Documents and Settings\administrator>ping 192.168.2.1
Pinging 192.168.2.1 with 32 bytes of data:
Reply from 192.168.2.1: bytes=32 time<10ms TTL=63
Reply from 192.168.2.1: bytes=32 time<10ms TTL=63
Ping statistics for 192.168.2.1:
Packets: Sent = 2, Received = 2, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
接下来我们需要使用IP Forwarding的功能,代替内部网络的主机发送数据包。
1、 修改/etc/sysctl.conf文件内容,将“net.ipv4.ip_forward=”这行设置为1。
#vi /etc/sysctl.conf
net.ipv4.ip_forward=1
2、 修改/etc/sysconfig/network,加入这句话“echo 1>/proc/sys/net/ipv4/ip_forward”。
3、 重新加载/etc/rc.d/init.d/xinetd,以便使设置生效:
#/etc/rc.d/init.d/xinetd reload
4、 运行下面的指令使用IP伪装(IP Masquerading)允许所有内部网络的主机连接到Internet。
#iptables –t nat –A POSTROUTING –s 192.168.0.0/24 –j MASQUERADE
#iptables –t nat –A POSTROUTING –s 192.168.1.0/24 –j MASQUERADE
#iptables –t nat –A POSTROUTING –s 10.0.0.0/16 –j MASQUERADE
(注:Linux严格区分大小写)
在三个网段上的任意一台机器运行ping命令进行测试:
C:\Documents and Settings\administrator>ping [url]www.sina.com.cn[/url]
Pinging taurus.sina.com.cn [61.172.201.226] with 32 bytes of data:
Reply from 61.172.201.226: bytes=32 time=78ms TTL=50
Reply from 61.172.201.226: bytes=32 time=62ms TTL=50
Reply from 61.172.201.226: bytes=32 time=93ms TTL=50
Reply from 61.172.201.226: bytes=32 time=63ms TTL=50
Ping statistics for 61.172.201.226:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 62ms, Maximum = 93ms, Average = 74ms
此至使用Linux配置一台校园网NAT服务器就完成了。当然我们还可以将这台机器配置成NAT+防火墙,这样就会使得我们的局域网更加安全,具体怎样利用iptables来配置防火墙因为不是本文的重点,所以在这里就不再详述了。
Linux 博大精深,其网络方面的功能强大,安全性和稳定性更是windows所不能及的。但是,Linux的优势能否更快的为更多的人所接受,能否在学校信息化进 程中起到显著的推动作用,还需要每一位Linux爱好者热情和支持,笔者写这篇文章也是真正想为Linux的发展和应用尽上自己的一份力,为Linux在 学校网络应用上的推广做点事情