AWS VPCプライベートサブネットからOpenVPN経由でアクセスできるホストにアクセスする必要があります。私のVPC設定は、ここ。
プライベート ネットワーク内に、次のコマンドを使用して OpenVPN クライアントを設定する EC2 インスタンスを作成しました。
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 の背後にあるホストにアクセスできないことです。EC2 インスタンスから直接 VPN の背後にあるホストにアクセスできるため、OpenVPN クライアントは正常に動作しています。私が観察できた範囲では、Docker からのトラフィックが EC2 インスタンスに到達することはないと思いますが、100% 確信はありません。
答え1
VPC ネットワークはソフトウェア定義ネットワーク、つまりイーサネットをエミュレートするレイヤー 3 ネットワークです。デフォルトでは、ネットワークは、送信元アドレスまたは宛先アドレスとしてそのインスタンスのアドレスを正確に持たない EC2 インスタンスとの間のトラフィックの通過を許可しません (トラフィックの方向によって異なります)。そのため、このような場合にはチェックを無効にする必要があります。
ソースまたは宛先のチェックの変更
Source/Destination Check 属性は、インスタンスでソース/宛先チェックを有効にするかどうかを制御します。この属性を無効にすると、インスタンスは、そのインスタンスに特に送信されていないネットワーク トラフィックを処理できるようになります。たとえば、ネットワーク アドレス変換、ルーティング、ファイアウォールなどのサービスを実行しているインスタンスでは、この値を に設定する必要があります
disabled
。デフォルト値は ですenabled
。https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#change_source_dest_check