Ubuntu Server(NetworkManager+Netplan)WLAN路由器主机名DNS解析故障
解决树莓派Ubuntu 24.04 AP模式下客户端无法解析路由器主机名的问题
问题根源
你的核心问题是路由器DNS返回myrouter解析结果时,优先返回了回环地址127.0.1.1,客户端拿到该地址后无法访问路由器的局域网服务;同时客户端本地DNS缓存服务(systemd-resolved)返回SERVFAIL,本质是它无法将回环地址作为外部主机的有效解析结果。
解决方案
步骤1:修正主机名映射(避免cloud-init覆盖)
你的系统由cloud-init管理/etc/hosts,直接修改文件会被覆盖,可选两种方式:
方式A:修改cloud-init模板
编辑/etc/cloud/templates/hosts.debian.tmpl,调整条目顺序并清理无效映射:192.168.200.1 myrouter 127.0.1.1 myrouter.localdomain 127.0.0.1 localhost保存后重启系统,让cloud-init重新生成
/etc/hosts。方式B:禁用cloud-init管理hosts
编辑/etc/cloud/cloud.cfg,将manage_etc_hosts: true改为manage_etc_hosts: false,然后直接修改/etc/hosts:#127.0.1.1 myrouter myrouter 192.168.200.1 myrouter 127.0.0.1 localhost
步骤2:强制DNS服务返回正确局域网IP
Ubuntu 24.04中NetworkManager默认内置dnsmasq服务,可通过自定义配置强制指定myrouter的解析结果:
- 创建dnsmasq配置目录:
sudo mkdir -p /etc/NetworkManager/dnsmasq.d - 创建配置文件
/etc/NetworkManager/dnsmasq.d/myrouter.conf:address=/myrouter/192.168.200.1 - 重启NetworkManager生效:
sudo systemctl restart NetworkManager
步骤3:修复Netplan配置冲突
你的wlan0同时设置了dhcp4: true和静态IP,存在逻辑冲突,修改Netplan配置文件:
network: version: 2 renderer: NetworkManager ethernets: eth0: dhcp4: true optional: true wifis: wlan0: dhcp4: false addresses: - 192.168.200.1/24 access-points: "MyHotSpotSSID": password: "MyHotSpotPassword" mode: ap
应用配置:
sudo netplan apply
客户端测试
- 清除客户端DNS缓存:
sudo systemd-resolve --flush-caches - 重新解析主机名:
nslookup myrouter
此时应仅返回192.168.200.1,客户端可正常ping、ssh或访问路由器HTTP服务。
内容的提问来源于stack exchange,提问作者Helge Löding
相关产品推荐
相关产品推荐

