如何返回 ifupdown

如何返回 ifupdown

从 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

然后重新启动它就应该可以正常工作了。

已知良好配置来自在 Ubuntu 18.04 上使用 netplan 配置绑定的 802.3ad 网络

相关内容