Ubuntu 23.10开机无网络连接,需手动启动systemd-resolved.service的问题排查求助
Hey leo,我来帮你一步步排查这个开机没网、得手动启动systemd-resolved.service的问题,都是你能跟着操作的步骤,先从最常见的原因开始:
先确认systemd-resolved是否设置为开机自启
这是最容易忽略的点,如果服务没设为开机自动启动,那每次开机自然得手动启动。你可以在终端里跑这个命令检查状态:systemctl is-enabled systemd-resolved.service如果输出是
disabled或者masked,那就是这个问题了。直接用下面的命令把它设为开机自启,同时立刻启动服务:sudo systemctl enable --now systemd-resolved.service重启系统试试,应该就能自动联网了。
如果已经设为自启,查看服务启动日志找报错
要是上面的命令输出是enabled,那说明服务应该自启但启动失败了,得看日志找原因。跑这个命令查看本次开机以来systemd-resolved的日志:journalctl -u systemd-resolved.service -b重点找带
failed或者error的行,比如有没有提示依赖服务未启动、配置文件语法错误,或者端口被占用之类的信息。比如如果看到配置文件错误,就打开/etc/systemd/resolved.conf检查,有没有写错的地方(比如少了等号、拼写错误)。检查NetworkManager和systemd-resolved的配合问题
Ubuntu 23.10默认用NetworkManager管理网络,它和systemd-resolved的配合出问题也会导致没网。你可以先看NetworkManager的日志有没有相关报错:journalctl -u NetworkManager.service -b另外,检查NetworkManager的配置文件
/etc/NetworkManager/NetworkManager.conf,看看里面有没有dns=systemd-resolved这一行,如果没有的话,添加进去,然后重启NetworkManager:sudo systemctl restart NetworkManager.service重启系统后再测试网络。
排查是否有其他DNS服务和systemd-resolved冲突
有时候如果有其他DNS相关服务(比如dnsmasq)被启用,会占用systemd-resolved需要的端口,导致它启动失败。你可以用这个命令列出所有DNS相关的服务状态:systemctl list-unit-files | grep dns如果看到除了
systemd-resolved.service之外还有其他状态为enabled的服务,比如dnsmasq.service,可以先禁用它:sudo systemctl disable --now dnsmasq.service然后重启系统试试。
重置systemd-resolved的配置文件
要是上面的步骤都没解决,可能是默认配置有异常(虽然是全新安装,但偶尔也会出现)。先备份当前配置:sudo cp /etc/systemd/resolved.conf /etc/systemd/resolved.conf.bak然后打开
/etc/systemd/resolved.conf,把所有自定义的行都注释掉(在行首加#),只保留默认的注释内容,保存后重启服务和系统。
如果做完这些还是有问题,把journalctl -u systemd-resolved.service -b里的错误信息贴出来,这样更容易帮你定位具体的问题~
备注:内容来源于stack exchange,提问作者leo

