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 上玩了很多,但没有任何帮助。
每次重新启动后手动设置网络非常令人沮丧。有谁知道如何解决这个问题?
我在 Ubuntu 18.04 上遇到了完全相同的问题,但是 R. Pietsch 的解决方案没有解决它:(
sudo crontab -e
@reboot /usr/sbin/netplan apply
Run Code Online (Sandbox Code Playgroud)
我还尝试启用 root 用户,它在 Ubuntu 上默认被禁用,但没有运气。
我必须获得连接的唯一方法是:
如果我不“sudo netplan apply”,我在机器上没有连接。怎么可能将这样一个损坏的软件放入 LTS 版本?
我想添加更多关于我的场景的细节,以帮助其他人识别我们正在谈论的现象。这就是我的情况:
我认为与 /etc/network/interfaces 相比,netplan 是一个很好的改进,但这种行为应该尽快修复:)
更新:
我使用以下命令调试了该问题:
$ journalctl --no-pager -lu systemd-networkd
$ networkctl
Run Code Online (Sandbox Code Playgroud)
似乎是 LXDE 中的网络管理器面板干扰了它。即使连接显示为“非托管”,我也取消选中“启用网络”,似乎它解决了问题。
我们可以关闭这个:)
我认为您已经遇到了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。不是问题的真正解决方案,而是解决问题的解决方法。