一些网络可能拥有多个路由器/防火墙提供连接。这里有一个典型的情况:
你有一个路由可以访问Internet,你愿意用它来做你的缺省网关(参看前面的缺省网关样例)
有还有另一个路由用来访问你的公司网络,公司网络的IP范围是10.0.0.0到10.255.255.255。让我们假定这个路由的IP地址是192.168.1.254。
这个例子中的Linux机器是使用wlan0提供Internet连接的。你可能是使用eth0设备,请据此调整你的操作。
有多种方法可以添加这个新的路由。
添加临时的静态路由
route add命令可以用来添加一条新路由到你的服务器,直到下一次重启。这个方法的优势是在所有版本的Linux中都通用,而且在man里面都有详细的说明。在我们的例子里,10.0.0.0网络前面有-net参数,子网掩码和网关前面也分别有netmask和gw参数。
[root@bigboy tmp]# route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.254 wlan0
如果你想为一个单独的服务器添加路由,那么应该使用-host参数,而且不设子网掩码值(route命令会自动知道子网掩码是255.255.255.255)。这里是为机器10.0.0.1添加路由的例子。
[root@bigboy tmp]# route add -host 10.0.0.1 gw 192.168.1.254 wlan0
如果想要这个变化在重启后也能持续,一个通用的方法是把route add命令添加到/etc/rc.d/rc.local文件中,它会始终在启动过程结束前运行。
添加永久静态路由
在Fedora Linux中,永久静态路由是添加在/etc/sysconfig/network-scripts目录下对应设备文件中的。文件名的格式是route-网络设备名称,所以wlan0设备对应的文件名是route-wlan0
该文件的格式很直观,第一行是目标网络加上单词via和网关的IP地址。在我们的例子中,要设置一个到通过网关192.168.1.254 到网络10.0.0.0的路由,子网掩码是255.0.0.0(一个头8位都是1的掩码),我们像这样设置/etc/sysconfig/network-scripts/route-wlan0文件:
## ">File /etc/sysconfig/network-scripts/route-wlan0# 10.0.0.0/8 via 192.168.1.254
注意: 文件名/etc/sysconfig/network-scripts/route-*非常重要。在route-后面添加了错误的设备后缀会导致下次启动后路由不能被正确添加。而且不会在屏幕上报告错误或者在/var/log/目录下生成任何日志文件。
你可以通过运行/etc/sysconfig/network-scripts/ifup-routes命令加设备名作为参数测试新建的文件。在下面例子里,我们先检查路由表查看没有到网络10.0.0.0的路由,然后执行ifup-routes命名把路由加上。
[root@bigboy tmp]# netstat -nr Kernel IP routing table Destination
Gateway Genmask Flags MSS Window irtt Iface192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 wlan00.0.0.0
192.168.1.1 0.0.0.0 UG 0 0 0 wlan0[root@bigboy tmp]# ./ifup-routes wlan0[root@bigboy tmp]# netstat -nrKernel IP routing tableDestination Gateway Genmask Flags MSS Window irtt Iface192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 wlan010.0.0.0 192.168.1.254 255.0.0.0 UG 0 0 0 wlan00.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 wlan0[root@bigboy tmp]#
注意: 在基于Debian的系统中,永久静态路由是配置在文件/etc/network/interfaces中的。请参阅后面章节"Debian / Ubuntu网络配置"以了解更多详情。