配置文件解释:
192.168.12.21只有一个接口eth0;
子网掩码为255.255.255.0,所以prefix-length为24
fea 规定了使能的协议簇,这里是ipv4
在protocol中规定了路由协议(路由选择协议)
规定是static,即静态路由协议,路由协议的下一跳为192.168.12.254,这是实验室的路由器。
测试主机:实验室另外一台电脑:ip :192.168.12.22 系统:centos
修改默认网关:vim /etc/sysconfig/network-scripts/ifcfg-eth0
将gateway由原来的 192.168.12.254改为192.168.12.21
测试:
查看测试机器路由表:
这里现学现卖,解释下route -n命令的含义,,其中Destination和Genmake构成了完整的网域,Gateway告诉在该网域下通过哪个网关发送包,U代表这个路由是启动的,G表示要将包发给目标地址,还需要外部其他Gateway来传递封包。下面结合上面的图片解释下:
第一行,由destination和genmask可知,这是Class C的网域,使我们实验室的内网,ip范围为192.168.12.0-192.168.12.255(具体计算请参考鸟哥私房菜路由部分),Gateway为0.0.0.0,表示在该网域下的主机,不同过路由器进行转发,而是直接通过MAC直接进行通信。
第二行,169.254.0.0/16 ,这是一个Class B的网域,是保留的链路本地字段,这些地址仅在链路上有效(如一段本地网络或一个端到端连接),不可路由,链路本地地址主要被用于地址自动配置:当主机不能从DHCP服务器处获得IP地址时,它会用这种方法生成一个。
第三行,0.0.0.0/0,这是最大的网域,也是我们每天在使用的网域。因为我之前的配置,如果192.168.12.22这台机器需要访问外部网络,需要将封包发给192.168.12.21的路由器,再由它进行封包转发。Falg为UG,代表该路由器已启动,需要外部路由完成转发。
到这里就证明了我的xorp静态路由是设置成功了的。
那我如果把192.168.12.21上的路由器关掉会怎么办?会导致192.168.12.22无法连到外网吗?
以下是我把xorp服务器关掉后的结果。
显示它修改了下一跳,改为192.168.12.254,这就是实验室的路由地址,很奇怪吧。。。
再查看下路由表
因为配置的静态路由,路由表并没有改变。
那是什么原理使得当主机发现网关不可用时,自动地将封包发给别的网关呢?
在linux下/etc/sysconfig/network-scripts/目录下也没有找到关于路由的东西。
经过网上查询资料发现,运行/xorp后,其实linux自带的ip封包转发功能已经被打开了,linux提供的封包转发功能开启在如下文件配置:
/proc/sys/net/ipv4/ip_forward
所以使用xorp作为路由器,最起码在静态路由的情况下,即使该主机上的xorp停止工作,也不会导致该路由器下的所有子网瘫痪,仍能够进行静态路由封包的转发。