【route】Linux上静态路由的添加
一、背景知识
在日常的使用中,或者在服务器中,有多个网卡配置多个地址,访问不同的网络段,这种情况是非常常见的现象,但是,我们需要额外的添加路由表来决定发送的数据包经过正确的网关和interface才能正确的进行通信 。
在哪种情况下,为什么,需要在Linux服务器上添加静态路由?
route命令用来显示并设置Linux内核中的网络路由表,route命令设置的路由主要是静态路由。
实现两个不同子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。
如果Linux服务器有多网卡,需要有些网卡走指定的路由,就需要单独设置静态路由。
服务器有多网卡,需要访问内网的另一个网段,不能通过默认网关访问,此时就需要添加静态路由
Linux系统在一个局域网中,局域网有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设置为Linux机器的默认路由。
注意:直接在命令行下执行route命令来添加路由,只是临时生效,当网卡或者机器重启之后,该路由条目就失效了。
说明:
其中Flags为路由标志,编辑当前网络节点的状态
·U up代表路由当前为启动状态
·H host表示此网关为一个主机
·G gateway此网关为一个路由器
·R reinstate route使用动态路由重新初始化的路由
·D dynamically,此路由是动态写入的
·M modified是有路由守护程序或导向器修改
·! 此路由当前为关闭状态
代理ARP:路由下一跳是接口还是IP设备的最大区别就是ARP表的区别:下一跳是IP设备的话,外LAN数据包毫无疑问交给了IP网关,但是如果下一跳只是接口的话这个是需要单独对目标ip做arp解析的,如果IP网关上没有开启接口的proxy arp feature的话是不会响应这个arp请求的。
二、静态路由的添加方式
方式一
静态路由的添加
# route add -net 192.168.0.0/24 gw 192.168.0.1
# route del -net 192.168.0.0/24 gw 192.168.0.1 dev eth0
# route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.0.1
# route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.0.1 dev eth0
# route add -host 192.168.1.1 dev eth0
######################################################################
route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.25.230.1 dev eth3
route add -net 100.0.0.0 netmask 255.0.0.0 gw 10.25.230.1 dev eth3
iptables -t nat -A PREROUTING --dport 8443 -j DNAT --to-destination 192.168.1.120
iptables -t nat -A POSTROUTING --dport 8443 -j MASQUERADE
#######################################################################
静态路由的删除
# route del 192.168.0.0/24 gw 192.168.0.1
# route del -net 192.168.0.0/24 gw 192.168.0.1 dev eth0
# route del -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.0.1
# route del -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.0.1 dev eth0
# route del -host 192.168.1.1 dev eth0
增加默认路由
# route add default gw 192.168.0.1
注:添加默认网关地址, 也就是默认路由的下一跳,默认路由一条就够了。
说明:
add 增加路由
del 删除路由
-net 设置到某个网段的路由
-host 设置到某台主机的路由
gw 出口网关的IP地址
dev 出口网关物理设备名
方式二
添加路由
# ip route add 192.168.0.0/24 via 192.168.0.1
# ip route add 192.168.1.1 dev eth0
删除路由
# ip route del 192.168.0.0/24 via 192.168.0.1
# ip route del 192.168.1.1 dev eth0
说明:
add 增加路由
del 删除路由
via 网关出口 IP地址
dev 网关出口 物理设备名
增加默认路由
# ip route add default via 192.168.0.1 dev eth0
注: via 192.168.0.1 指向默认路由器
三、如何在Linux中添加永久路由
我们直接在命令行下执行route命令来添加路由,只是临时生效,当网卡或者机器重启之后,该路由条目就失效了。
怎么实现路由添加的永久生效呢?
1、写入/etc/rc.loacl
可以将上面提到的命令写入/etc/rc.local文件中,这样在系统启动的时候会自动加入相关的路由设置。
不过这种方法有一个缺点:如果某个系统服务,比如说是NFS服务,这个服务是在启动network服务之后,在执行rc.local之前,如果你设置的有自动挂载的nfs,那么,这里链路的不通畅,会造成挂载的失败。
另外一个就是如果你重启了网络服务,那么路由就失效了,这个时候你不得不重新加载这个文件,但是如果你是远程操作的呢?
如果你的应用对网络要求比较特殊,不建议使用此方法。
2、写入/etc/sysconfig/static-routes文件
默认在/etc/sysconifg目录中是没有这个文件的,需要我们手工创建,对这个文件的调用在network服务的启动脚本中。
# vim /etc/init.d/network
# vim /etc/sysconfig/static-routes
#################################################
any net 192.168.1.0/24 gw 192.168.1.1
any net 192.168.2.0 netmask 255.255.255.0 gw 192.168.2.1
#################################################
注: 务必注意 /etc/sysconfig/static-routes 文件中路由添加的语法。
这种方式的话,和rc.local比较而言,比较实用,比如nfs,这个路由的生效时间是在网络服务network启动的时候生效的,而其他的一些网络相关服务都是在网络服务启动成功之后再启动的,所以能够保证网络链路的通畅。
如果重启了网络服务,这个脚本是在网络服务启动脚本里面调用的,所以也会自动添加上相关的路由设置。
四、参考
Linux添加静态路由表,重启继续生效
http://blog.sina.com.cn/s/blog_67be3b450101de43.html
Linux 重启网络服务后路由表丢失问题的解决方案
https://www.iteye.com/blog/yjy110-2205338
Linux 添加静态路由
https://blog.csdn.net/moreorless/article/details/5397427
设置EIP网卡可见模式
https://help.aliyun.com/knowledge_detail/98641.html?scm=20140722.184.2.173
Linux下永久添加静态路由
https://www.cnblogs.com/wanghuaijun/p/8059664.html
更多推荐
所有评论(0)