问题背景
在我们配置服务器的时候,经常会遇到要为服务器上安装有多块网卡,并且不同网卡要设置不同的网关的问题,
比较常见的就是配置双网卡,每块网卡配置不同的网段,当配置了两个网关的时候,就会由于默认网关的问题
导致其中某一个网段不通,或者是只能接收,但是不能向外发送数据包的情况。本篇我们就来简单介绍一下如
何解决双网关的问题。
如下图,我们在一台服务器上安装了两块网卡,具体情况如下。
1、系统安装的OS为CentOS8.1,并要求可以访问外网和内网。
2、服务器上安装了两块网卡,ens192连接到10.245.54.x/24网段,该网段无法访问互联网。
3、ens224连接到172.16.0.x/24网段,该网段可以访问互联网。
4、用户A如果与ens192在相同的网段内,无需配置网关即可访问ens192的IP地址。
5、其它网段的用户或者VPN接入用户,由于需要跨路由,所以在ens192不配置网关的情况下,无法访问
ens192的IP地址。
6、如果为ens192配置了网关,导致系统中有两个网关的存在,就会产生冲突,系统无法找到默认路由。简单
理解下现在的问题就是根据业务需要,需要在同一台机器上配置不同的IP并配置不同的网关,实现不同的机
构(网段)可以访问同一台服务器上运行的业务。 下面我们来看一下具体的解决办法。
故障现像
1、两个网卡的IP地址配置如下图。
2、默认配置完网卡IP地址、网关等配置后,系统中的路由表如下图,并且无法访问外网。
解决办法
1、编辑路由表,修改vim /etc/iproute2/rt_tables,添加内容:
252 1
251 2
2、删除掉10.245.54.x网段的默认路由,然后重启网络服务。
route del default gw 10.245.54.1
systemctl restart NetworkManager
3、修改完路由表后,在系统中行执下列命令,添加原路返回路由。
ip route flush table 1
ip route add default via 10.245.54.1 dev ens192 src 10.245.54.26 table 1
ip rule add from 10.245.54.26 table 1
ip route flush table 2
ip route add default via 172.16.0.1 dev ens224 src 172.16.82.243 table 2
ip rule add from 172.16.82.243 table 2
4、此时再测试,确认可以通过10网段访问系统,同时在系统中可以ping通外网,说明双网关配置完成并可以
正常工作。
5、我们在第4步中修改的路由表是临时性的,系统重启后就会就是,对于CentOS7系统,可以将第4步中的命
令添加到/etc/rc.d/init.d/network文件的后面,这样就可以保证机器重启开机自动运行。 将这些命令
添加到“exit $rc”这一行之上即可。
6、由于CentOS8系统中已经没有init.d/network文件,所以折中的办法是将第4步中的命令写入一个脚本,
然后设置为系统启动后自动运行即可。如下图,这里我们创建一个autogw.sh脚本,然后将其添加到
/etc/rc.d/rc.local。
7、需要注意的是,需要在脚本里设置一下sleep时间,这样可以等到系统网络服务完全启动后再运行脚本,
确保脚本运行后有效果。
8、另外还有一点要注意, 需要给 /etc/rc.d/rc.local和autogw.sh添加可执行权限,否由不会开机自
动运行。
chmod +x /etc/rc.d/rc.local
chmod +x /var/autogw.sh
9、通过以上配置,双网关在系统重启后也会自动正常工作,无需手工再修改。
更多文章,请访问: www.kclouder.cn