实例解析—用Linux操作系统构建的路由器
一.网络整体框架
网络结构如图,
Linux路由器这台计算机标识为A,它与三个网段相连,192.168.1.0/24,10.0.0.0/8,172.16.0.0/16.
A计算机必须拥有三块网卡,分别与三个网段相连。
假设:
eth0与172.16.0.0相连,
eth1与10.0.0.0相连,
eth2与192.168.1.0相连。
二.具体网络设置
2.1配置eth0
首先来配置eth0.给这个网络接口分配地址172.16.1.1,运行下列命令:
# ifconfig eth0 172.16.1.1 netmask 255.255.0.0
为了使这个地址不再计算机重新启动后消失,编辑/etc/sysconfig/network-scripts/ifcfg-eth0文件,修改为如下格式:
DEVICE = eth0
ONBOOT = yes
BROADCAST = 172.16.255.255
NETWORK = 172.16.0.0
NETMASK = 255.255.0.0
IPADDR = 172.16.1.1
|
增加一条静态路由:
# route add -net 172.16.0.0 netmask 255.255.0.0
这样系统中就增加了一条静态路由:
# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.0.0 * 255.255.0.0 U 0 0 0 eth0
2.2配置eth1
接下来,配置eth1,eth1与10.0.0.0网段相连,分配给它的地址是10.254.254.254,使用ifconfig命令为它配置参数:
# ifconfig eth1 10.254.254.254 netmask 255.0.0.0
同样编辑/etc/sysconfig/network-scripts目录下的ifcfg-eth1文件,内容如下:
DEVICE = eth1
ONBOOT = yes
BROADCAST = 10.255.255.255
NETWORK = 10.0.0.0
NETMASK = 255.0.0.0
IPADDR = 10.254.254.254
|
再增加一条静态路由:
# route add -net 10.0.0.0 netmask 255.0.0.0
网络中当前的路由表为
# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.0.0 * 255.255.0.0 U 0 0 0 et
|
2.3配置eth3
最后配置eth3,它连接192.168.1.0网段,分配的IP地址是192.168.1.254,执行下列命令:
# ifconfig eth2 192.168.1.254 netmask 255.255.255.0
编辑/etc/sysconfig/network-scripts目录下的ifcfg-eth2文件,内容如下:
DEVICE = eth2
ONBOOT = yes
BROADCAST = 192.168.1.255
NETWORK = 192.168.1.0
NETMASK = 255.255.255.0
IPADDR = 192.168.1.254
|
再增加一条静态路由:
# route add -net 192.168.1.0 netmask 255.255.255.0
这样网络中就有三条静态路由记录了:
# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.0.0 * 255.255.0.0 U 0 0 0 eth0
10.0.0.0 * 255.0.0.0 U 0 0 0 eth1
192.168.1.0 * 255.255.255.0 U 0 0 0 eth2
|
2.4配置缺省路由和系统转发
2.4.1建立缺省路由
还要为系统增加一条缺省路由,因为缺省的路由是把所有的数据包都发往它的上一级网关(假设地址是172.16.1.100,这个地址依赖于使用的网络而定,由网络管理员分配),因此增加如下的缺省路由记录:
# route add default gw 172.16.1.100
或者
#ip route add default via 172.16.1.100 dev eth0
这样系统的静态路由表建立完成,它的内容是
# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.0.0 * 255.255.0.0 U 0 0 0 eth0
10.0.0.0 * 255.0.0.0 U 0 0 0 eth1
192.168.1.0 * 255.255.255.0 U 0 0 0 eth2
default 172.16.1.100 0.0.0.0 UG 0 0 0 eth0
|
2.4.2建立路由转发
最后一步,要增加系统的IP转发功能。这个功能由/proc/sys/net/ipv4目录下的ip_forward文件控制,执行如下命令打开ip转发功能:
echo 1 > /proc/sys/net/ipv4/ip_forward
或者
/etc/sysctl.conf文件,让包转发功能在系统启动时自动生效:
# Controls IP packet forwarding
net.ipv4.ip_forward = 1
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
#iptables -t nat -A POSTROUTING -s 192.168.1.0/255.255.255.0 -o eth1 -j MASQUERADE
参数说明:
-t nat:调用NAT表,调用这个说明遇到了产生新的连接的包。
-A POSTROUTIN:指定信息包打算离开防火墙时改变它们的规则,意即使用NAT。
-s 192.168.1.0/255.255.255.0:要进行NAT转换的源地址,也就是内网地址。
-o eht0:输出接口为eth0。
-j MASQUERADE:指定进行地址伪装,意即将内网地址伪装成外接口eth0的地址进行传输。
整条语句的意思就是将内网向外连接的数据包的地址转换为外网接口的地址并从外接口转发,同时外
网访问内网的连接将被映射到相应的内网地址。
Iptables上的设置可用命令iptables -t nat –nvL查看。
保存iptables配置。
/etc/rc.d/init.d/iptables save
使用这条命令就可以将iptables配置写入到文件/etc/sysconfig/iptables中去了。
重启iptables使配置生效。
service iptables restart
2.4.3 常用命令
ip route del default
iptables -t filter –nvL
iptables -t nat -nvL
ip route ls
ip route delete 169.254.0.0/16
service iptables save
watch iptables -nvL
|
三.测试路由器的工作情况。
在linux路由器上测试:
第一步,测试自身网络是否工作正常,执行如下命令
ping 172.16.1.1
ping 192.168.1.254
ping 10.254.254.254
如果这些地址都能ping通,则第一步通过,否则查找原因,排除错误。
第二步,测试与上一级网关之间是否连通
ping 172.16.1.100
如果通畅,则正常;否则查找错误原因。
在192.168.1.0网络内测试,假设它的地址是192.168.1.1,
第一步,测试自身是否工作正常, ping 192.168.1.1
第二步,测试与网关是否连通, ping 192.168.1.254
第三步,测试与10.254.254.99是否连通,这是10.0.0.0网段内的一台计算机 ping 10.254.254.99
第四步,测试与外网地址是否连通 ping 172.16.1.100 如果连通了,表示路由器配置正确,否则,查找原因,并排除之。