我的威联通的叫 xxx.local ,在家里面的时候通过这个名称是可以正常访问的( Infuse )。但是在外面的时候我通过 WireGuard 就访问不了,要写成内网 IP 才可以访问。有什么解决方法吗?
1
Damn 2022-08-24 12:33:36 +08:00 1
你在外面的时候 DNS 服务器可没有你的 xxx.local 记录啊。
你在家里的时候 xxx.local 通过 DHCP 生成了,所以你可以访问。 |
2
cr0wd 2022-08-24 12:34:40 +08:00 via Android 1
如果我没记错的话 .local 会用 mDNS 解析,WireGuard 不支持组播吧
|
3
ryougifujino OP @Damn #1 确实是,我在 hosts 文件里加了一条映射就可以了。但比较奇怪 WireGuard 里的 DNS 服务器地址就是写的家里的主路由,不知道要怎么设置才可以自动能行。
|
4
cweijan 2022-08-24 12:40:07 +08:00 1
在外面的机器配置 host
|
5
mmtromsb456 2022-08-24 13:12:23 +08:00 via iPhone 2
.local 不是 DHCP Server 创建的映射,如果用 Dnsmasq 之类创建映射一般也是.lan 。
.local 一般是支持 Bonjour 协议的设备加入组播组之后分别宣告自己支持的服务的条目,然后查询设备默认向 224.0.0.251 的 5353 端口查询。 理论上来说 Wireguard on Linux 是可以支持组播的,用 iproute2 来设定 wg0 的 multicast 属性就可以了,客户端有没有实现就不确定了。 |
6
me221 2022-08-24 13:25:41 +08:00 1
家里再开个 AdgHome. 自定义域名 wireguard 使用 adg 的 dns
|
7
jim9606 2022-08-24 23:31:03 +08:00
.local 是 mDNS/DNS-SD 的保留 TLD ,最新 win10 的系统 resolver 虽然支持这个但仅限 UWP 应用可用。
另外这个功能要把网络设置为专用网络并启用网络发现,wireguard 用的 wintun 是虚拟三层网卡,好像压根没法设置这个。 而且 wireguard 隧道跟家庭内网就不是同一个广播域,组播救不了,除非你搞了特殊的转发规则。 |
8
ryougifujino OP @jim9606 #7 手机有办法解决吗?
|