Ubuntu 18.04:切换回 /etc/network/interfaces

jdg*_*son 65 network-manager networking netplan 18.04

周围开始的Ubuntu 18.04的某个时候,Ubuntu的开发者采用了经典的停止/etc/init.d/networking/etc/network/interfaces配置网络的方法,并切换到一些东西netplan。这让很多人非常愤怒,被广泛认为是一个糟糕的举动。是否可以删除netplan并使用正确的/etc/network/interfaces方法来配置网络?

Nux*_*win 60

以下过程适用于 Ubuntu 18.04 (Bionic Beaver)

一、重新安装ifupdown包:

# apt-get update
# apt-get install ifupdown
Run Code Online (Sandbox Code Playgroud)

二、使用配置节配置您的/etc/network/interfaces文件,例如:

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
Run Code Online (Sandbox Code Playgroud)

三、使配置生效(无需重启):

# ifdown --force enp0s3 lo && ifup -a
# systemctl unmask networking
# systemctl enable networking
# systemctl restart networking
Run Code Online (Sandbox Code Playgroud)

四、禁用并删除不需要的服务:

# 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
Run Code Online (Sandbox Code Playgroud)

然后,你完成了。

注意:当然,您必须根据您的系统(网络、接口名称...)调整这些值。

五、 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
....
Run Code Online (Sandbox Code Playgroud)

然后在完成后重新启动 systemd-resolved 服务:

# systemctl restart systemd-resolved
Run Code Online (Sandbox Code Playgroud)

如上所示,ifupdown INTERFACES(5) 文件中的 DNS 条目仅在您使用 RESOLVCONF(8) 或类似工具时才相关。

  • 好吧,他妈的。当您没有网络配置时,只需`apt-get install`。Canonical 真是个好主意。 (18认同)
  • @StephenBoston 我完全同意你的看法。然而,即使 Canonical 试图通过引入新技术来取得进展,它也可以以侵入性较小的方式做到这一点。我的意思是,选择权应该留给最终用户。对于工作站来说,从 ifupdown 到 netplan 的变化肯定不是什么大问题,但是当你必须处理 Ubuntu 服务器时,那就是另一回事了,因为大多数稳定的软件并不一定提供适配器...... systemd 也是如此。我必须每天处理 Debian 和 Ubuntu。Ubuntu 的问题在于他们不太关心向后兼容性。 (4认同)
  • @Velkan你总是可以使用 netplan 预先配置你的网络,然后稍后切换回 ifupdown ;)但我同意你的观点。不知怎的,规范做出了错误的决定。例如,他们破坏了依赖 ifupdown 进行网络配置的软件(没有 netplan 提供程序)。我们的控制面板软件(稳定系列)就是这种情况,我们不想添加新的网络配置提供程序...... (2认同)

jdg*_*son 12

该Netplan团队已经张贴在他们的常见问题作出正式答复这里

如何回到ifupdown

...

在正在运行的系统上,可以通过安装 ifupdown 和手动配置 /etc/network/interfaces 来删除 netplan,就像用户以前所做的那样。

在安装时,用户可以通过预置 netcfg/do_not_use_netplan=true 来选择使用 ifupdown。这是通过在启动安装媒体时将预置行添加到命令行来完成的(即在安装媒体启动菜单中,按 F6,键入“e”,然后添加到命令行)。

有关更完整的说明,请参阅 Nuxwin 的回答。


Chr*_*G74 6

Nuxwin答案很棒而且几乎完整,我只想添加以下几行:

rm /etc/resolv.conf
ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)

这将确保解析器可以由 DHCP 客户端更新,就像之前使用接口时一样。

(我会将其添加为评论,但不知何故,发表评论需要 50 个声望)