CentOS添加永久静态路由

今天又有朋友问,如何在CentOS里添加永久静态路由?这里总结一下,做个备忘录。
参考RedHat Enterprise 6的官方文档:

 

我们的服务器一般启用两个网卡,一个配内网地址,一个配外网地址,但我们一般只为外网卡配置默认网关。因为如果两个网卡都配置默认网关的话,数据包出去的时候会不知道该走哪个网关。

本机跟其它机器通信时,会把数据包发送到默认网关,然后默认网关把数据包转发到目的主机。由于配置了外网网卡的默认网关,所以本机与目的主机的外网IP进行通信是OK的;但是与内网IP进行通信就没办法了,因为默认网关无法到达内网网段。(当然,如果这台LINUX机器开启了路由转发就另当别论了。)

为了与内网网段中的机器进行通信,我们写一条静态路由,来指定一个通向内网网段的路径。本文讲的就是如何在CentOS中添加永久静态路由。

 

添加永久静态路由的方法是,把路由表写入/etc/sysconfig/network-scripts/route-interface配置文件中。interface是你的网卡,如eth1的静态路由配置文件就是route-eth1。

route-interface配置文件有两种写法:ip命令格式和network/netmask格式:

ip命令格式:

default via gateway dev interface  // gateway替换成你的默认网关,interface替换成你的网卡ip/netmask via  gateway devinterface …  // 根据需要添加更多的静态路由

  

network/netmask指令格式: 

ADDRESS0=网段,该网段即你想要到达的网段 NETMASK0=掩码 GATEWAY0=网关地址,该网关为本网卡的出口网关,它能够到达ADDRESS0 …  // 根据需要添加更多的静态路由...

我们以第一种ip命令格式为例进行说明。
按照官方网站的说法,路由表中的default路由可以省略,因为使用的是默认网关。
重点是第二条路由,它指向了我们所希望到达的特定网段。ip/netmask是你想要到达的网段,gateway是本网卡的出口网关,interface指定网卡。

 

我们看一段网上的示例,该配置为网卡eth0添加了两条静态路由:

10.0.0.0/8 via 10.126.40.254 

192.168.188.0/22 via 10.126.40.254

上述配置添加了两条静态路由,分别指向了10.0.0.0/8网段,以及 192.168.188.0/22网段。10.126.40.254即是eth0的出口网关。
上述配置来自于:?p=346。

 

我自己的服务器配置示例,为网卡eth1配置了两条静态路由:

GATEWAY0=10.10.14.254 NETMASK0=255.255.0.0 ADDRESS0=192.168.0.0  GATEWAY1=10.10.14.254 NETMASK1=255.255.0.0 ADDRESS1=10.10.0.0  我们也是添加了两条静态路由,分别指向了10.10.0.0/16网段和192.168.0.0/16网段,使用网卡eth1的出口网关10.10.14.254。
官方提示,使用该格式时,如果有多条静态路由,每条静态路由必须按顺序编号,如ADDRESS0, ADDRESS1, ADDRESS2等,不能跳着编号。


注:网上有资料说,第二条路由中的gateway是下一跳的网关。我特地去问了网络部的同事,他说那是不对的,那个gateway实际上是本网卡的出口网关。
第一条default路由中的gateway,即是外网网卡的默认网关。
第二条路由中的gateway(网卡的出口网关)和default路由中的gateway(默认网关)有什么区别?RedHat Enterprise 6的官方文档中说:
 The X.X.X.X (指网卡的出口网关)address does not have to be the default gateway IP address。In most cases, X.X.X.X will be an IP address in a different subnet,and interface will be the interface that is connected to, or can reach, that subnet。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/22821.html