Ubuntu 禁用 Netplan 改用 ifupdown 配置网络

Eric 教程 781 次浏览 抢沙发

自 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

发表评论

电邮地址用于 Gravatar 头像显示,不会被公开可见。