如何将 LAN 中设备发往公网指定 domain:port 的 HTTPS 请求重定向到 LAN 中指定设备的 ip:port
背景: 家中运行一台 NAS,为实现从公网(使用移动数据)访问,已通过一台拥有公网 IP 地址的云服务器配置端口转发服务,并申请了域名及 SSL 证书,目前运行良好。
用 PPT 画了个网络拓扑: https://i.imgur.com/0yGEJ6C.png
在外面使用移动数据连接家里的 NAS,需要访问云服务器的指定端口(示例: https://nas.example.com:12345 ),在这一过程中需要消耗云服务器的流量(废话)。
如果我回到家里,在局域网中访问上述 domain:port,依然可以成功连接 NAS,但还是需要消耗云服务器的流量。这部分流量其实消耗的有点冤,毕竟已经在同一个 LAN 里面了,按理说可以直连的。这样子不但多交钱,延时也增加了。
问题: 是否可以通过某种方式在局域网中重定向发往 nas.example.com:12345 的请求,使其无需经由云服务器中转而直接发往局域网中的 NAS 的指定端口?
-
尽可能避免用户在设备端进行操作,如记住不同的 ip:port,在网络环境变化时手动输入(可行,但用户操作不便,排除)
- 我个人其实无所谓,主要是考虑到家里其他人不太懂计算机 /网络这块,
-
已经尝试过以下方案,效果均不好
- 修改 hosts
- 在 iOS 设备基本不可行,且离开局域网即失效
- 在 NAS 上搭建基于 AdGuard 的 DNS 服务器
- 在网络环境变换时,比如出门 /刚回家,可能是由于 DNS 缓存,不能实现无缝无感切换
- 改 DNS TTL 有用吗?
- 修改 hosts
-
可能可行的其他方案?
- 路由器设置策略路由或其他某种设置
- 对现有硬件改动最小。TP-LINK 企业级路由器,不清楚是否支持这样操作
- 新增一个软路由?
- 在 iOS 上运行某种支持通过判断当前 SSID 并修改请求的软件?
- 路由器设置策略路由或其他某种设置
-
NAS 用的是群晖,5001 是 HTTPS 端口
-
如果能实现 IP 地址重定向,但无法同时实现端口重定向,可妥协
- 在 NAS 也开启 12345 端口,与云服务器端口号实现同步,并允许相应服务使用此端口
- 云服务器端口需保持至少 10000+ 高位,以保证安全