PPTD VPN 如何将流量路由至网络上的其他服务器?

PPTD VPN 如何将流量路由至网络上的其他服务器?

我有许多服务器,它们向网络公开各种公共服务。这些服务器位于一台使用 IPTables 充当防火墙的服务器后面,该服务器转发往返于服务器的流量。所有服务器都有一个公共 IP,例如在 1.2.3.x 范围内。

我使用 PPTD 设置了到防火墙服务器的 VPN。它连接到 192.168.0.x 范围内的本地 IP 范围。我可以连接并通过 SSH 连接到本地计算机。但是,当我使用其他服务器之一的公共 IP 时,它会通过互联网而不是 VPN 进行路由。

连接后,如何让 VPN 服务器代表其他服务器接受和路由流量?

答案1

您可能指的是“PPTP”VPN。

这种类型的 VPN 通过在客户端创建虚拟网络适配器来工作。任何网络适配器(无论是否虚拟)都可以/将具有路由表条目,这可以控制流量的去向。

所有传出流量都会根据路由表进行检查。具有较高或更具体子网掩码的路由表条目会被选中,然后再发送具有较低或更不具体子网掩码的流量。192.168.0.X 的子网掩码为 255.255.255.0 或 /24。默认网关会收集未被其他任何网关接收的所有流量,其“子网掩码”为 0.0.0.0 或 /0。

通过为适配器分配 IP 地址和子网掩码,您会自动获得免费路由。假设您的家用路由器为您的一个适配器分配了 IP 地址 10.1.1.40 和子网掩码 255.255.0.0(等于 /16)。这本质上意味着从该适配器发出的任何流量都可以到达 10.1.XX 上的任何位置,因此会为此生成一个路由表条目。根据路由表检查传出流量,如果它要到达 10.1.XX 中的其他地方,它将不会通过您的默认网关(即 /0)。

希望到现在为止,您可以了解到,如果您将流量发送到不在 VPN 适配器子网内的 IP,它将通过默认网关,从而通过整个 Internet。

真正完成你想要做的事情的唯一方法是:

  • 在服务器端配置 VPN,告诉客户端使用 VPN 适配器作为默认网关。这将导致所有客户端流量都通过您的 VPN。
  • 在服务器端配置 VPN,告知客户端使用 VPN 内的服务器进行 DNS
  • 配置一些 IPTables 防火墙规则,这些规则将捕获服务器公共 IP 上的传出流量,并将其重定向到适当的 VPN 可访问 IP。如果客户端使用您的 VPN 作为默认网关,您可能实际上不需要这样做,但如果客户端仅尝试访问内部地址,这将确保 VPN 之外不会有流量泄漏。
  • 您还可以运行单独的 DNS 服务器或单独的 DNS 域,该服务器或域只能在 VPN 内访问,并且可以将 VPN 上的客户端名称解析为内部 VPN 地址而不是公共 IP 地址。

另一点补充说明:将 192.168.0.X 或 192.168.1.X 用于公司 VPN 是非常糟糕的想法 - 因为这可能会与家用路由器的常用 IP 范围设置冲突。您应该将其更改为家中不常用的地址,例如 192.168.88.X。

相关内容