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/16Specify 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/24到該Specify 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 伺服器並嘗試在我啟動隧道的本機工作站上捲曲 NGINX,我將無法存取它。看起來工作站可以存取 OpenVPN 伺服器(請參閱上面的追蹤10.0.4.223),但 OpenVPN 伺服器無法存取工作站(由於某些原因)。

看起來從工作站發起的流能夠找到通往(以及返回)OpenVPN 實例的路由。然而,從工作站到測試執行個體(以及返回)的路由在某處中斷,並且當從 OpenVPN 執行個體啟動到工作站時,它似乎也中斷了(請參閱curl)。

答案1

我最終發現 OpenVPN 存取伺服器設備無法設定為連接回本機子網路上用戶端的本機 IP。但是,可以透過 VPN 分配的隧道 IP 到達客戶端。此 IP 可以針對每個使用者進行靜態配置,也可以來自裝置上定義的池。

就我而言,我已經配置了兩者(見圖)。

在此輸入影像描述

重要的是要知道這也是路由資訊中需要使用的子網路。也就是說,位於 10.0.0.0/16 網路中的 IP 可以將客戶端設備連接到分配的 172.27 位址之一,因此需要在路由表中指定 172.27 網路(而不是本地網路)客戶端設備- 在我的範例中為192.168.178.0/24)。

相關內容