You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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的解析结果:

  1. 创建dnsmasq配置目录:
    sudo mkdir -p /etc/NetworkManager/dnsmasq.d
    
  2. 创建配置文件/etc/NetworkManager/dnsmasq.d/myrouter.conf:
    address=/myrouter/192.168.200.1
    
  3. 重启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

客户端测试

  1. 清除客户端DNS缓存:
    sudo systemd-resolve --flush-caches
    
  2. 重新解析主机名:
    nslookup myrouter
    

此时应仅返回192.168.200.1,客户端可正常ping、ssh或访问路由器HTTP服务。

内容的提问来源于stack exchange,提问作者Helge Löding

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 13:22:09