透過 OpenVPN 從 AWS VPC 路由流量

透過 OpenVPN 從 AWS VPC 路由流量

我需要從我的 AWS VPC 私人子網路存取一些可透過 OpenVPN 存取的主機。我的 VPC 設定與描述的類似這裡。

在專用網路內,我建立了一個 EC2 實例,它使用以下命令設定 OpenVPN 用戶端:

openvpn --verb 3 --config config.ovpn  --script-security 2 --up up.sh

up.sh腳本檔案內容:

#!/bin/bash

/sbin/sysctl -w net.ipv4.ip_forward=1
/sbin/iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT 2>&1
/sbin/iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED \
-j ACCEPT 2>&1
/sbin/iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE 2>&1

假設 171.20.0.0/16 是 VPN 背後的子網路。私有子網路的路由表如下所示:

DESTINATION    TARGET
10.0.0.0/16    local
0.0.0.0/0      nat-gateway
171.20.0.0/16  ec2-instance-with-openvpn-client

我正在使用預設安全群組。

我的問題是,我無法從私有子網內的 ECS 叢集中執行的 docker 映像存取 VPN 後面的主機。 OpenVPN 用戶端運作正常,因為我可以直接從 EC2 執行個體存取 VPN 後面的主機。根據我的觀察,我認為來自 docker 的流量永遠不會到達 EC2 實例,但我對此並不能 100% 確定。

答案1

VPC 網路是一個軟體定義的網路-模擬乙太網路的第 3 層網路。預設情況下,網路不允許流量傳入或傳出不具有該執行個體位址作為來源或目標位址的 EC2 執行個體(取決於流量的方向)...因此必須停用該檢查對於像這樣的情況。

更改來源或目標檢查

來源/目標檢查屬性控制是否在實例上啟用來源/目標檢查。停用此屬性可讓執行個體處理並非專門針對該執行個體的網路流量。例如,運行網路位址轉換、路由或防火牆等服務的實例應將此值設為disabled。預設值為enabled

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#change_source_dest_check

相關內容