Netplan 在启动时不适用

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

我切换回可预测的设备(如 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

登录并启动后systemctl 重启 systemd-networkd设备已配置。申请网络计划也能完成这项工作。

我对 systemd-networkd.service 和 systemd-networkd.timer 进行了很多尝试,但没有任何帮助。

每次重启后都要手动设置网络,这很烦人。有人知道如何解决这个问题吗?

答案1

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

sudo crontab -e
@reboot /usr/sbin/netplan apply

我还尝试启用 root 用户,该用户在 Ubuntu 上默认是禁用的,但没有成功。

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

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

如果我不“sudo netplan apply”,我的机器就无法连接。怎么可能把这么破的软件放到 LTS 版本中?

我想补充更多关于我的情况的细节,以便其他人能够认识到我们正在谈论的现象。以下是我遇到的情况:

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

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

更新:

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

$ journalctl --no-pager -lu systemd-networkd
$ networkctl

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

我们可以关闭这个:)

答案2

我觉得你已经击中LP:#1770082- “systemd-networkd 在启动时不会重命名设备”。

eth0基本上,当您的系统启动时,网络设备将以/等形式出现eth1。顺序不可预测,因此 udev 会在启动的 initrd 阶段将设备重命名为ens3或之类的名称enp2s0。(您应该能够通过 grepping 的输出来看到这一点dmesg。)

set-name您的 netplan YAML 中有一个节。稍后在启动时,它set-name会在 systemd 中生成重命名规则关联文件,由 udev 读取。但是,如果设备已经重命名,则链接文件不会导致设备重命名。那么,在您的情况下,设备不会被重命名,因为它可能在 initrd 中早些时候被重命名过。

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

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

答案3

我现在已经尝试使用 Ubuntu 18.04,我认为这个错误已经修复。
它现在对我来说有效。

答案4

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

@reboot /usr/sbin/netplan apply

进入 root 的 crontab。这不是问题的真正解决方案,而是一种解决问题的变通方法。

相关内容