使用 iptables 和 PPTP VPN 进行网络重新映射

使用 iptables 和 PPTP VPN 进行网络重新映射

我有两个不同的网络:

  1. 家庭网络 192.168.1.0/24
    A - 家庭电脑(192.168.1.100)
    B - 家庭路由器(192.168.1.1 lan ip - xxxx 公网ip)
  2. 办公室网络 192.168.1.0/24
    C - 文件服务器(192.168.1.200)
    D - 办公室路由器(192.168.1.1 lan ip - xxxx 公网 ip)

两个网络的 IP 地址相同,无法更改。
我在 D(办公室路由器)中设置了 pptp 服务器。

我在 A(家用电脑)上设置了 pptp 客户端,获取了隧道的第二个 IP 172.19.0.1

我想从 A(192.168.1.100)访问 C(192.168.1.200),但由于 IP 范围相同,我只能到达 D。

我想伪装或重新映射网络 2,以便我可以从 A(192.168.1.100)访问 C(172.19.0.200),因此 D 路由器可以将 IP 172.19.0.200 转换为 192.168.1.200。

路由器 D 是基于 Linux 的,因此解决方案认为必须使用 iptables 进行设置。

有人可以帮忙或者提供有关如何配置的线索吗?

答案1

人们普遍认为,您无法在两个具有相同网络范围的站点之间建立 VPN 隧道,这是有原因的。但是,以下一些注意事项和建议可以帮助您:

您是否输入了公共 IP?192.168.0.0/16 是私有的、不可路由的 IP。如果这些确实是您每个路由器的公共 IP,那么您的路由器就不是边缘设备,并且需要在边缘路由器(可能是调制解调器)上进行其他配置,以将适当的流量转发到路由器。您的路由器可能还需要能够通过此配置支持 NAT-T。

除此之外,如果我理解您迄今为止的设置:

客户端 A --(vpn)-- 路由器 D -- 服务器 C

客户端 A:172.19.0.1/24 路由​​器 D 外部:??(请参阅上面的注释) 路由器 D 内部:??(请参阅上面的注释) 服务器 C:172.19.0.200/24(所需)

我可以看到通过在服务器上安装第二张网卡(假设它还没有额外的网卡)并将该卡设置为 172.19.0.200/24 来实现连接,这将要求您能够在路由器 D 上添加第二个网络(您的标准是 192.168.1.0 网络保持不变)。服务器 C 路由表需要反映发往 172.19.0.0/24 网络的流量应该从第二张卡发出,而第二个网络上的路由器 IP 是网关。

这不是最干净的解决方案,它实际上只是通过创建第二个网络并同时将服务器放在两个网络上来避免同一网络问题,但它应该有效。在分配大量时间或资金之前,您肯定会想要研究设备限制。

编辑 关于 OP 的评论。一般来说,您无法对传入的 VPN 流量进行 NAT,因为它在路由器防火墙处仍处于加密状态。VPN 之所以能正常工作,是因为其流量在 VPN 流量选择器中指定了 NONAT。除非您的办公室路由器硬件在这方面是独一无二的,并且您可以越过防火墙执行 NAT,否则我认为您想要做的事情是不可能的。很抱歉,我无法进一步提供帮助。

祝你好运 :)

答案2

我终于找到了解决问题的方法。为了对整个网络进行 NAT,需要配置 iptables。这是由 NETMAP 选项实现的,因此我们需要运行:

iptables -v -t nat -A PREROUTING -d 192.168.1.0/24 -j NETMAP --to 172.19.0.0/24

无需特殊硬件。如果路由器基于 Linux,则可以使用 iptables。对于其他系统,请检查与 netmap 等效的选项。

相关内容