我是网络连接的新手,我正在开发一个需要连接到服务器“Y”的应用程序,该连接只允许通过防火墙的特定 IP,该 IP 必须是专用 IP。
说了这么多,我有一个具体的问题:
我在一台“自己的”服务器中有一个专用 IP,如果我从 X 计算机通过 VPN 连接到该“自己的”服务器,那么我的 X 计算机是否也会使用我“自己的”服务器的专用 IP 与服务器“Y”进行通信?
提前感谢您的有益评论
答案1
如果我正确理解了这个问题,答案通常是否定的。
VPN 会创建一个与物理接口不同的虚拟网络接口。这意味着它使用的 IP 地址范围与启动 VPN 之前使用的 IP 地址范围不同。
每个网络接口(物理的或虚拟的)都会为您的计算机提供一个在其自己的 IP 地址范围内的 IP 地址,该 IP 地址可以是静态的,也可以是动态的。
这意味着您的计算机在物理网络和 VPN 网络上不能拥有相同的 IP 地址。
答案2
我在一台“自己的”服务器中有一个专用 IP,如果我从 X 计算机通过 VPN 连接到该“自己的”服务器,那么我的 X 计算机是否也会使用我“自己的”服务器的专用 IP 与服务器“Y”进行通信?
从某种意义上说,是的——并非总是如此,因为这取决于 VPN 服务器的设置方式,但这确实是主要的VPN 的使用,通常很容易进行设置以允许这样做。
(许多人以这种方式通过 VPN 服务器路由所有互联网使用,但你可以配置 VPN 客户端来路由只是与服务器 Y 进行通信(如果这是您需要的)。
然而,在通常的配置中,客户端计算机不会直接地使用服务器的 IP 地址(正如 harrymc 所解释的);相反,它的工作方式与家用路由器非常相似,VPN 连接内有“内部”地址,路由器在数据包离开系统之前执行 NAT 来交换地址。然而,结果是流量看起来好像来自 VPN 服务器 - 您的服务器“Y”无法真正区分。
(从技术上讲,也可以将 VPN 服务器的专用地址“移动”到 VPN 客户端,但这是一个稍微复杂的设置,并且通常要求服务器至少有两个地址。)
大多数配置都是在 VPN 软件“外部”完成的;例如,使用基于 Linux 的 VPN 服务器,MASQUERADE
无论您选择哪种 VPN 软件,您都需要在 iptables 中配置规则。
替代选项:让您的应用支持 HTTP“CONNECT”代理或 SOCKS5 代理。两者都得到广泛支持,并且配置比 VPN 更简单。(例如,大多数 SSH 客户端无需任何配置即可模拟 SOCKS5。)