通过两个网络(家庭网络和远程(wireguard)网络)使用单个 URL 访问资源

通过两个网络(家庭网络和远程(wireguard)网络)使用单个 URL 访问资源

Wireguard 网络

我目前正在尝试以这种格式设置 wireguard 隧道。我使用 wireguard 的原因是通过我家的 NAT 建立隧道(我没有静态 IP 或端口转发访问权限)

android->vps-server

home-server->vps-server

wireguard 隧道上的所有设备都在子网中10.200.200.0/24。 IP 是静态设置的,并且是硬编码的:

wireguard on vps-server  : 10.200.200.1
wireguard on home-server : 10.200.200.2
wireguard on android     : 10.200.200.3

家庭网络

在我的家庭网络中,我有一个 DNS/DHCP 服务器 ( dnsmasq) 托管在 上home-server。家庭网络上的所有主机都在子网 上10.0.0.0/24

home-server : 10.0.0.1
android     : 10.0.0.2

我的问题

如果我在家里android,我可以使用访问我的服务器home-server.local,dnsmasq 将返回正确的 IP:10.0.0.1并且我可以连接到托管在我服务器上的服务。

但是当我在远程时,我想保留相同的 URL(home-server.local)。如果android询问它home-server的 IP 地址,home-server.local将得到答复10.0.0.1。无法通过远程网络访问。在 wireguard android 应用程序中添加路由可以在远程网络上工作,但是当android在本地网络上时,该路由会干扰任何本地网络访问,因为它始终通过 wireguard 而不是本机接口进行路由。

大多数应用程序nextcloud都没有双 URL 选项(我相信home assistant / hass有这个选项)。双主机名选项允许我为不同的网络使用不同的 URL。我希望无缝地从我的家庭网络过渡到远程网络,并以最少的附加依赖性从同一 URL 干净地访问我的家庭资源( home-server-- )。home-server.local

例子

如果我的nextcloud服务是通过 访问的home-server.local:8081,我可以从网络内的 URL 访问它(home-server.local-> dnsmasq->server通过10.0.0.1)。但是,如果我移到家庭网络之外,我希望(home-server.local-> ??DNS Magic??-> 10.200.200.2-> 通过 wireguard vps 路由 ->server通过10.200.200.2

~~想法~~

在 Linux 笔记本电脑上,我可以在远程网络上添加路由,以便10.0.0.1通过 wireguard 隧道进行访问。并在连接到我的家庭网络时删除路由,但我不认为这在原生 Android 上是可能的。我不太了解路由,所以这可能只是一个无知的问题。

我想到的一个选择是添加一个 DNS 条目,dnsmasq以防止我的android设备在家庭网络上连接到 VPN,但这似乎是一个我想避免的黑客解决方案。

答案1

在 Linux 笔记本电脑上,我可以在远程网络上添加路由,这样我就可以通过 wireguard 隧道访问 10.0.0.1。并在连接到我的家庭网络时删除路由,但我不相信这在原生 Android 上是可能的。我不太了解路由,所以这可能只是一个无知的问题。

您可以通过两个 WireGuard 隧道配置(具有不同的 AllowedIP,WireGuard 应用程序将其直接转换为路由)来实现此目的,然后使用“Automate”或“Tasker”之类的应用程序根据您所使用的 Wi-Fi SSID 激活不同的隧道。

虽然在这种情况下,你看起来不像需要家里的隧道;因此,您可以类似地自动打开/关闭始终具有 10.0.0.1 路由的单个隧道。

另一种类似的方法是反向路由,即使在家里也始终使用 WireGuard IP 地址,方法是配置家庭网关,以便服务器的 WireGuard 地址通过同一服务器的 LAN 地址路由 - 这将导致直接 LAN 连接。(如上所述,您可以在外出时自动打开/关闭 WireGuard 隧道。)

相关内容