OpenVPN 経由で AWS と Azure を接続する

OpenVPN 経由で AWS と Azure を接続する

OpenVPN 経由で 2 つのネットワーク (AWS と Azure) を接続しようとしています。他の実装 (OpenSwan+Azure GW など) があることは承知していますが、他のクラウド VPS プロバイダーにも拡張する予定なので、最大限の移植性が必要です。

OpenVPN ゲートウェイは相互に ping を実行でき、各ゲートウェイは反対側のネットワーク上のすべての IP を ping できますが、一方のネットワーク上のコンピューターはもう一方のネットワーク上のコンピューターを ping することはできません (反対側のゲートウェイを ping することもできません)。

ここで私が見逃しているものは何でしょうか? さまざまな理由で多くの人がこの問題を抱えているようですが、50 回以上試した後、私はあきらめて質問することにしました :)

ネットワーク 1:

dev tun ポート 1194 ifconfig 10.8.223.40 10.8.223.41 ルート 10.22.1.0 255.255.255.0 vpn_gateway comp-lzo keepalive 10 60 persist-key persist-tun ユーザー nobody グループ nobody シークレット /etc/openvpn/static.key

ip route
default via 10.0.1.1 dev eth0
10.0.1.0/27 dev eth0  proto kernel  scope link  src 10.0.1.9
10.22.1.0/24 via 10.8.223.41 dev tun0
10.33.0.0/24 via 10.33.0.2 dev tun2
10.33.0.2 dev tun2  proto kernel  scope link  src 10.33.0.1
10.8.223.41 dev tun0  proto kernel  scope link  src 10.8.223.40 

ネットワーク 2

dev tun ポート 1194 リモート my_ext_ip 1194 ifconfig 10.8.223.41 10.8.223.40 ルート 10.0.0.0 255.254.0.0 vpn_gateway comp-lzo keepalive 10 60 persist-key persist-tun ユーザー nobody グループ nobody シークレット /etc/openvpn/static.key

ip route
default via 10.22.1.1 dev eth0
10.0.0.0/15 via 10.8.223.40 dev tun0
10.22.1.0/24 dev eth0  proto kernel  scope link  src 10.22.1.9
10.8.223.40 dev tun0  proto kernel  scope link  src 10.8.223.41 

iptables に関しては次のようになっています:

両ネットワーク:iptables -I FORWARD -i eth0 -o tun0 -m conntrack --ctstate NEW -j ACCEPT iptables -I FORWARD -i tun0 -o eth0 -m conntrack --ctstate NEW -j ACCEPT

ネットワーク 1:iptables -t nat -A POSTROUTING -s "10.0.0.0/15" -o "eth0" -j MASQUERADE iptables -A FORWARD -p tcp -s 10.0.0.0/15 -d 0.0.0.0/0 -j ACCEPT

iptables -t nat -A POSTROUTING -s "10.8.223.40/32" -o "eth0" -j MASQUERADE iptables -A FORWARD -p tcp -s 10.8.223.40/32 -d 0.0.0.0/0 -j ACCEPT

ネットワーク2:iptables -t nat -A POSTROUTING -s "10.22.1.0/24" -o "eth0" -j MASQUERADE iptables -A FORWARD -p tcp -s 10.22.1.0/24 -d 0.0.0.0/0 -j ACCEPT

iptables -t nat -A POSTROUTING -s "10.8.223.41/32" -o "eth0" -j MASQUERADE iptables -A FORWARD -p tcp -s 10.8.223.41/32 -d 0.0.0.0/0 -j ACCEPT

私の想定では、(インターネット アクセス用に別々のゲートウェイがあるため)両方のネットワーク上の各非ゲートウェイ コンピューターにルートを追加して、反対側のネットワーク宛てのパケットをローカル OpenVPN ゲートウェイ経由でルーティングする必要があると考えていました。

マシン 10.0.1.7 に対してこれを実行しました:

IPルートは10.0.1.9経由で10.22.1.0/24を追加します

だから今私は次のものを持っています:

デフォルト 10.0.1.1 経由 dev eth0 10.0.1.0/27 dev eth0 プロトカーネルスコープリンクソース 10.0.1.7 10.22.1.0/24 経由 10.0.1.9 dev eth0 172.17.0.0/16 dev docker0 プロトカーネルスコープリンクソース 172.17.42.1

しかし、10.22.1.9 (反対側のゲートウェイ) への traceroute はまだどこにも行きません...

PS 私のマシンのほとんどは Docker にありますが、ホスト マシンからも同じ結果が得られます。

どのような助けでも大歓迎です!

関連情報