CentOS 双网卡双IP双网关配置

最近在折腾 Gitlab,文档里写明要开启 Pages 功能必须要两个IP地址,所以就尝试给服务器分配了两个IP,但是发现两个IP不能同时通,只有一个能用,而且是重启网卡时哪个先哪个就能用....真的是很迷(╯°□°)╯︵┻━┻
经过一番摸索,终于找到了方法可以让两个IP两个网关都跑起来~

0.操作环境

OS: CentOS 6.8
IP1: 10.20.3.199 / Gateway: 10.20.3.254 / MASK: 255.255.128.0

IP2: 10.20.100.108 / Gateway: 10.20.100.254 / MASK: 255.255.128.0

1.配置双网卡双IP

服务器本来是通过校园网的DHCP获取的IP,不过也是静态分配的,所以这次方便起见就直接关闭了DHCP功能,改成static模式。本次要先配置两个网卡的IP,并确定一个正常情况下的默认网关,本例以网卡1(eth0)的网关10.20.3.254为默认网关,后续SSH要连接网卡1的IP。

eth0: 配置网卡1

~$ vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=10.20.3.199
NETMASK=255.255.128.0
GATEWAY=10.20.3.254

保存并退出。

eth1: 配置网卡2

~$ vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=10.20.100.108
NETMASK=255.255.128.0
#GATEWAY=10.20.100.254  //这里要注释掉网卡2的网关

保存并退出。

重启网络服务:

~$ service 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.20.3.199 is already in use for device eth0...
                                                           [  OK  ]
Bringing up interface eth1:  Determining if ip address 10.20.100.108 is already in use for device eth1...
                                                           [  OK  ]

如果这时候,你的SSH没有掉线,那么配置IP这事儿就完毕了,随便找个什么IP PING一下试试,比如8.8.8.8。

2. 配置双网关

接下来,增加两个路由表,为后续的双网关做点小准备:

~$ vim /etc/iproute2/rt_tables

新增以下两行:

252 e1 
251 e0

保存并退出。

接下来要手动添加静态路由规则,可以理解为,让哪里进来的,就从哪里出去,而本机出去的呢,走默认网关10.20.3.254。

~$ ip route flush table e0
~$ ip route add default via 10.20.3.254 dev eth0 src 10.20.3.199 table e0
~$ ip route add 127.0.0.0/8 dev lo table e0
~$ ip rule add from 10.20.3.199 table e0
~$ ip route flush table e1
~$ ip route add default via 10.20.100.254 dev eth1 src 10.20.100.108 table e1
~$ ip route add 127.0.0.0/8 dev lo table e1
~$ ip rule add from 10.20.100.108 table e1

这时,从外网测试一下PING网卡2的IP,应该就能通了,而之前都是超时的……

OK,但是这个路由表设置重启就没了,所以要做点措施预防。

3.启动生效

根据我谷歌来的教程,说是可以把静态路由的命令加在 /etc/init.d/network 脚本里面,但是经过实践,似乎这个版本的CentOS会自动还原这个文件,导致自己加的东西会消失,所以,还是加到开机启动脚本里面吧。

~$ vim /etc/rc.local

在文件末尾的 exit 0 之前,加上上面那一段设置静态路由的命令,然后reboot重启一下,完事儿。

参考资料:
  1. http://longwind.blog.51cto.com/419072/806302
  2. http://www.jbxue.com/LINUXjishu/10051.html
最后修改:2017 年 12 月 14 日 04 : 57 PM
如果觉得我的文章对你有用,请随意赞赏