我有一个 VPN 设置,允许我通过隧道回家并访问网络上运行的任何家庭服务器。
但是,我只能通过我的 Android 设备的移动网络或连接到移动热点的 Macbook 使用它。我可以从任何网络连接到我的 OpenVPN 服务器,但是当客户端设备连接到任何家庭/工作网络(ISP,因为没有更好的术语,在下面的日志中)时,连接就会超时。
不确定它是否相关,但这是arp
输出的样子。我使用 OpenVPN Connect 连接到我家的 OpenVPN 服务器。
> # ISP
> arp -a
iopsys.lan (192.168.1.1) at 34:e3:80:8c:b8:c0 on en0 ifscope [ethernet]
? (192.168.1.117) at a4:98:13:44:93:c7 on en0 ifscope [ethernet]
? (192.168.1.160) at (incomplete) on en0 ifscope [ethernet]
jbl-bar-9.lan (192.168.1.223) at 2c:fd:b3:d1:18:bc on en0 ifscope [ethernet]
? (xxx.xxx.xxx.xxx) at 1:0:5e:0:0:fb on en0 ifscope permanent [ethernet]
? (xxx.xxx.xxx.xxx) at 1:0:5e:7f:ff:fa on en0 ifscope permanent [ethernet]
> # ISP + VPN tunnel home – can't access any home machine by its IP, although they are in the list below
> arp -a
? (192.168.1.1) at 34:e3:80:8c:b8:c0 on en0 ifscope [ethernet]
? (192.168.1.117) at a4:98:13:44:93:c7 on en0 ifscope [ethernet]
? (192.168.1.160) at (incomplete) on en0 ifscope [ethernet]
? (192.168.1.223) at 2c:fd:b3:d1:18:bc on en0 ifscope [ethernet]
? (192.168.1.224) at 24:6f:28:5b:bc:c0 on en0 ifscope [ethernet]
? (192.168.1.255) at ff:ff:ff:ff:ff:ff on en0 ifscope [ethernet]
? (xxx.xxx.xxx.xxx) at 1:0:5e:0:0:fb on en0 ifscope permanent [ethernet]
? (xxx.xxx.xxx.xxx) at 1:0:5e:7f:ff:fa on en0 ifscope permanent [ethernet]
> # Mobile hotspot
> arp -a
? (192.168.146.123) at ce:30:4:ae:27:6c on en0 ifscope [ethernet]
? (192.168.146.255) at ff:ff:ff:ff:ff:ff on en0 ifscope [ethernet]
? (xxx.xxx.xxx.xxx) at 1:0:5e:0:0:fb on en0 ifscope permanent [ethernet]
? (xxx.xxx.xxx.xxx) at 1:0:5e:7f:ff:fa on en0 ifscope permanent [ethernet]
> # Mobile hotspot + VPN tunnel home – everything works, I can access all local IPs that aren't even listed in the table below
> arp -a
? (192.168.146.123) at ce:30:4:ae:27:6c on en0 ifscope [ethernet]
? (192.168.146.255) at ff:ff:ff:ff:ff:ff on en0 ifscope [ethernet]
? (xxx.xxx.xxx.xxx) at 1:0:5e:0:0:fb on en0 ifscope permanent [ethernet]
? (xxx.xxx.xxx.xxx) at 1:0:5e:7f:ff:fa on en0 ifscope permanent [ethernet]
我想我错过了 VPN 如何工作的部分内容,即两个网络(客户端的 LAN 和服务器的 LAN)如何分开,如果两者都使用相同的 IP 范围并且我想要做的是访问服务器的 LAN。我尝试在线搜索,但我认为我没有使用正确的关键字来找到它。
如果有人能指出我正确的方向,我将不胜感激,因为我真的很想了解如何使其工作以及为什么会发生这种行为。
为了让您对 VPN 的工作原理有更多的了解(因为您问过,但我不知道您的背景知识的范围)。通俗地说:您可以将安装在您设备上的 VPN 客户端视为虚拟网卡(同样认为您使用的是操作系统的集成 VPN 客户端)。它从 VPN 服务器获取 IP,通常与您尝试通过 VPN 连接的远程网络不同的子网,但这取决于设置。您的 VPN 服务器充当访问远程网络的路由器。因此 ARP 表无关紧要,您应该查看路由表和接口配置。
如果没有关于 VPN 配置的任何进一步信息,它很难为您提供帮助。
作为一项基本测试,您可以使用 traceroute 检查到目标设备的路由是否通过 VPN。
确保您的子网不重叠。如果您的本地网络与“VPN 网络”或远程网络具有相同的子网,则可能存在路由问题,从而导致您遇到的影响。这是有关主题表单 Server Fault 的更多信息。
这是您的接口配置和路由表的外观示例(原则上):
这将是禁用 VPN 的表:
这将是启用了 VPN 的表(请注意额外的路由,它通过 VPN 路由您的非本地流量,它是首选路由,因为较低的指标和用于远程网络的三个额外路由):
在此特定示例中,当前 LAN 之外的所有流量(在此示例中为外部
192.168.100.0/24
)都应通过您的 VPN 路由。如果您进行跟踪路由,假设 google.com 您应该通过172.29.29.2
(通过 VPN-PPP 连接)路由流量,如果没有 VPN,则应该通过192.168.100.1
(通过您的路由器)路由流量。所以请注意,这是一个简化的示例,因此您了解原理。它基于没有分割隧道的 IPsec/l2tp VPN 连接(意味着所有非 LAN 流量都通过 VPN)。根据 VPN 的配置方式,您的实际用例会更加复杂和不同。
我从答案中了解到问题是由 IP 冲突/使用相同的子网引起的。
我从@Albin 链接的问题中找到了满足当前需求的令人满意的解决方案——通过VPN 的网络接口临时路由IP:
(我在 macOS 上)
谢谢大家一起思考。这是我的荣幸 :)