我使用 openVPN 应用程序并从这里下载其 openVPN 配置文件:http://www.vpngate.net/en/ 连接到 VPN 服务器。假设我尝试连接的 VPN 服务器位于 NAT 后面,因此如果我发送请求,显然会被其 NAT 阻止。VPN 服务器根本不知道在这个世界上谁想与它连接。VPN 服务器使用什么拓扑结构来接受来自任何 IP 地址和端口的每个 VPN 客户端的请求?我假设 VPN 服务器可能正在使用“端口转发”,即接受每个传入请求,无论请求来自哪个 IP 地址和端口。
答案1
假设我尝试连接的 VPN 服务器位于 NAT 后面,那么如果我发送请求,它显然会被其 NAT 阻止。VPN 服务器根本不知道这个世界上谁想与它连接。
是的,如果 VPN 服务器位于 NAT 后面,您将无法连接到它。VPN 服务器实际上会打开一个端口供其他人连接,然后世界各地的人都会连接到它。“端口转发”意味着假设您在 VPN 服务器和互联网(或路由器)之间有一个防火墙,然后您定义一个转发,以便到路由器上特定端口的每个连接都完全转发到服务器,就好像路由器不存在一样。就拓扑而言,最重要的是让(至少)一个路由器连接到互联网,以便服务器可以将请求传递给它。它可以是任何东西(通常在小型设置中是星星)。所以基本流程如下:
客户端电脑 --> 客户端路由器 --> ISP --> 互联网上的其他路由 --> 服务器的 ISP --> 服务器的路由器 --> 服务器
反之亦然。最后,客户端路由器的 IP 和服务器的路由器用于所有路由。最后一步是涉及端口转发的步骤(实际上,单个路由器后面可能有多台机器在不同端口上运行 VPN)