Netplan 在启动时不适用

Tho*_*ger 17 networking systemd netplan

我在 vmware 虚拟机上安装了带有最新更新的 Ubuntu 17.10。Netplan 没有配置我的 2 个以太网。

这是我的 /etc/netplan/01-netcfg.yaml

network:
  version: 2
  renderer: networkd
  ethernets:
    lan:
      match:
        macaddress: 00:12:34:a8:29:e8
      set-name: lan
      dhcp4: false
      dhcp6: false
      accept-ra: false
      addresses:
        - 10.10.0.48/24
        - 1701:5740:5000:3301::48/64

    failover:
      match:
        macaddress: 00:45:57:89:27:e8
      set-name: failover
      dhcp4: false
      dhcp6: false
      accept-ra: false
      addresses:
        - 17.25.111.30/27
        - 1701:5740:5000:3300::30/64
      gateway4: 17.25.111.1
      gateway6: 1701:5740:5000:3300::1

      nameservers:
        search:
          - example.at
          - intern.example.at
        addresses:
          - 10.10.0.1
          - 1701:5740::66
Run Code Online (Sandbox Code Playgroud)

我切换回像 eth0 这样的可预测设备,启动后所有设备都被正确命名,但没有配置。

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: lan: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:12:34:a8:29:e8 brd ff:ff:ff:ff:ff:ff
3: failover: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:45:57:89:27:e8 brd ff:ff:ff:ff:ff:ff
Run Code Online (Sandbox Code Playgroud)

登录并触发systemctl restart systemd- networkd设备后配置。netplan apply也可以完成这项工作。

我在 systemd-networkd.service 和 systemd-networkd.timer 上玩了很多,但没有任何帮助。

每次重新启动后手动设置网络非常令人沮丧。有谁知道如何解决这个问题?

num*_*rks 7

我在 Ubuntu 18.04 上遇到了完全相同的问题,但是 R. Pietsch 的解决方案没有解决它:(

sudo crontab -e
@reboot /usr/sbin/netplan apply
Run Code Online (Sandbox Code Playgroud)

我还尝试启用 root 用户,它在 Ubuntu 上默认被禁用,但没有运气。

我必须获得连接的唯一方法是:

  1. 使用自己的键盘登录机器;
  2. 输入“sudo netplan apply”;
  3. 然后我终于可以通过 SSH 进入机器了。

如果我不“sudo netplan apply”,我在机器上没有连接。怎么可能将这样一个损坏的软件放入 LTS 版本?

我想添加更多关于我的场景的细节,以帮助其他人识别我们正在谈论的现象。这就是我的情况:

  • 我使用 netinstall 在我的英特尔 NUC 上安装了 Ubuntu 18.04;
  • 我将 netplan YAML 文件配置为在无线连接时获取静态 IP 地址;
  • 我用“sudo netplan apply”应用了它;
  • 我重新启动了我的 NUC;
  • 我从我的 Windows 机器上启动了一个“ping -t”;
  • 重新启动后,NUC 显示 LXDE 登录提示;
  • 那时,根据 ping,NUC 无法访问;
  • 我登录,输入“sudo netplan apply”,几秒钟后就可以访问了。

我认为与 /etc/network/interfaces 相比,netplan 是一个很好的改进,但这种行为应该尽快修复:)

更新:

我使用以下命令调试了该问题:

$ journalctl --no-pager -lu systemd-networkd
$ networkctl
Run Code Online (Sandbox Code Playgroud)

似乎是 LXDE 中的网络管理器面板干扰了它。即使连接显示为“非托管”,我也取消选中“启用网络”,似乎它解决了问题。

我们可以关闭这个:)


dja*_*dja 5

我认为您已经遇到了LP:#1770082 - “systemd- networkd未在启动时重命名设备”。

基本上,当你的系统启动时,网络设备将拿出为eth0/eth1等的顺序是不可预测的,所以udev的重命名的设备之类的东西ens3或者enp2s0在启动的initrd的阶段。(您应该能够通过 grep 的输出看到这一点dmesg。)

set-name的网络计划 YAML 中有一个节。稍后在启动时,它会set-name在 systemd链接文件中生成一个重命名规则,该文件由 udev 读取。但是,如果设备已经被重命名,链接文件不会导致设备被重命名。在您的情况下,该设备将不会被重命名,因为它可能已在 initrd 中更早地被重命名。

我打开了一个针对 systemd 的错误(问题 #9006 - “udev:链接文件中的接口名称未应用”)关于这个。我还提议对 netplan(PR #31 - “生成 udev 规则文件以重命名设备”)进行更改,这将导致创建 systemd规则文件以及链接文件,因为即使设备具有规则文件,也会受到尊重已经改名了。

作为解决方法,请尝试net.ifnames=0在内核命令行上启动。对于长期解决方案,预计我对 netplan 的更改将向后移植到 Bionic 并在下个月左右发布。


小智 1

我通过插入解决了这个问题

@reboot /usr/sbin/netplan apply
Run Code Online (Sandbox Code Playgroud)

进入 root 的 crontab。不是问题的真正解决方案,而是解决问题的解决方法。


fir*_*pol 1

在 ubuntu 18.04 中,netplan 对我来说也是相当新的,我按照指南创建文件/etc/netplan/01-netcfg.yaml并运行sudo netplan apply,就像你一样,在重新启动时连接就消失了。

手动运行sudo netplan apply使其再次工作。但这很烦人。

就我而言,解决方案是编辑/etc/network/interfaces和注释所有 enp0** 节(检查它们在系统中的调用方式)。

然后重新启动。

基本上 /etc/nwtwork/interfaces 中的旧配置与 netplan 冲突。