我将笔记本电脑 (macOS) 备份到家中的台式机 (Linux)。当然,我的笔记本电脑有时在家里,与台式机在同一个本地网络上,有时不在。很长一段时间以来,我都让笔记本电脑使用公共 URL 引用台式机,因为这样很方便,而且无论笔记本电脑在哪里都可以使用。缺点是我的备份系统通过互联网访问台式机,即使通过 LAN 访问会更快。(我本以为在家时,我的路由器或 ISP 端的某些东西会立即注意到我正在访问自己的 IP 并走捷径,但 traceroute 显示 12+ 跳数,所以我想不是。)
如何才能让我的笔记本电脑在可能的情况下自动通过局域网访问我的桌面,否则通过互联网访问?
我能想到的最好的办法是使用 shell 脚本检查我是否在家并修改我的 hosts 文件。这有点笨重,如果我想在多个设备(尤其是移动设备)上执行此操作,就会变得很麻烦。我不可能是唯一遇到过这个问题的人,所以我想知道是否有更好的方法。理想情况下,存在某种方法可以使用我不知道的可执行程序或小脚本来自定义 url 解析的行为。
这可能看起来像是过度的调整,但我的备份有时需要很长时间,即使在我的家庭网络上也是如此,并且会变得非常不方便。
我的路由器是 Archer C7。
我有住宅互联网服务,所以我的 IP 可能偶尔会改变,但似乎很少发生。
我能够检测两台计算机是否在同一个本地网络上。
答案1
一种解决方案是在您的 LAN 上安装本地 DNS 服务器:您可以添加一个本地条目,将您的桌面 URL/域名解析为 LAN 上的本地 IP。这样:
- 当你在局域网中时:你获取的是桌面的本地 IP
- 当你在 WAN 上时:你将获得桌面的公共 IP
不幸的是,这可能需要做大量的工作,因为大多数路由器不包含本地 DNS而您的路由器(archer C7)似乎不提供这样的功能。