ホストは AAA、BBB、CCC の 3 つです。
- ホストAAAはOpenVPNサーバーIPでr172.17.10.1マスク 255.255.255.0。
- ホストBBBB2つのtunインターフェースがあります: •OpenVPN サーバーIP付き172.16.10.1マスク255.255.255.0 •OpenVPNクライアントIP付き172.17.10.50(OpenVPN サーバー AAA に接続)
- ホストCCCIPアドレスを持つOpenVPNクライアントです172.16.10.50(OpenVPN サーバー BBB に接続されています)。172.16.10.1経由で172.17.10.0/24へのルーティングがあります。
私の目標は、ホスト CCC がホスト AAA に正常に ping を実行し、ホスト AAA がホスト CCC の元の IP (172.16.10.50) からのトラフィックを確認することです。
iptables -A FORWARD... -J ACCEPT
ホスト BBB に設定しました。
ホストBBBでセットアップしたポストルーティングルール。たとえば、MASQUERADE では ping は成功しますが、問題は、この方法ではホスト AAA が src IP 172.17.10.50 (ホスト BBB からの IP) を認識することです。
iptables -t nat -D POSTROUTING -s 172.16.10.50 -d 172.17.10.1 -o tun17 -j MASQUERADE
MASQUERADEをSNATに変更しましたが、pingが失敗します:
iptables -t nat -A POSTROUTING -s 172.16.10.50 -d 172.17.10.1 -o tun17 -j SNAT --to-source 172.16.10.50
問題は、tcpdump でトラフィックがホスト BBB から出ておらず、ホスト AAA へのトラフィックがないことがわかったことです。
root@BBB:# tcpdump -ni tun17
listening on tun17, link-type RAW (Raw IP), capture size 262144 bytes
12:16:45.777464 IP 172.16.10.50 > 172.17.10.1: ICMP echo request, id 30730, seq 1149, length 64
12:16:46.801548 IP 172.16.10.50 > 172.17.10.1: ICMP echo request, id 30730, seq 1150, length 64
SNATを送信元IP 172.17.10.55に変更しようとしました(172.17.10.0/24 ネットワークからの IP アドレス) ですが、再び ping は失敗し、トラフィックは再びホスト BBB から出ません。
iptables -t nat -A POSTROUTING -s 172.16.10.50 -d 172.17.10.1 -o tun17 -j SNAT --to-source 172.17.10.55
12:16:47.825419 IP 172.17.10.55 > 172.17.10.1: ICMP echo request, id 30730, seq 1151, length 64
12:16:48.849460 IP 172.17.10.55 > 172.17.10.1: ICMP echo request, id 30730, seq 1152, length 64
--to-source 172.16.10.50 や --to-source 172.17.10.55 でも SNAT が使用できないのはなぜですか?(どの IP アドレスが同じ 172.17.10.0/24 ネットワークからのものか) ホスト CCC から 172.17.10.1 に ping を実行しますか?
トラフィックはホスト BBB に留まり、tun17 から出ていないようです。トラフィックは HOST CCC から HOST BBB に移動し、tun16 から tun17 に転送されますが、SNAT を使用してホスト AAA に送信することはできません。
ping は、パケットの送信元 IP アドレスが 172.17.10.50 の場合にのみ機能します。たとえば、送信元 IP を 172.17.10.55 に変更すると、ping は失敗します。
問題はファイアウォールでもルーティングでもないと思います。OpenVPN の制限が原因だと思いますが、確信はありません。2 つの OpenVPN サーバーは、--topology subnet
/24 ネットワーク マスクのモードになっています。
答え1
追加する必要があるイルートCCD で内部の OpenVPN ルーティング テーブルを操作します。
そうしないと、openvpn はパケットをどこにルーティングして戻すかわかりません。openvpn ログには、「MULTI: クライアント [IP アドレス] からの送信元アドレスが不正です。パケットがドロップされました」のような行があるはずです。
詳細はこちらをご覧ください: