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

WireGuard VPN无法解析本地域名的问题排查与配置求助

WireGuard VPN无法解析本地域名的问题排查与配置求助

我目前的网络环境是这样的:用一台Ubuntu 22.04.1 LTS服务器跑wg-easy,用Portainer来管理Docker容器;Windows 11客户端连上WireGuard服务器后,既能正常访问互联网,也能访问本地局域网的设备。本地局域网里还有另一台Ubuntu 22.04.1 LTS服务器,同样用Docker跑AdGuard Home作为DNS解析服务。

现在遇到了一个头疼的问题:当我从远程网络连VPN时,用AdGuard DNS重写页面里配置的主机名,不管是通过SSH、HTTP/HTTPS还是ICMP(Ping)访问,都会出现DNS解析失败的情况——浏览器会报ERR_NAME_NOT_RESOLVED,SSH或Ping则提示无法解析主机名/找不到目标主机。但奇怪的是,用nslookup查询时,明明显示使用的是AdGuard服务器的IP,而且能正常解析出对应的主机名,这点和某SuperUser帖子的情况不一样,所以那个帖子的解决方法对我没用。

还有个例外情况,可能指向是AdGuard的问题而非WireGuard:只有AdGuard服务器本身的主机名能通过HTTP/HTTPS、SSH、Ping正常访问,其他服务器哪怕在AdGuard里配置了完全一样的域名规则,都没法用域名访问。另外还有个细节:正向DNS查询没问题,但反向解析不行,nslookup没法把解析出来的IP转回对应的主机名。

简单来说就是:我能正常上网,也能通过IP地址访问本地局域网的设备,但就是没法用主机名访问这些设备。

我的WireGuard客户端配置如下:

[Interface]
PrivateKey = <my private key>
Address = 10.8.0.3/24
DNS = 192.168.68.105 // 这是AdGuard服务器的本地IP

[Peer]
PublicKey = <my public key>
PresharedKey = <my pre-shared key>
AllowedIPs = 0.0.0.0/0, ::/0, 192.168.68.105/32
Endpoint = <my home router's public domain name>:51820

我之前看到Reddit的一个老帖子,建议把192.168.68.105/32加到AllowedIPs列表里,确保DNS流量走VPN,我照做了但问题还是没解决。我知道这是拆分隧道的配置,也确认过wg-easy默认的10.8.0.x网段和本地的192.168.68.0/24网段没有冲突。

我还分别进入了wg-easy容器和AdGuard容器的终端排查:wg-easy容器能正常访问AdGuard服务器,但反过来AdGuard容器没法访问wg-easy——不过Docker容器默认的出入网规则就是这样,应该不是问题。另外,我试过在客户端的/etc/hosts文件里手动映射IP和主机名,这能解决问题,但这只是治标不治本,而且要给每台用VPN的设备都这么配置,实在太麻烦了。还有个细节:WireGuard容器用的是Portainer配置的栈网络,而AdGuard容器是network: host模式,和宿主机共用IP地址。

补充两个排查信息:

  • 后来我连了一台随便的网络设备,在AdGuard里加了DNS映射,结果VPN下还是只能用IP Ping通,确实只有AdGuard自己的主机名能正常解析(说真的有点自恋了😂)
  • 用ipconfig /all查看后发现,我的默认WiFi适配器和WireGuard适配器的“Connection-specific DNS Suffix”都是空的

有没有大佬能帮我调整一下网络配置,让我从远程网络连VPN时,也能用本地设备的主机名访问它们?

备注:内容来源于stack exchange,提问作者A. P. Roblem

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 07:09:33