linux(centos7)中双网卡指定路由上外网,实现内外网多网卡共存

环境:一台服务器,双网卡,需要同时访问外网和内网。

在设置过程中,原本好用的内网地址(192.168.1.200)在设置上外网地址(多网卡多网段)后变的不好用,如果停止外网网卡,内网就可以正常访问了。

要解决这个问题,得先在设置了内网之后,再设置外网。给外网设置了网关之后,因为没有设置默认网关,导致内网的IP也会走外网的网关,所以就不能联网了。

查看所有网卡硬件:
# ip link show

我们要做的是让内网(对应的网络)走对应的网卡:
内网网卡:eno16777984 192.168.1.200    网关:192.168.1.1
外网网卡 : eno33557248  192.268.2.200    网关:192.268.2.1

首先设置默认网关,让所有IP包默认情况下均通过 192.168.2.1 进行转发(因为在配置好网卡之后,系统自动会增加相应的路由,在此只需把原来的外网路由删掉,再重新添加一下,让路由的位置靠前就可以了):
# route del default gw 192.168.2.1 eno33557248
# route add default gw 192.168.2.1 eno33557248

然后,单独为内网设置网关
# route add -net 192.168.1.0/24 gw 192.168.1.1 eno16777984
# route add -net 172.16.0.0/16 gw 192.168.1.1 eno16777984
# route add -net 192.168.2.0/24 gw 192.168.2.1 eno33557248

路由添加的最好是要加到开机启动上
# vi /etc/rc.local
把上面的执行的代码放进去

在centos7上,在/etc/rc.local中加入执行代码后不起作用,需要做一个可执行文件:
# mkdir -p /data/server_data/route
# vi /data/server_data/route/myroute.sh
内容如下:
#!/bin/bash
route add -net 192.168.1.0/24 gw 192.168.1.1 eno16777984 &
route add -net 172.16.0.0/16 gw 192.168.1.1 eno16777984 &
route add -net 192.168.2.0/24 gw 192.168.2.1 eno33557248 &
route del default gw 192.168.2.1 eno33557248 &
route add default gw 192.168.2.1 eno33557248 &
保存退出
# chmod +x /data/server_data/route/myroute.sh

(本文出自php_sir的新浪博客,首页链接:http://blog.sina.com.cn/phpsir,未经本人(php_sir)同意禁止转载)

新建开机启动服务:

# vi /lib/systemd/system/myroute.service
内容如下:

[Unit]
Description=myroute
After=network.target

[Service]
Type=forking
ExecStart=/data/server_data/route/myroute.sh
ExecStop=/bin/kill -WINCH ${MAINPID}
PrivateTmp=true

[Install]
WantedBy=multi-user.target

保存退出

增加自启动服务:
# systemctl enable myroute
# systemctl start myroute

发表评论

电子邮件地址不会被公开。 必填项已用*标注