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 にありますが、ホスト マシンからも同じ結果が得られます。
どのような助けでも大歓迎です!