上一篇文章我们介绍了如何在CentOS/RHEL中配置双网关,用户也许还会使用Ubuntu系统,所以今天本篇
我们就来简单介绍一下如何在Ubuntu系统中配置双网关。Ubuntu较新的版本与老版本配置上会有一些差异
,主要是在网管理功能这方面新旧版本会有很大的不同,Ubuntu从17.10开始,已放弃在/etc/network/
interfaces里固定IP的配置,即使配置也不会生效,而是改成netplan方式 ,配置写在/etc/netplan/
01-netcfg.yaml或者类似名称的yaml文件里。本文使用的是Ubuntu Server 18.04。
我们还是以下图中的拓扑为例,具体情况与CentOS的文章中一样,现在我们的目的就是要让VPN用户接入公
司内网后,可以通过内部网段访问到主机,同时主机通过另外一个网段可以访问到互联网,由于大量网关的
存在,所以这两个网卡都必须要配置上网关才能与本网段以外的网络通信,通过配置需要使系统中的两个网
关都可用。
问题背景
1、两个网卡都通过DHCP自动获取IP地址、网关和DNS信息。ens160是内网网卡,该IP地址不能访问互联网,
ens192连接的网络通过路由可以访问互联网。
2、系统安装完成后,可以通过10段登录到主机,但是发现主机无法访问互联网。
3、如下图,查看路由信息,可以看到有两个default网关,并且Metric值相同,都是100。
解决办法
1、首先,我们需要将能够访问互联网的网卡的的Metric度量修改为0,这意味着它的优先级将高于另一个
网卡。执行以下操作完成修改。
sudo cp /run/systemd/network/10-netplan-ens192.network /etc/systemd/network/
2、编辑配置文件,把RouteMetric=100修改成等于0。
3、修改完成后,我们会发现主机可以访问互联网了,也就是ens192所在的网关现在工作正常了。但是随
之而来的问题是原来可以正常工作的内网网关无法正常工作了,无法再通过内网IP地址连接到这台主机。
主要原因就是现在系统的default网关变成了ens192,而ens160的网关即使它可以收到数据包,但是它的
包发不出去,也就是远端设备收不到回包。
4、这时我们就需要再添加一个静态路由来解决无法远程访问的问题,例如无法SSH远程登录主机。
5、编辑/etc/netplan/下的yaml文件,也许是01-network-manager-all.yaml文件,也可能是
50-cloud-init.yaml文件,我这里是后者。下图是未编辑时的样子。
6、下图是编辑完成的样子,主要是在ens160下面添加静态路由。这里要注意的就是格式问题, yaml文件
有层次结构,需要缩进,冒号(:)表示字典,连字符(-)表示列表,冒号出现的后面一定要有一个空格。
7、编辑完成后, 执行以下命令来应用新的设置。
netplan apply
8、再次查看路由表,可以看到外网网关的Metric值变为0,同时增加了一条到内网静态路由。
9、这时再测试,确认要以通过VPN接入内网访问主机,同时在系统中可以ping通外网,说明双网关配置可
以正常工作了。