OpenVPN:屏蔽远程网络 IP 范围

OpenVPN:屏蔽远程网络 IP 范围

我有一个使用 OpenVPN 和 OpenWrt/LEDE 路由器的 VPN 设置。

一切都运行正常,除了当我在家(这是我的主要办公室)时,我有相同的网络设置。

以下是两个 LAN 共享的设置:

OpenVPN using Tunnelblick client on Mac OS X

Router:    10.0.0.1
Mask:      255.255.255.0
DNS:       10.0.0.1

建立隧道使得两个网络现在共享同一个子网,这是一件坏事,而且无法解决。共享我的蜂窝数据是可行的,因为它不在 LAN 中。

现在,我一直在寻找一种方法,让所有 VPN IP 都伪装成 10.0.1.*,而不是它们的真实本地 IP。没有找到任何快速解决方案。

这样它的映射如下:

10.0.1.5 > goes through VPN > 10.0.0.5
10.0.0.5 > stays local      > 10.0.0.5

也许我可以使用 OpenVPN 客户端配置文件中某个设置将所有远程 IP 屏蔽到另一个子网?

答案1

除了您似乎想要避免的正确解决方案之外,没有其他简单的解决方案 - 您真的不想这样做,因为在网络中的两个地方拥有相同的 IP 会破坏一切。不幸的是,正确的解决方案是将 1 个网络移至不同的范围。

根据网络的具体设置方式,您可以使用一些技巧。不幸的是,这些解决方案很混乱,很难调试。首先是一般的东西:

您可以使用网络掩码来路由流量。更具体的网络掩码将优先于更通用的网络掩码。因此,您可以通过 VPN 链接公布单个 IP,这样路由器就知道优先选择哪个 IP。

这就留下了一个问题,虽然路由器知道如何引导流量,但流量无法到达路由器,因为它在 LAN 上。您可以通过在工作站上使用路由器网关为特定 IP 设置静态路由或将 OpenVPN 移至工作站来解决此问题。这也意味着 LAN 中的 IP 地址重叠意味着如果两个站点上的 IP 相同,您的 VPN 将无法工作。如果主机支持,您可以使用源路由按主机解决这个问题。说起来容易做起来难,不确定 Windows 是否可以开箱即用。

另一种方法是使用端口映射并让 VPN 服务器转换您的请求。例如,您从 100.0.0.1 请求某些内容,VPN 服务器使用 NAT 将数据包重写为 10.0.0.1。这要简单得多,但意味着放弃 DNS 或运行解决方案 DNS。

相关内容