家庭局域网设备多别名访问及跨VPN场景的可行解决方案咨询
家庭局域网设备多别名访问及跨VPN场景的可行解决方案咨询
我家里有不少网络设备,想给它们设置好记的人类友好名称来访问,而且绝对不想让这些设备直接暴露在互联网上。
我的具体需求:
- 设备支持多个"别名":比如同一台设备可以用
backup、docker或者nas这些名称访问- 原因是我在单台设备上跑了多个服务,想用不同别名区分,以后也方便把服务迁移到其他设备上
- 通过自建家庭VPN远程访问设备
- 这样我在外地也能访问NAS,还能远程执行备份操作
- 连接工作VPN的家庭工作站也能访问本地设备
- 因为我偶尔居家办公,连上工作VPN后还是要能访问家里的局域网设备
这些年我试过几种方案,但没有一个能完美满足所有需求,或多或少都有妥协:
使用mDNS
这是我最初的设置,设备可以通过hostname.local访问
- ❓ 设备支持多个"别名":理论上可能实现,但因为下面的问题我没深入研究
- ❌ 通过自建家庭VPN远程访问设备:
mDNS用的是广播机制,VPN连接不会转发广播,设备的mDNS响应没法传到VPN客户端那边 - ✅ 连接工作VPN的家庭工作站也能访问本地设备:这个没问题,因为
mDNS会绕过VPN直接访问局域网
使用mDNS搭配家庭DNS服务器
我家里自己搭了DNS服务器,本来想靠这个解决前两个需求,但在DNS服务器里配置*.local记录并不推荐,比如用dig查询时会弹出警告:
$ dig docker.local ... ;; WARNING: .local is reserved for Multicast DNS ;; You are currently testing what happens when an mDNS query is leaked to DNS ...
- ✅ 设备支持多个"别名":虽然不推荐,但名称解析确实正常
- ✅ 通过自建家庭VPN远程访问设备:DNS服务器用的是简单的请求响应模式,完全兼容VPN
- ❌ 连接工作VPN的家庭工作站也能访问本地设备:不行,因为工作站连工作VPN后会用公司的DNS服务器,里面肯定没有
docker.local这类记录
使用家庭DNS服务器+自定义专属本地域名
这本来应该是"标准方案",我建了个专属的本地域名比如myplace(避开了有争议的*.home),让DHCP服务器给所有设备分配这个域名,想规范地用DNS来管理。
- ✅ 设备支持多个"别名":靠DNS服务器可以轻松实现
- ✅ 通过自建家庭VPN远程访问设备:DNS的请求响应模式完全兼容VPN
- ❌ 连接工作VPN的家庭工作站也能访问本地设备:还是不行,工作站连工作VPN后用公司DNS,没有
docker.myplace这类记录
使用公网DNS服务器+公网域名(目前仅理论设想)
我自己有个公网域名比如example.com,本来想靠这个解决上一个方案的第三个问题,比如在公网DNS里设置docker.example.com = 192.168.0.17这样的记录。
- ✅ 设备支持多个"别名":DNS服务器可以轻松实现
- ✅ 通过自建家庭VPN远程访问设备:DNS的请求响应模式完全兼容VPN
- ✅ 连接工作VPN的家庭工作站也能访问本地设备:公网域名在任何地方的DNS都能解析,就像
superuser.com一样
⚠️ 但这个方案有严重的安全问题:
- 会把所有设备的名称和内网IP暴露给互联网
- 在外网环境(比如公司、咖啡馆)访问
docker.example.com时,会连接到当地局域网的192.168.0.17,结果不可控:- 该IP不存在的话,连接直接失败
- 该IP存在的话,会连到别人的设备,对于不安全的连接来说风险极高
有没有人能给我更好的解决方案?
备注:内容来源于stack exchange,提问作者Petr Újezdský
相关产品推荐
相关产品推荐

