Ubuntu 18.04 Server LTS下Netplan与cloud.cfg网络配置异常问题
针对你遇到的两个问题,我整理了具体的解决方案,都是基于Ubuntu 18.04 Server的netplan和systemd机制来处理的:
一、启动时仅启用配置好的无线网卡,禁用以太网接口
你当前的问题是虽然只配置了无线网卡的DHCP,但以太网接口仍被自动启用——这是因为netplan默认不会主动禁用未配置的接口,需要你在netplan配置文件中明确禁用以太网接口。具体步骤如下:
编辑你的netplan配置文件(
/etc/netplan/01_xx.yaml),添加以太网接口的禁用配置:
假设你的以太网接口名为eth0,无线接口为wlan0,修改后的配置如下:network: version: 2 renderer: networkd # Server版默认用networkd,确保这个配置正确 ethernets: eth0: dhcp4: no dhcp6: no enabled: false # 关键:直接禁用该接口 optional: true # 可选:标记为非必需,启动时不等待该接口 wifis: wlan0: dhcp4: yes access-points: "你的WiFi名称": password: "你的WiFi密码"注意:接口名称可以通过
ip link命令查看,确保名称正确。应用配置并生成系统网络文件:
sudo netplan generate sudo netplan apply检查是否存在旧的网络配置干扰:
如果/etc/network/interfaces文件中有残留的以太网配置,建议注释或清空所有内容,避免和netplan冲突:sudo mv /etc/network/interfaces /etc/network/interfaces.bak
重启系统后,以太网接口应该会保持禁用状态,只有无线网卡按配置启动。
二、缩短启动时的网络超时时间(从2分钟改为更短时间)
你遇到的2分钟超时确实和systemd的systemd-networkd-wait-online.service有关,这个服务默认会等待所有网络接口完成初始化,超时时间为120秒。我们可以通过修改服务配置来调整超时时间,或者指定只等待需要的接口:
方法1:直接修改服务超时时间
编辑
systemd-networkd-wait-online.service的override配置:sudo systemctl edit systemd-networkd-wait-online.service在打开的编辑器中添加以下内容(比如设置为30秒超时):
[Service] TimeoutStartSec=30重新加载systemd配置并重启服务:
sudo systemctl daemon-reload sudo systemctl restart systemd-networkd-wait-online.service
方法2:仅等待指定的无线网卡(更精准)
如果你只需要等待无线网卡启动,不需要管以太网,可以修改服务的执行参数,让它只监听你的无线接口:
同样执行
sudo systemctl edit systemd-networkd-wait-online.service,添加以下内容:[Service] ExecStart= # 先清空原有的执行命令 ExecStart=/lib/systemd/systemd-networkd-wait-online --interface=wlan0 TimeoutStartSec=30重新加载配置并重启服务:
sudo systemctl daemon-reload sudo systemctl restart systemd-networkd-wait-online.service
这样修改后,系统启动时只会等待wlan0完成初始化,超时时间设为30秒,不会再出现2分钟的等待超时。
内容的提问来源于stack exchange,提问作者Nathan Smith

