红联Linux门户
Linux帮助

在Red Hat Linux AS 5下实现NAT路由

发布时间:2014-11-08 09:41:21来源:linux网站作者:linux人

连接两个逻辑上分开的网络,传统上是使用路由器来实现,Linux的完善与发展为此提供了一个低廉可靠的替代方案,越来越多的人们用它来代替传统的网络设备,下面就是我们使用Red Hat Linux AS 5实现NAT路由的一个实例。


小知识

NAT

NAT是Network Address Translation的缩写,又称网络地址转换。它是通过内部网络地址与公网地址相互转换,从而实现内外的互通互联。它不仅能隐藏内部IP地址,降低内部网络受到攻击的风险,而且能帮助解决因特网的IP地址紧缺的问题。是目前被广泛采用的联接因特网的方式。


一、需求分析

前段时间,我们租用了网通10M光纤线路,并获得了一个公网IP地址,通过一台Cisco 2621路由器作地址转换,实现了家属小区的局域网与因特网的互联。在网络运行初期,这种配置和连接方式还是经受住了考验。随着时间的推移,小区局域网内的电脑不断增多,由原来的50多台发展到100多台,而且越来越多的人使用BT、电驴等下载工具,从而致使Cisco 2621严重过载,并多次出现死机。

面对这种情况,我们设计了三种方案:其一,购买一台高性能的路由器,将cisco 2621替换下来;其二,windows +ISA server另加一台电脑;其三,Linux 加一台电脑。第一种方案简单易行,但投资太高;第二种方案性能比要高一些,但windows的稳定性、安全性却成了最大的隐患,而且windows对硬件要求高,如果全部使用正版软件,费用也很不低。第三种方案性价比最高,于是一台闲置的旧服务器+ Linux成为了我们的首选。


二、网络结构

Linux服务器插有双网卡,其中eth0(网卡1)与小区内网相联,eth1(网卡2)与因特网相联。IP地址设置如下:

小区内网:192.168.1.0 / 255.255.255.0

Linux服务器:

eth0:192.168.1.1 / 255.255.255.0

eth1:221.214.141.12 / 255.255.255.0

网关 221.214.141.1

DNS 202.102.134.68 202.102.128.28


三、Linux服务器配置

以下配置基于Red Hat Enterprise Linux AS 5,内核版本是2.6.18,在安装时选择了 “最小安装”,语言包只选英文,以减少其它组件对系统资源的占用。安装完后,以root用户登陆系统,在字符界面下进行设置。

1、IP地址设置

ifconfig eth0 192.168.1.1 netmask 255.255.255.0

ifconfig eth1 221.214.141.12 netmask 255.255.255.0

为了让计算机启动时自动设置IP地址,还需要分别修改/etc/sysconfig/network-scripts/下的两个文件:ifcfg-eth0、ifcfg-eth1,将ONBOOT属性设为yes,即ONBOOT=yes ,

eth0(网卡1)对应的ifcfg-eth0文件格式如下:

# 3com Corporation|3c905B 100BaseTX [Cyclone]

DEVICE=eth0

BOOTPROTO=none

HWADDR=00:10:4B:95:95:E8

ONBOOT=yes

TYPE=Ethernet

USERCTL=no

PEERDNS=no

NETMASK=255.255.255.0

IPADDR=192.168.1.1

eth1(网卡2)对应的ifcfg-eth1文件格式如下:

# 3com Corporation|3c905B 100BaseTX [Cyclone]

DEVICE=eth1

BOOTPROTO=none

HWADDR=00:10:4B:95:95:E9

ONBOOT=yes

TYPE=Ethernet

USERCTL=no

PEERDNS=no

NETMASK=255.255.255.0

IPADDR=221.214.141.12

GATEWAY=221.214.141.1

注:修改这两个文件可以使用vi 命令,输入并执行“vi /etc/sysconfig/network-scripts/ ifcfg-eth0”,键入i命令,vi编辑器将进入编辑模式。编辑结束后按“ESC”键,返回命令模式,输入“:wq”,按回车键存盘退出。若输入“:q!”,则退出而不进行任何保存。

2、DNS服务器设置

编辑“/etc/resolv.conf”,命令如下:

vi /etc/resolv.conf

文件内容为:

nameserver 202.102.134.68

nameserver 202.102.128.28

3、打开ip转发功能

echo “1” > /proc/sys/net/ipv4/ip_forward

为了在电脑重启之后继续有效,需将文件“/etc/sysctl.conf”中的“net.ipv4.ip_forward=0”改为“net.ipv4.ip_forward=1”

4、启动NAT

iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -o eth1 -j SNAT --to 221.214.141.12

(注:”/24”表示子网掩码为24位,即255.255.255.0)

这条命令是将来自于192.168.1.0/24并通过eth1出去的数据包的源地址修改为221.214.141.12,从而实现网络地址转换。将这条命令添加到“/etc/rc.d/rc.local”文件中,则可以在每次引导系统时自动应用。


四、功能扩展

在上面的实例中,我们通过Linux中的iptables命令实现了NAT,从而使小区内网可以访问因特网。这仅仅是用到了NAT两种类型中的一个——SNAT(改变数据包的来源地址),若是用上另一种类型——DNAT(改变数据包的目的地址)能实现什么功能呢?

让我们看一个最典型的例子:以前面的网络拓扑为例,在小区内网中有一台服务器(192.168.1.3)运行着web服务,现在我们想让因特网上的用户通过访问公网地址(221.214.141.12)来访问它。这就需要设置DNAT规则,将对公网地址的web访问请求,重定向到内网的web服务器上。

iptables -t nat -A PREROUTING -d 221.214.141.12 -p tcp --dport 80 -j DNAT --to 192.168.1.3

短短的几条命令,外加一台旧服务器,轻松实现了NAT,这仅仅是Linux强大功能的一小部分,如果你愿意,完全可以用它做用它来做路由器、防火墙,做嵌入式系统,做实时系统。