AWS 上的 OpenVPN(在 NAT 模式下有效,但在路由模式下无效)

AWS 上的 OpenVPN(在 NAT 模式下有效,但在路由模式下无效)

我有一个全新的 VPC (10.0.0.0/16),其中有 3 个公共子网(指向 IGW)和 3 个私有子网(每个子网都有一个 NAT GW)。我在公共子网中部署了一个 OpenVPN 设备,并将其配置为使用 NAT 模式(Yes, using NAT在路由配置中)。我在其中一个私有子网中还有一个测试实例。OpenVPN 实例和测试实例都具有“慷慨”灵活性的 SG 组(即,出于测试目的,允许一切进出)。在 OpenVPN 上,我已经10.0.0.0/16在现场进行了配置Specify the private subnets to which all clients should be given access (one per line):

我可以从我的 Mac(在家庭网络 192.168.178.0/24 上)建立隧道,并且可以轻松访问测试实例。一切顺利。

现在我想切换到路线模式。

  • 我将路由模式更改为Yes, using Routing。我禁用了 OpenVPN 实例上的源/目标检查。
  • 我向 VPC 中的所有 4 个路由表(3 个私有子网和 1 个公共子网)添加了静态路由,以表明指向192.168.178.0/24(我的家庭网络)的流量应该转到 OpenVPN 实例(公共子网可能不需要这样做)。
  • 除了 之外,我还添加了192.168.178.0/24Specify the private subnets to which all clients should be given access (one per line):字段(不确定这是否是必需的)10.0.0.0/16
  • 我已经重新配置了用于登录的用户的用户权限Use Routing,并再次指定了上述两个子网(10. 和 192.)。

我仍然可以建立隧道。我可以访问 OpenVPN 实例的内部 IP:

$ traceroute 10.0.4.223          
traceroute to 10.0.4.223 (10.0.4.223), 64 hops max, 52 byte packets
 1  10.0.4.223 (10.0.4.223)  178.345 ms  174.470 ms  173.680 ms
$

但我无法访问私有子网中的测试实例:

$ traceroute 10.0.165.139
traceroute to 10.0.165.139 (10.0.165.139), 64 hops max, 52 byte packets
 1  172.27.232.1 (172.27.232.1)  194.976 ms  177.014 ms  174.402 ms
 2  * * *
 3  * * *
 4  * * *
^C
$

有趣的是,如果我通过 ssh 进入我的 OpenVPN 服务器并尝试在启动隧道的本地工作站上 curl NGINX,我无法访问它。看起来工作站可以访问 OpenVPN 服务器(参见上面的跟踪10.0.4.223),但 OpenVPN 服务器无法访问工作站(出于某些原因)。

看起来从工作站发起的流程能够找到到 OpenVPN 实例的路由(并返回)。但是,从工作站到测试实例(并返回)的路由在某处中断,并且从 OpenVPN 实例发起到工作站的路由似乎也中断了(参见 curl)。

答案1

我最终发现,OpenVPN Access Server 设备无法配置为连接回本地子网上客户端的本机 IP。但是,可以通过 VPN 分配的隧道 IP 访问客户端。此 IP 可以基于每个用户静态配置,也可以来自设备上定义的池。

就我而言,我已经配置了两者(见图)。

在此处输入图片描述

重要的是要知道这也是需要在路由信息中使用的子网。也就是说,位于 10.0.0.0/16 网络中的 IP 可以将客户端设备连接到分配的 172.27 地址之一,因此需要在路由表中指定 172.27 网络(而不是客户端设备的本地本机网络 - 在我的示例中为 192.168.178.0/24)。

相关内容