Ubuntu 禁用 Netplan 改用 ifupdown 配置网络
自 Ubuntu 17.10 后网络配置方式有了变化,由原来的 ifupdown 改为了 Netplan 程序。虽然网上可以轻易找到 Netplan 配置教程,但对于需要沿用 ifupdown 的场景会带来障碍。面对复杂的网络配置,Netplan 还是用着不顺手。
本文介绍如何禁用 Netplan 改回使用 ifupdown 配置网络,并将 DNS 管理由 systemd-resolved 改回 resolvconf。
在 Ubuntu 初始安装过程禁用 Netplan
Netplan FAQ 里有提到,可以在系统安装时设置不用 Netplan(引导界面按 F6 键设置如下参数)。
netcfg/do_not_use_netplan=true
该方法适合全新安装 Ubuntu 使用。对于 VPS 测试通过 VNC 无法操作(因安全原因拦截了按键)。
已安装 Ubuntu 的情况下禁用 Netplan
1. 先安装 ifupdown、resolvconf 软件包。
sudo apt install ifupdown resolvconf
2. 修改配置文件配置好网络连接。
sudo vi /etc/network/interfaces
静态 IP 网络配置示例:
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 192.168.1.2 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 8.8.8.8 8.8.4.4
DHCP 网络配置示例:
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 allow-hotplug eth0 iface eth0 inet dhcp
3. 关闭 & 重开网络接口,设置 networking 服务开机启动和重启使设置生效。
sudo ifdown --force eth0 lo && ifup -a
sudo systemctl enable networking
sudo systemctl restart networking
4. 停止、取消和禁止 Netplan 相关服务运行,并移除 Netplan 软件包及其配置文件。
解释下所操作的服务:
networkd-dispatcher
是 Netplan 后端服务(桌面版则是NetworkManager
);networkd-dispatcher
是 Netplan 守护服务,可通过监听连接状态以执行特定事件操作;systemd-networkd-wait-online
用于检测systemd-networkd
所管理网络接口的连接状态;systemd-resolved
新的 DNS 管理服务,其配置文件里有的参数依赖 Netplan 后端服务工作;
sudo systemctl stop systemd-networkd networkd-dispatcher systemd-networkd-wait-online systemd-resolved sudo systemctl disable systemd-networkd networkd-dispatcher systemd-networkd-wait-online systemd-resolved sudo systemctl mask systemd-networkd networkd-dispatcher systemd-networkd-wait-online systemd-resolved sudo apt purge nplan netplan.io
后续如要切换回 Netplan,别忘了恢复上述系统服务。将带有 mask 的命令换成 unmask 运行一次,不然即使 start disable 了也没法使用服务。
其它可能用到的命令扩展:
systemctl list-dependencies systemd-networkd --reverse
查询指定服务所关联的依赖项;systemctl list-unit-files --type=masked --all
列出/lib/systemd/system
下禁用服务;
5. 完成以上操作就设置完成了,全文实测在 Ubuntu Server 18.04 系统下通过。
如果 DNS 解析不了,请检查 /etc/resolv.conf
所链接的文件是否是 /run/resolvconf/resolv.conf
。如果不是,运行下面命令设置。
sudo ln -sf /run/resolvconf/resolv.conf /etc/resolv.conf