【Ubuntu18】Ubuntu18.04下双网卡内外网设置

写在开篇:在使用双网卡搭建dhcp server的时候(有兴趣可以看上一篇文章,有搭建过程),遇到了双网关ping不通的问题,在同事帮助下解决了问题,解决的思路与下文转载的这篇有些像,很值得参考。(话说这个同事用的也是绿色界面,让我一度以为这篇文章是不是就是他本人hhh)


在安装了18.04服务器版本后,要对网关进行配置,在之前默认都在/etc/network/interfaces配置文件上配置
【Ubuntu18】Ubuntu18.04下双网卡内外网设置
文章图片

然后习惯性的重启网络
systemctl restart network
提示无效
【Ubuntu18】Ubuntu18.04下双网卡内外网设置
文章图片

重启机器后,这个网卡也是没用生效,说明配置文件没有起作用。
在查询一番资料后,发现,之前那些操作是多年以来的做法。但是现在,在某些发行版上(例如 Ubuntu Linux 18.04),网络的配置与控制发生了很大的变化。不需要那个 interfaces 文件和 /etc/init.d/networking 脚本,我们现在转向使用 Netplan。Netplan 是一个在某些 Linux 发行版上配置网络连接的命令行工具。Netplan 使用 YAML 描述文件来配置网络接口,然后,通过这些描述为任何给定的呈现工具生成必要的配置选项。
cd /etc/netplan 进入文件夹
【Ubuntu18】Ubuntu18.04下双网卡内外网设置
文章图片

打开yaml文件

vim /etc/netplan/50-cloud-init.yaml


文件的布局看起来就像这样:
network: Version: 2 Renderer: networkd ethernets: DEVICE_NAME: Dhcp4: yes/no Addresses: [IP/NETMASK] Gateway: GATEWAY Nameservers: Addresses: [NAMESERVER, NAMESERVER]



主要是配置ethernets里的参数:
DEVICE_NAME 是需要配置设备的实际名称。
Dhcp4: yes / no 代表IPv4是否启用 dhcp 对应的IPv6 就是Dhcp6:yes / no
Addresses 是设备的 IP 地址。
NETMASK 是 IP 地址的掩码。
GATEWAY 是网关的地址。
NAMESERVER 是由逗号分开的 DNS 服务器列表。
例如以下这样的配置
network: version: 2 renderer: networkd ethernets: enp1s0: dhcp4: no addresses: [192.168.1.230/24] gateway: 192.168.1.254 nameservers: addresses: [8.8.4.4,8.8.8.8]


配置完后,可以使用测试命令看配置是否成功
sudo netplan try


【Ubuntu18】Ubuntu18.04下双网卡内外网设置
文章图片


上面的命令会在应用配置之前验证其是否有效。如果成功,你就会看到配置被接受。换句话说,Netplan 会尝试将新的配置应用到运行的系统上。如果新的配置失败了,Netplan 会自动地恢复到之前使用的配置。成功后,新的配置就会被使用。
如果对配置完全没问题了,可以直接使用 应用新配置的命令
sudo netplan apply


通过ifconfig命令可以查看网卡是否获取到IP
【【Ubuntu18】Ubuntu18.04下双网卡内外网设置】【Ubuntu18】Ubuntu18.04下双网卡内外网设置
文章图片

网卡1是我们设置的静态固定ip,连接30网段的内网,网卡2是我们设置的DHCP ,连接0网段的可通外网。
互相ping了30网段的机器和0网段的机器,都是显示通讯正常。
但是笔者的笔记本接入的是无线网的2网段,发现ping不通网卡2的192.168.0.70。但是笔记本能Ping通0网段的网关,网卡2也可以Ping通2网段的网关。于是就思考,是否是系统的路由转发有问题了
sudo route -n


出现以下的信息
Kernel IP routing table DestinationGatewayGenmaskFlags Metric RefUse Iface 0.0.0.0192.169.30.2540.0.0.0UG10000 enp1s0 0.0.0.0192.168.0.2540.0.0.0UG10000 enp2s0 10.64.64.640.0.0.0255.255.255.255 UH000 ppp0 192.168.0.00.0.0.0255.255.255.0U000 enp2s0 192.168.0.2540.0.0.0255.255.255.255 UH10000 enp2s0 192.168.30.00.0.0.0255.255.255.0U000 enp1s0


发现有两条默认路由,0.0.0.0 都指向了两个不同的网卡出口和默认网关。对于指向30.254的这条默认网关是没用的
执行
sudo route del default gw 192.168.30.254


现在从笔记本就可以远程连接0.70设备了。
本以为这样就解决问题了,连接完设备,把文件部署好后,重启下系统,发现又连接不上了
再次登陆设备检查,发现路由表中已删除的默认路由又出现了,也就是说route del只是临时删除,重启设备或者类似netplan apply 重启服务的操作都会让默认路由重新生成。在又一番查找资料后,发现,默认路由是根据你网关配置自动生成的,那我在网卡1中不设置网关,30网段的通信都是指向型的通信,都是内网固定IP这样,没有网关并不会影响通信。于是进配置文件修改
如下
【Ubuntu18】Ubuntu18.04下双网卡内外网设置
文章图片

删除了enp1s0的gateway.这里要删除整行,不能就删除网关ip,不然重启服务后,会提示你网关所在的行数里缺少参数,需要填入IP地址。
修改完配置文件后,重启网络
sudo netplan apply


查看路由表
sudo route -n

【Ubuntu18】Ubuntu18.04下双网卡内外网设置
文章图片

完美。各自Ping通了内外网。
————————————————
版权声明:本文为CSDN博主「大橘为重之大橘已定」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/tjsxin/article/details/94390346

    推荐阅读