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


44

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


2
为什么不只配置netplan?在大多数情况下,这非常简单。
chili555 '18

3
@ chili555可能我只是必须接受更改并学习新知识。我只想知道恢复原来的状态是否很简单。很像systemd,我了解颠覆性变革有时可能是有益的,也可以被接受。但是,这肯定不是需要更改或受益的时候之一。
jdgregson

1
如果发生错误,它不是微不足道的,也不容易逆转。如果您想过着危险的生活,我很乐意提出一个答案。另一方面,我们可以在几分钟内配置netplan。你喜欢哪个?PS-我不假装完全理解netplan(不包括)如何/etc/network/interfaces适合较大的系统图。我所能做的就是相信那些引入更改的人确实知道为什么它更合适。
chili555

1
或者,只需正确配置netplan即可完成。
chili555

1
@ chili555 Netplan不支持虚拟网络接口。看到这里:askubuntu.com/questions/990825/virtual-interface-in-netplan
user3751385

Answers:


43

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

I.重新安装ifupdown软件包:

# apt-get update
# apt-get install ifupdown

二。使用以下配置节来配置/ 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

三,使配置生效(无需重新启动):

# ifdown --force enp0s3 lo && ifup -a
# systemctl unmask networking
# systemctl enable networking
# systemctl restart networking

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

# 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解析的服务:

# systemctl restart systemd-resolved

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


9
好吧,f ***他们。仅apt-get install当您没有网络配置时。多么好的主意,规范。
Velkan

1
@Velkan您始终可以使用netplan预先配置网络,然后稍后再切换回ifupdown;)但是,我同意您的看法。规范地做出错误的决定。例如,他们破坏了依赖ifupdown进行网络配置的软件(没有netplan提供程序)。我们的控制面板软件(稳定的系列)就是这种情况,我们不想添加新的网络配置提供程序...
Nuxwin

3
@StephenBoston我完全同意你的看法。但是,即使Canonical尝试通过引入新技术来取得成功,它也可以以更具侵入性的方式实现。我的意思是,选择权应留给最终用户。对于工作站,从ifupdown到netplan的更改当然不是什么大问题,但是当您必须处理Ubuntu服务器时,这是另一回事了,因为大多数稳定的软件都不必提供适配器...对于systemd来说,情况也是如此。我每天都要处理Debian和Ubuntu。Ubuntu的问题在于他们不太在乎向后兼容性。
Nuxwin

1
较小的更正:# systemctl unmak networking-># systemctl unmask networking
桑托什(Santosh)'18

1
另外,如果您在接口文件中使用dns-domaindns-search,则应该Domains在resolve.conf中配置参数,我认为呢?无论如何,将这些整合在一起的出色工作,可能节省了我很多时间:)
OttoEisen 18/12/16

10

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

如何回到ifupdown

...

在正在运行的系统上,可以通过安装ifupdown并按照用户之前的操作手动配置/ etc / network / interfaces来删除netplan。

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

有关更完整的说明,请参见Nuxwin的答案。


9

在仅服务器的环境中,Netplan和yaml充其量是脆弱的(缩进错误将使您付出代价)。接口足够宽容,它使得在服务器上管理网络设置非常容易。
Netplan引入了新的层。但是真正的问题是U18会中断ifupdown,并且无法通过NetPlan完成这项工作。如果通过重新安装ifupdown返回到/ etc / network / interfaces,则管理DNS不再在interfaces文件中起作用。任何dns-nameservers条目都将被忽略。而是在/etc/resolv.conf中设置dns。但是您无法编辑该文件,因为每次启动计算机时都会重新写入该文件。WTF?Netplan设计为由GUI进行管理,因此我们在仅服务器阵营中的那些人都留有一个脆弱的系统,我们必须认真学习。不好的Ubuntu!
为什么不给我们一种在启动时将/ etc / network / interfaces中的设置重定向到netplan的方法,以帮助您完成netplan?


1
这如何回答这个问题?
Pierre.Vriens

@Dan Desjardins请参阅有关DNS解析器问题的公认答案。基本上,放到ifupdown INTERFACES(5)文件中的DNS条目仅在使用resolvconf(8)或类似的东西时才有意义。对于SYSTEMD-RESOLVED.SERVICE(8)提供的DNS存根解析器,您需要将DNS添加到/etc/systemd/resolved.conf文件中。这样做将使它们持久化。另一种解决方案是禁用SYSTEMD-RESOLVED。 SERVICE(8)服务和安装/设置resolvconf(8)。希望我足够清楚
。– Nuxwin

2

为什么不只配置netplan?

好吧,由于它是在18.04-Desktop中配置的,因此它是一条将控制权移交给NetworkManager的所有接口的单线。

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

如果您想让您的计算机充当服务器/桌面,例如开始向本地计算机提供文件,充当VNP服务器等...或在任何人登录之前进行任何“花哨的操作”,仅仅是因为事实是开启,您将无法在标准18.04-Desktop中进行配置。

当然,另一种选择是使用服务器Netplan配置,据我所读(未经我本人检查),该服务器将控制权移交给systemd-networked。在这种情况下,您最好学习systemd如何代替旧的System V init。

如果您走这条路,您仍然必须对netplan yaml进行更改,因为在桌面版本上,控制权已分配给NetworkManager。


3
至少存在一个原因:Netplan不支持openvswitch。
卡米隆

5
netplan不支持IP别名(eth0:0样式)。我不敢相信这样的事情怎么会进入Ubuntu服务器!
Hamid Fadishei

因为我的netplan目录是空的!
dsgdfg

NetworkManager服务很早就启动,不需要会话或登录用户。
thaller

1

关键是要知道那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网络


1
这里的问题是如何切换回ifupdown;)将来,您应该尝试回答问题而不污染它们,即使通过它始终不容易坚持最初的主题;)
Nuxwin

0

根据此答案,解决方案是删除所有可操作的.yaml文件:Ubuntu 17.10 disable 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中添加内容。

重启。

有什么改善吗?

脚注:很难找到执行此操作的确切过程。我们可能需要继续进行一些改进。


我必须尝试一下,看看效果如何。唯一的其他问题是如何在不重新启动的情况下应用更改。在过去,你可以使用ifup/ ifdown/etc/init.d/networking restartservice networking restart,和systemd方法,如systemctl restart networkingsystemctl restart Network-Manager.service等,但安装Ubuntu 18.04后,这些都不是可能对我来说。
jdgregson

结果是什么:sudo ip link set eth0 down跟着:sudo ifup -v eth0当然,用神话般的eth0代替您的界面。
chili555

ifupdown默认情况下未安装,因此调用ifup时只会告诉您如何安装。但是,sudo ip link set eth0 down随后sudo ip link set eth0 up确实会关闭并重新打开接口。
jdgregson

太棒了!这样您就解决了,一切准备就绪了吗?
chili555

小心,并非所有* .yaml文件都与netplan相关,因此仅删除与netplan相关的目录中的文件!
JanC
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.