Linux双网卡静态路由修改
程序员文章站
2024-02-14 19:23:34
...
本人正在学习Linux运维,在做架构时需要虚拟多台服务器且配置双网卡 , 当设置好双网卡IP的配置时发现 , 系统会自动选择一个网卡作为默认路由 . 而在我的环境中系统选择的网卡并非我所想要的 , 而且将默认路由写入rc.local开机可以执行 , 但用/etc/init.d/network重启网卡配置就会出现路由恢复的问题 , 如果这是在生产环境就需要去现场处理 . 所以在网上找到一个修改静态路由帖子(原文地址会在最后贴出) , 可以在 /etc/init.d/network脚本下执行的方法 . 但在这里要说的是一点这个脚本对默认路由的改进
1. 在/etc/init.d/network查找到我们要修改的循环的位置
[[email protected] ~]# grep -n '# Add non interface-specific static-routes.' /etc/init.d/network
138: # Add non interface-specific static-routes.
[[email protected] ~]#
2. vim打开/etc/init.d/network文件找到刚才查找到行
[[email protected] ~]# vi /etc/init.d/network
打开之后
137
138 # Add non interface-specific static-routes.
139 if [ -f /etc/sysconfig/static-routes ]; then
140 grep "^any" /etc/sysconfig/static-routes | while read ignore args ; do
141 /sbin/route add -$args
142 done
143 fi
144 # Add non interface-specific static arp entries.
:set nu
将第140和141行改为
#Add noninterface-specific static-routes.
if [ -f/etc/sysconfig/static-routes ]; then
egrep "^1" /etc/sysconfig/static-routes | while read ignore args ;
do
/sbin/route $args
done
fi
这样/sbin/route命令后面就可以接任何参数 , 不用只接add
- 在 /etc/sysconfig/目录下建立static-routes,并添加命令
[[email protected] ~]# vi /etc/sysconfig/static-routes
写入
1 add default gw 10.0.0.254
1 del default gw 172.16.1.254
[[email protected] ~]# cat /etc/sysconfig/static-routes
1 add default gw 10.0.0.254
1 del default gw 172.16.1.254
[[email protected] ~]#
删除172的默认路由 同时建立10网段默认路由
这样在我们重启网卡时 最后会运行这个循环 从而改写默认路由
写法就是正常route修改路由命令 , 将route替代为1 , 在脚本中1会被替换掉
4. 验证
我在执行/sbin/route后面加了一条
do
/sbin/route $args
echo 1111111111111##############
done
让每次执行route命令时输出一个标识符 好通知已经执行
5. 最后执行验证
[[email protected] ~]# /etc/init.d/network restart
Shutting down interface eth0: [ OK ]
Shutting down interface eth1: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: Determining if ip address 10.0.0.41 is already in use for device eth0...
[ OK ]
Bringing up interface eth1: Determining if ip address 172.16.1.41 is already in use for device eth1...
[ OK ]
1111111111111##############
1111111111111##############
[[email protected] ~]#
查看路由表
[[email protected] ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
172.16.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1
0.0.0.0 10.0.0.254 0.0.0.0 UG 0 0 0 eth0
[[email protected] ~]#
静态路由成功~
由于将循环中执行的命令参数删除 ,方便添加其他参数 , 可删除或添加其他路由 , 所以应该没有损失这个脚本原来的使命 , 静态路由还是可以设置的 , 注意一下文件中写法就好了 .
文档中介绍的其他方法或其他文档的方法都试过 , 应该就是这个好用 , 在此给大家分享一下.
转载于:https://blog.51cto.com/13001576/2062912