You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu客户端无法解析本地Unbound服务器中的局域网主机

Ubuntu客户端无法解析本地Unbound服务器中的局域网主机

我太懂你这种头疼的感觉了——明明Unbound服务器本身能完美解析局域网里的短名主机,Android和Windows客户端都能用http://myserver:8080/正常访问,偏偏两台Ubuntu 23.04客户端死活不行,手动改了/etc/resolv.conf能好,但一待机或重启就被重置。别着急,这是因为Ubuntu 23.04默认用systemd-resolved管理DNS,直接改resolv.conf根本不持久,咱们用规范的方法来搞定它:

问题根源先搞清楚

你看到的127.0.0.53systemd-resolved的本地DNS缓存服务,所有客户端的DNS请求都会先经过它。之前你的Ubuntu客户端没把查询转发给Unbound服务器,所以才会返回SERVFAIL错误。咱们的目标就是让systemd-resolved正确指向你的Unbound服务器,并且持久化配置。

方法一:通过NetworkManager修改单连接的DNS配置(适合笔记本等经常换网络的设备)

这个方法是针对当前的WiFi/有线连接单独设置,不会影响其他网络:

  1. 先用命令查看你的连接名称(比如你这里的MYSSID):
    nmcli con show
    
  2. 修改该连接的DNS服务器,指向你的Unbound和备用DNS:
    sudo nmcli con mod "MYSSID" ipv4.dns "192.168.1.2,192.168.1.3"
    
  3. 如果不需要之前的Home搜索域(因为Unbound没配置这个域的解析),可以清空它:
    sudo nmcli con mod "MYSSID" ipv4.dns-search ""
    
  4. 重启连接让配置生效:
    sudo nmcli con down "MYSSID" && sudo nmcli con up "MYSSID"
    
  5. 验证一下:用resolvectl status查看连接的DNS配置,确认已经指向192.168.1.2,然后再dig myserver试试能不能解析。

方法二:全局配置systemd-resolved(适合固定台式机)

如果你的Ubuntu设备一直用这个局域网,直接全局修改systemd-resolved的配置更省事:

  1. 编辑/etc/systemd/resolved.conf文件:
    sudo nano /etc/systemd/resolved.conf
    
  2. 修改以下配置项(把注释去掉,改成对应的值):
    [Resolve]
    DNS=192.168.1.2 192.168.1.3
    # 不需要搜索域的话就注释掉或者设为空
    # Domains=Home
    FallbackDNS=
    DNSSEC=no
    DNSOverTLS=no
    MulticastDNS=no
    LLMNR=no
    Cache=yes
    DNSStubListener=yes
    
  3. 保存退出后,重启systemd-resolved服务:
    sudo systemctl restart systemd-resolved
    
  4. 验证:用resolvectl status检查全局DNS配置,然后测试dig myserver或者直接访问http://myserver:8080/看是否正常。

额外验证小技巧

修改配置后,你可以先测试dig myserver @127.0.0.53,如果能返回正确的A记录,说明systemd-resolved已经把查询转发给Unbound了,之后直接用短名访问就没问题了。

备注:内容来源于stack exchange,提问作者user352472

火山引擎 最新活动