![Netplan 在启动时不适用](https://linux22.com/image/899583/Netplan%20%E5%9C%A8%E5%90%AF%E5%8A%A8%E6%97%B6%E4%B8%8D%E9%80%82%E7%94%A8.png)
我在 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 上默认是禁用的,但没有成功。
我获得连接的唯一方法是:
- 使用机器自己的键盘登录机器;
- 输入“sudo netplan apply”;
- 然后我终于可以通过 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。这不是问题的真正解决方案,而是一种解决问题的变通方法。