linux--添加、修改、删除路由
在⽇常的使⽤中,或者在服务器中,有两个⽹卡配置两个地址,访问不同的⽹络段,这种情况是⾮常常见的现象,但是,我们需要额外的添加路由表来决定发送的数据包经过正确的⽹关和interface才能正确的进⾏通信
显⽰现在所有路由
#route
root@:~# route
Kernel IP routing table
Destination    Gateway        Genmask        Flags Metric Ref    Use Iface
10.147.9.0      *              255.255.255.0  U    1      0        0 eth0
192.168.1.0    *              255.255.255.0  U    2      0        0 wlan0
192.168.122.0  *              255.255.255.0  U    0      0        0 virbr0
link-local      *              255.255.0.0    U    1000  0        0 eth0
192.168.0.0    192.168.1.1    255.255.0.0    UG    0      0        0 wlan0
default        10.147.9.1      0.0.0.0        UG    0      0        0 eth0
root@ubuntu:~#
结果是⾃上⽽下,就是说,哪条在前⾯,哪条就有优先,前⾯都没有,就⽤最后⼀条default
Destination:为路由⽬标,可以是⽹络或主机的IP地址;
Gateway:包含默认⽹关或通过其可访问主机或⽹络的⽹关;
Genmask:包含⽹关后的⽹络或主机的⼦⽹掩码;
Iface:表⽰该条路由从哪个设备出去。
举例,添加⼀条路由(发往192.168.62这个⽹段的全部要经过⽹关192.168.1.1)
route add -net 192.168.62.0 netmask 255.255.255.0 gw 192.168.1.1
删除⼀条路由
route del -net 192.168.122.0 netmask 255.255.255.0
删除的时候不⽤写⽹关
linux下添加路由的⽅法:
⼀:使⽤ route 命令添加
使⽤route 命令添加的路由,机器重启或者⽹卡重启后路由就失效了,⽅法:
//添加到主机的路由
# route add –host 192.168.168.110 dev eth0
# route add –host 192.168.168.119 gw 192.168.168.1
//添加到⽹络的路由
# route add –net IP netmask MASK eth0
# route add –net IP netmask MASK gw IP
# route add –net IP/24 eth1
//添加默认⽹关
# route add default gw IP
//删除路由
# route del –host 192.168.168.110 dev eth0
⼆:在linux下设置永久路由的⽅法:
1.在/etc/rc.local⾥添加
⽅法:
route add -net 192.168.3.0/24 dev eth0
route add -net 192.168.2.0/24 gw 192.168.2.254
route add –net 180.200.0.0 netmask 255.255.0.0 gw 10.200.6.201 dev eth0 metric 1
route add:命令关键字,表⽰增加路由,若要删除路由,则为route del;
-host/-net:表⽰路由⽬标是主机还是⽹段;
netmask:表⽰路由⽬标为⽹段时才会使⽤到,表⽰路由⽬标⽹段的⼦⽹掩码;
gw:命令关键字,后⾯跟下⼀跳⽹关;
dev:命令关键字,后⾯跟具体设备名,表⽰路由是从该设备出去。
metric:为路由指定所需的整数值(范围是 1 ~ 9999),它⽤来在⾥的多个路由中选择与转发包中的⽬标地址最为匹配的路由。所选的路由具有最少的跃点数。跃点数能够反映跃点的数量、路径的速度、路径可靠性、路径吞吐量以及管理属性。
2.在/etc/sysconfig/network⾥添加到末尾
⽅法:GATEWAY=gw-ip 或者 GATEWAY=gw-dev
3./etc/sysconfig/static-routes :
any net 192.168.3.0/24 gw 192.168.3.254
any net 10.250.228.128 netmask 255.255.255.192 gw 10.250.228.129
如果在rc.local中添加路由会造成NFS(⽹络⽂件系统,是FreeBSD⽀持的⽂件系统中的⼀种,它允许⽹络中的计算机之间通过TCP/IP⽹络共享资源)⽆法⾃动挂载问题,所以使⽤static-routes的⽅法是最好的。⽆论重启系统和service network restart 都会⽣效
以下是解决NFS问题的描述:
按照linux启动的顺序,rc.local⾥⾯的内容是在linux所有服务都启动完毕,最后才被执⾏的,也就是说,这⾥⾯的内容是在netfs之后才被执⾏的,那也就是说在netfs启动的时候,服务器上的静态路由是没有被添加的,所以netfs挂载不能成功。⽽且,如果你重启了⽹络服务器,那么路由就失效了,这个时候你不得不重新加载这个⽂件了。
static-routes⽂件⼜是什么呢,这个是network脚本执⾏时调⽤的⼀个⽂件,这个⽂件的放置在/etc/sysconfig⽬录下,在network脚本中的位置是:
# Add non interface-specific static-routes.
if [ -f /etc/sysconfig/static-routes ]; then
grep "^any" /etc/sysconfig/static-routes | while read ignore args ; do
/sbin/route add -$args
done
fi
route add命令实例
从这段脚本可以看到,这个就是添加静态路由的⽅法,static-routes的写法是
any net 192.168.0.0/16 gw ⽹关ip
这样的话,在启动network脚本的时候路由就⾃动添加上了,⼜因为network是在netfs前⾯启动的,⾃然在挂载nfs的时候就正常了。
这样看来,如果需要添加静态路由,使⽤static-routes⽂件要⽐使⽤rc.local好,⽽且当改变了⽹络配置,需要重启network脚本的时候,相应的静态路由是可以⾃动添加上的,但这时如果使⽤rc.local的话,在重启network服务的时候,原本添加好的静态路由就消失了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。