WireGuard 下访问 SMB 只能通过 IP 地址, Hostname 就不行

2022-08-24 12:30:54 +08:00
 ryougifujino

我的威联通的叫 xxx.local ,在家里面的时候通过这个名称是可以正常访问的( Infuse )。但是在外面的时候我通过 WireGuard 就访问不了,要写成内网 IP 才可以访问。有什么解决方法吗?

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/875033

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX