无netplan命令时恢复Ubuntu服务器网络配置的技术咨询
问题背景
周末实验室停电,我恢复一台Ubuntu服务器启动后,发现网络无法自动配置。现在执行ifconfig ens160命令只能看到IPv6地址,没有预期的IPv4地址。
当前ifconfig ens160输出
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu1500 inet6 fe80::20c:29ff:fe25:364c prefixlen 64 scopeid 0x20<link> ether 00:0c:29:25:36:4c txqueuelen 1000 (Ethernet) RX packets 153179 bytes 13743243 RX errors 0 dropped 372 overruns 0 frame 0 TX packets 83 bytes 8038 .... TX errors 0 dropped overruns 0 carrier 0 collisions 0
现有Netplan配置文件(/etc/netplan/00-installer-config.yaml)
#This is the network config written by "subiquity' network: renderer: NetworkManager ethernets: es160: addresses: - 10.106.6.150/24 gateway4: 10.106.6.254 nameservers: addresses: -172.30.1.105 -172.30.1.106 version: 2
额外异常情况
- 服务器上找不到
netplan命令; - 登录控制台时弹出以下错误:
/etc/update-motd.d/90-updates-available: 7: /usr/share/update-notifier/notify-updates-outdated: not found
run-parts: /etc/update-motd.d/90-updates-available exited with return code 127
更新排查信息
执行nmcli命令发现网卡接口处于**unmanaged(未托管)**状态:
ens160: unmanaged "VMware VMXNET3" ethernet (vmxnet3), ....
执行systemctl status NetworkManager.service确认NetworkManager服务已经正常运行。
求助问题
现在我该怎么先恢复这台服务器的网络配置?
解决方案
咱们一步一步来排查解决,先从最明显的问题入手:
修正Netplan配置里的低级错误!
你看配置文件里写的网卡接口是es160,但实际你的网卡是ens160(少了个n),这肯定导致系统识别不了配置。另外DNS地址的格式也有问题,-后面必须加空格才行。
先打开配置文件修改:nano /etc/netplan/00-installer-config.yaml修改后的正确配置如下:
#This is the network config written by "subiquity' network: renderer: NetworkManager ethernets: ens160: addresses: - 10.106.6.150/24 gateway4: 10.106.6.254 nameservers: addresses: - 172.30.1.105 - 172.30.1.106 version: 2安装netplan工具(如果确实缺失)
找不到netplan命令大概率是netplan.io包没安装,不过现在没网的话可以先跳过这步,先看NetworkManager能不能识别修改后的配置。等临时恢复网络后,再执行以下命令安装:apt update && apt install netplan.io安装完成后执行
netplan apply让配置生效。解决NetworkManager的未托管问题
网卡显示unmanaged但服务正常,大概率是配置没被识别,或者网卡被排除在管理列表外。先试试重启服务:systemctl restart NetworkManager如果还是不行,检查
/etc/NetworkManager/NetworkManager.conf和/etc/NetworkManager/conf.d/下的配置文件,看看有没有unmanaged-devices项把ens160加进去了,有的话删掉即可。
嫌麻烦的话直接用nmcli手动创建网络连接:nmcli con add type ethernet con-name ens160 ifname ens160 ip4 10.106.6.150/24 gw4 10.106.6.254 nmcli con mod ens160 ipv4.dns "172.30.1.105 172.30.1.106" nmcli con up ens160临时应急网络配置(以上方法都失效时)
如果上面的操作都没效果,可以先手动配置临时网络,至少能联网后再慢慢排查:ip addr add 10.106.6.150/24 dev ens160 ip route add default via 10.106.6.254 dev ens160 echo "nameserver 172.30.1.105" > /etc/resolv.conf echo "nameserver 172.30.1.106" >> /etc/resolv.conf注意:这个临时配置重启服务器后会失效,仅用于应急恢复网络。
备注:内容来源于stack exchange,提问作者user3595231

