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

在Ubuntu 18.04的某个时间开始,Ubuntu开发人员停止使用经典的/etc/init.d/networking/etc/network/interfaces方法配置网络并切换到一些名为netplan 东西 。 这让很多人非常生气,被广泛认为是一个不好的举动。 是否可以删除netplan并使用正确的/etc/network/interfaces方法来配置网络?

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

I.重新安装ifupdown包:

 # apt-get update # apt-get install ifupdown 

II。 使用配置节配置/ 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 dns-nameservers 8.8.8.8 8.8.4.4 

III。 使配置生效(无需重新启动):

 # ifdown --force enp0s3 lo && ifup -a 

IV。 禁用并删除不需要的服务:

 # systemctl stop networkd-dispatcher # systemctl disable networkd-dispatcher # systemctl mask networkd-dispatcher # apt-get purge nplan netplan.io 

然后,你完成了。

注意:必须根据您的系统(网络,接口名称……)调整值。

为什么不配置netplan?

好吧,因为它是在18.04-Desktop中配置的,所以它是一行将控制权移交给NetworkManager的所有接口。

虽然这可能适合95%的用户,但请记住,只有登录到会话后才会运行NetworkManager。

您是否希望您的计算机充当服务器/桌面,例如开始向本地计算机提供文件,充当VNP服务器等等……或者在任何人登录之前任何“花哨”的东西,只是简单的事实是在,您将无法在标准18.04-Desktop中配置它。

当然,替代方案是使用服务器-Netplan配置,据我所读(我自己没有检查过),将控制权交给systemd-networkd。 在这种情况下,您最好了解systemd如何替代旧的System V init。

如果你走这条路,你仍然需要改变netplan yaml,因为在桌面版本上,控制权被赋予NetworkManager。

关键是要知道cloud.init是真正的控制程序。
这就是说netplan配置文件中的行“optional:true”是强制性的。
知道这让事情变得简单。

我刚刚删除了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网络 。

根据这个答案,解决方案是删除所有运行的.yaml文件: Ubuntu 17.10禁用 netplan

没有备份我不会删除任何东西。 只需将文件移到一边,我们就可以轻松完成。 首先,找到文件:

 sudo updatedb locate netplan | grep yaml 

在我的18.04系统上,似乎唯一的操作文件是/etc/netplan/01-network-manager-all.yaml。 我们来吧:

 mkdir ~/netplan sudo mv /etc/netplan/01-network-manager-all.yaml /home/user/netplan 

…其中user是您的用户名。

现在检查以确保文件真的消失了:

 ls /etc/netplan 

现在根据需要添加到/ etc / network / interfaces。

重启。

有什么改进?

脚注:很难找到完成此操作的确切过程。 我们可能需要随意改进。