我已在 AWS VPC 上的公有子網路中的 Bastion 實例上設定了 OpenVPN 伺服器。現在,我可以使用 OpenVpn 用戶端存取該執行個體的私人 IP 位址,但我們想要存取在其他私有子網路中執行的 EC2 實例在專有網路中。
這是我的 server.conf 檔案:
port 1194
# TCP or UDP server?
;proto tcp
proto udp
;dev tap
dev tun
;dev-node MyTap
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/server.crt
key /etc/openvpn/easy-rsa/pki/private/server.key
dh /etc/openvpn/easy-rsa/pki/dh.pem
;topology subnet
server 10.8.0.0 255.255.255.0
;client-config-dir ccd
route 10.10.0.0 255.255.0.0
route 10.10.12.0 255.255.255.0
route 10.10.52.0 255.255.255.0
route 10.10.51.0 255.255.255.0
push "route 10.10.0.0 255.255.0.0"
push "route 10.10.12.0 255.255.255.0"
push "route 10.10.11.0 255.255.255.0"
push "route 10.10.51.0 255.255.255.0"
push "route 10.10.52.0 255.255.255.0"
;learn-address ./script
;push "redirect-gateway def1 bypass-dhcp"
;push "dhcp-option DNS 208.67.222.222"
;push "dhcp-option DNS 208.67.220.220"
client-to-client
#keepalive 10 120
tls-auth ta.key 0 # This file is secret
cipher AES-256-CBC
user nobody
group nobody
status openvpn-status.log
verb 3
由於我的網路知識還沒有達到適當的水平,如果有人知道如何解決這個問題,我將非常感激。
謝謝
答案1
我的 VPC 中有多個 Mikrotik Cloud RouterOS 作為 OpenVPN 伺服器,我也花了一段時間才使其正常工作。
我不清楚您的基礎設施以及您當前的問題是什麼,但是我假設您的用戶端已經可以連接到 OpenVPN 伺服器,但無法存取其他私有 EC2 伺服器。
我注意到您的客戶端 IP 池 (10.8.0.0/24) 與 OpenVPN 伺服器內部 IP (10.10.0.0/16) 不同。這會使 VPC 路由變得複雜,因為您的 VPC 路由表不知道 10.8.0.0/24 是什麼子網路以及將相應流量路由到哪裡。
我解決這個問題的方法是應用 NAT,這樣當封包離開 OpenVPN 伺服器時,我的客戶端流量(例如 IP 10.8.0.100)將偽裝成 OpenVPN 伺服器(例如 IP 10.10.0.100)。這樣,私有 EC2 伺服器將始終透過 OpenVPN 伺服器進行路由。
您還需要檢查幾件事:
EC2 安全群組允許流量
VPC 子網路與您的路由表關聯
VPC路由表有對應的路由設定
如果發生 NAT,EC2 來源/目標檢查將被停用
另一個解決方案可能是設定路由表,以便將所有 10.8.0.0/24 流量發送到您的 OpenVPN 伺服器,但我從來沒有成功過,如果您走這條路線,祝您好運。