配置双网卡网络接口 eth0 和 eth1 ,并在服务器上配置 NAT (网络地址转换),在公网 ip 和内部网私有 ip 地址间配置静态 NAT 重定向数据包,使服务器成为透明网关从而使得内部网计算机可以无障碍访问外部互联网。
关键词:Redhat Linux ; DNS (域名解析服务器); NAT (网络地址转换); iptables 规则
步骤:
Step1 配置两块网卡的接口地址
设置第一块网卡 eth0 的 IP 地址和子网掩码:
# ifconfig eth0 202.38.75.7 netmask 255.255.255.0 up
修改 /etc/sysconfig/network-scripts/ifcfg-eth0 文件的内容如下:
DEVICE=eth0
BOOTPROTO=none
BROADCAST=202.38.75.255
IPADDR=202.38.75.7
NETMASK=255.255.255.0
NETWORK=202.38.75.0
ONBOOT=yes
USERCTL=no
PEERDNS=no
TYPE=Ethernet
GATEWAY=202.38.75.254
设置第二块网卡 eth1 的 IP 地址和子网掩码:
# ifconfig eth0 192.18.75.209 netmask 255.255.255.0 up
修改 /etc/sysconfig/network-scripts/ifcfg-eth0 文件的内容如下:
DEVICE=eth1
BOOTPROTO=none
BROADCAST=192.168.75.223
IPADDR=192.168.75.209
NETMASK=255.255.255.240
NETWORK=192.168.75.0
ONBOOT=yes
USERCTL=no
PEERDNS=no
TYPE=Ethernet
Step2 使用 route 命令设置路由表
设置第一块网卡 eth0 的路由表:
# route add -net 202.38.75.0 netmask 255.255.255.0 dev eth0
设置第二块网卡 eth1 的路由表:
# route add -net 192.168.75.0 netmask 255.255.255.0 dev eth1
使用 route 命令来观察路由情况:
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
202.38.75.0 * 255.255.255.0 U 0 0 0 eth0
192.168.75.0 * 255.255.255.0 U 0 0 0 eth1
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
Step3 配置 DNS ( Domain Name Sever 域名解析服务器)服务器地址
配置主机使用的 DNS 服务器:编辑 /etc/resolv.conf 文件,内容为: nameserver 202.38.64.1 ,这指定了 DNS 服务器的地址。最多可以写三个地址,作为前一个失败时的候选 DNS 服务器。
#vi /etc/resolv.conf
nameserver 202.38.64.1
Step4 重启并测试 network 服务
完成网络配置后,用下面命令重启 network 服务:
# service network restart
正在关闭接口 eth0 : [ 确定 ]
正在关闭接口 eth1 : [ 确定 ]
关闭环回接口: [ 确定 ]
禁用 IPv4 包转送: [ 确定 ]
设置网络参数: [ 确定 ]
弹出环回接口: [ 确定 ]
弹出界面 eth0 : [ 确定 ]
弹出界面 eth1 : [ 确定 ]
测试内网机器与服务器网络接口 eth1 :
在内网机器上 ping 服务器:
#ping 192.168.75.209
如果 ping 通,说明 eth1 网络接口没有问题。
测试服务器对外网络接口 eth0 :
在服务器上 ping 外部网络,比如 DNS 服务器 ip 地址:
#ping 202.38.64.1 (科大的 DNS 服务器)
如果 ping 通,说明 eth0 网络接口以及 DNS 服务器设置没有问题。
Step5 在服务器上配置 NAT
使用 NAT 就可以转换数据包的源地址( SNAT )或者目的地址( DNAT )。
DNAT 操作主要用在这样一种情况,你有一个合法的 IP 地址,要把对防火墙的访问重定向到其他的机子上。也就是说,我们改变的是目的地址,以使包能重路由到某台主机。
SNAT 改变包的源地址,这在极大程度上可以隐藏你的本地网络等。一个很好的例子是我们知道防火墙的外部地址,但必须用这个地址替换本地网络地址。有了这个操作,防火墙就能自动地对包做 SNAT 和 De-SNAT( 就是反向的 SNAT), 以使 LAN 能连接到 Internet 。如果使用类似 192.168.0.0/24 这样的地址,是不会从 Internet 得到任何回应的。因为 IANA 定义这些网络(还有其他的)为私有的,只能用于 LAN 内部。
我们这里的情况就属于 SNAT 的应用。因为内部网络使用 192.168.75.0/24 这样的私有 ip ,直接使用这类 ip 地址是无法访问外部 Internet 网络 ip 的(如 202.38.75.7 )。通过添加 iptables 路由规则,将来自内部局域网机器的数据包重定向,改变其源地址为服务器 ip 地址,才可以使内网机器顺利访问外部网络。从这个角度来看,服务器提供 NAT 服务后就像一个透明网关,使内外网机器 无障碍 连通。
设置方法如下:
在 /etc 路径下建立 natstat 脚本文件:
#vi /etc/natstat
内容设置为:
#!/bin/bash
# 检查需要的模块是否正常工作
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/modprobe ip_tables
/sbin/modprobe ip_nat_ftp
/sbin/modprobe iptable_nat
# 设置 SNAT 规则
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.75.0/24 -j SNAT --to-source 202.38.75.7
然后保存脚本文件,并设置 natstat 文件访问权限为“可执行”,并执行此脚本
#cd /etc
#chmod +x natstat
#./natstat
最后,在 /etc/rc.local 中添加开机自动启动 NAT 的脚本:
#vi /etc/rc.local ( 注:不同系统可能有所区别,可能是 /etc/rc.d/rc.local ,也可能是 /etc/rc.conf)
在其中添加如下脚本:
/etc/natstat
保存文件,退出。
这样就在网关服务器上配置好了 NAT 服务,内网机器应该可以访问外部网络了。
在内网机器上尝试 ping 外网 ip :
#ping 202.38.64.1 ( DNS 服务器)
如能 ping 通,则说明设置成功。
http://publish.it168.com/2007/0327/20070327003001.shtml