CentOS添加永久静态路由-阿里云开发者社区

开发者社区> 开发与运维> 正文

CentOS添加永久静态路由

简介:
今天又有朋友问,如何在CentOS里添加永久静态路由?这里总结一下,做个备忘录。
参考RedHat Enterprise 6的官方文档:
http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/s1-networkscripts-static-routes.html
 
我们的服务器一般启用两个网卡,一个配内网地址,一个配外网地址,但我们一般只为外网卡配置默认网关。因为如果两个网卡都配置默认网关的话,数据包出去的时候会不知道该走哪个网关。
本机跟其它机器通信时,会把数据包发送到默认网关,然后默认网关把数据包转发到目的主机。由于配置了外网网卡的默认网关,所以本机与目的主机的外网IP进行通信是OK的;但是与内网IP进行通信就没办法了,因为默认网关无法到达内网网段。(当然,如果这台LINUX机器开启了路由转发就另当别论了。)
为了与内网网段中的机器进行通信,我们写一条静态路由,来指定一个通向内网网段的路径。本文讲的就是如何在CentOS中添加永久静态路由。
 
添加永久静态路由的方法是,把路由表写入/etc/sysconfig/network-scripts/route-interface配置文件中。interface是你的网卡,如eth1的静态路由配置文件就是route-eth1。
route-interface配置文件有两种写法:ip命令格式和network/netmask格式:
ip命令格式:

  1. default via gateway dev interface  // gateway替换成你的默认网关,interface替换成你的网卡
  2. ip/netmask via  gateway dev interface 
  3. …  // 根据需要添加更多的静态路由
  4.   
network/netmask指令格式: 

  1. ADDRESS0=网段,该网段即你想要到达的网段 
  2. NETMASK0=掩码 
  3. GATEWAY0=网关地址,该网关为本网卡的出口网关,它能够到达ADDRESS0 
  4. …  // 根据需要添加更多的静态路由
  5. ...
我们以第一种ip命令格式为例进行说明。
按照官方网站的说法,路由表中的default路由可以省略,因为使用的是默认网关。
重点是第二条路由,它指向了我们所希望到达的特定网段。ip/netmask是你想要到达的网段,gateway是本网卡的出口网关,interface指定网卡。
 
我们看一段网上的示例,该配置为网卡eth0添加了两条静态路由:

  1. 10.0.0.0/8 via 10.126.40.254 
  2. 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的出口网关。
上述配置来自于:http://www.m690.com/?p=346。
 
我自己的服务器配置示例,为网卡eth1配置了两条静态路由:

  1. GATEWAY0=10.10.14.254 
  2. NETMASK0=255.255.0.0 
  3. ADDRESS0=192.168.0.0 
  4.  
  5. GATEWAY1=10.10.14.254 
  6. NETMASK1=255.255.0.0 
  7. 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。
文档中所说的different subnet指的是与默认网关不同的子网,该子网必须与interface的IP在同一网段。这里的子网一般是指内网网卡所在子网,这里的gateway一般是指内网网卡的网关。

本文转自 li_qinshan 51CTO博客,原文链接:http://blog.51cto.com/share/753192

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章