从 Ubuntu 18.04 左右开始,Ubuntu 开发人员停止使用经典的/etc/init.d/networking
和/etc/network/interfaces
配置网络的方法,而是改用一些事物称为netplan
。这让很多人非常愤怒,并被广泛认为是一个糟糕的举动。是否可以删除netplan
并使用正确的/etc/network/interfaces
方法配置网络?
答案1
以下步骤适用于 Ubuntu18.04(仿生海狸)
我。重新安装下拉包裹:
# apt-get update
# apt-get install ifupdown
二.配置您的/etc/网络/接口包含如下配置节的文件:
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
allow-hotplug enp0s3
auto enp0s3
iface enp0s3 inet static
address 192.168.1.133
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
# Only relevant if you make use of RESOLVCONF(8)
# or similar...
dns-nameservers 1.1.1.1 1.0.0.1
三使配置生效(无需重启):
# ifdown --force enp0s3 lo && ifup -a
# systemctl unmask networking
# systemctl enable networking
# systemctl restart networking
四禁用并删除不需要的服务:
# systemctl stop systemd-networkd.socket systemd-networkd \
networkd-dispatcher systemd-networkd-wait-online
# systemctl disable systemd-networkd.socket systemd-networkd \
networkd-dispatcher systemd-networkd-wait-online
# systemctl mask systemd-networkd.socket systemd-networkd \
networkd-dispatcher systemd-networkd-wait-online
# apt-get --assume-yes purge nplan netplan.io
然后你就完成了。
笔记:你必须当然,根据您的系统(网络、接口名称……)调整这些值。
五、DNS解析器
由于 Ubuntu Bionic Beaver (18.04) 使用 SYSTEMD-RESOLVED.SERVICE(8) 提供的 DNS 存根解析器,因此您应该还要将要联系的 DNS 添加到 /etc/systemd/resolved.conf 文件中。例如:
....
DNS=1.1.1.1 1.0.0.1
....
完成后重新启动 systemd-resolved 服务:
# systemctl restart systemd-resolved
如上所示,ifupdown INTERFACES(5) 文件中的 DNS 条目仅在使用 RESOLVCONF(8) 或类似程序时才相关。
答案2
Netplan 团队已在其常见问题解答中发布了官方答案这里:
如何返回 ifupdown
...
在正在运行的系统上,可以通过安装 ifupdown 并手动配置 /etc/network/interfaces 来删除 netplan,就像用户以前所做的那样。
在安装时,用户可以通过预置 netcfg/do_not_use_netplan=true 来选择使用 ifupdown。这是通过在启动安装介质时将预置行添加到命令行来完成的(即在安装介质启动菜单中,按 F6,键入“e”,然后添加到命令行)。
请参阅 Nuxwin 的回答以获得更完整的说明。
答案3
这Nuxwin 的答案很棒而且几乎完整,我只需添加以下几行:
rm /etc/resolv.conf
ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
这将确保解析器可以由 DHCP 客户端更新,就像以前使用接口时一样。
(我本来想将此添加为评论,但不知何故需要 50 点声望才能发表评论)
答案4
关键是要知道这cloud.init
是真正的控制程序。话虽如此,配置文件中的“optional: true”
行是强制性的。 知道这一点就很容易了。netplan
我只是删除01-network-manager-all.yaml
并复制到了/root/save/
。然后用一个已知良好的配置代替它,50-cloud-init.yaml
:其内容如下:
network:
version: 2
renderer: networkd
ethernets:
eports:
match:
name: enp*
optional: true
bonds:
bond0:
interfaces: [eports]
addresses: [192.168.2.5/24]
gateway4: 192.168.2.1
nameservers:
addresses: [127.0.0.1, 8.8.4.4]
parameters:
mode: 0
mii-monitor-interval: 100
然后重新启动它就应该可以正常工作了。