VPN マルチサイトルーティング

VPN マルチサイトルーティング

現在、マルチサイト(3サイト)VPNを設定しています。

ここに簡単な図を示します。

ここに画像の説明を入力してください

これまでのところ、セットアップは問題なく、期待どおりに動作しています。10.10.20.1 <-> 10.10.10.1 および 10.10.30.1 <-> 10.10.10.1 への ping は正常に動作しています。

ここで、10.10.20.1 から 10.10.30.1 に接続する方法を理解したいと思います。

これを行うには を使用する必要があると思いますがiptables、正しいですか?

必要な手順とその理由を誰かが説明してくれると、とても助かります!

答え1

NAT を使用しないでください。NAT は可能な限り避けるべき一時的なものです。NAT は TCP/IP の基礎として使用されるエンドツーエンドの原則に違反します。

静的ルートを使用する場合は、それらをトンネルに向ける必要があります。ルータがルーティング情報 (OSPF など) を交換する場合、ルートは自動的に確立されるはずです。トンネルを確立するには、静的ルートが必要な場合があります (動的ルーティングはトンネルが確立された後にのみ更新されます)。

答え2

分かりました。これが私の長くて簡単な解決策です:

長い(ではない)解決策

下のサーバーの場合:

iptables -A FORWARD -s 10.10.30.0/24 -d 10.10.20.0/24 -i enp2s0 -m policy --dir in --pol ipsec --reqid 2 --proto esp -j ACCEPT
iptables -A FORWARD -s 10.10.20.0/24 -d 10.10.30.0/24 -o enp2s0 -m policy --dir out --pol ipsec --reqid 2 --proto esp -j ACCEPT
iptables -A FORWARD -s 10.10.20.0/24 -d 10.10.30.0/24 -i enp2s0 -m policy --dir in --pol ipsec --reqid 1 --proto esp -j ACCEPT
iptables -A FORWARD -s 10.10.30.0/24 -d 10.10.20.0/24 -o enp2s0 -m policy --dir out --pol ipsec --reqid 1 --proto esp -j ACCEPT

左上のサーバー:

ip route add 10.10.30.0/24 via 138.x.x.1 dev eth0 proto static src 10.10.20.1 table 220
iptables -A FORWARD -s 10.10.30.0/24 -d 10.10.20.0/24 -i eth0 -m . policy --dir in --pol ipsec --reqid 2 --proto esp -j ACCEPT
iptables -A FORWARD -s 10.10.20.0/24 -d 10.10.30.0/24 -o eth0 -m policy --dir out --pol ipsec --reqid 2 --proto esp -j ACCEPT

右上のサーバー:

ip route add 10.10.20.0/24 via 108.x.x.1 dev eth0 proto static src 10.10.30.1 table 220
iptables -A FORWARD -s 10.10.20.0/24 -d 10.10.30.0/24 -i eth0 -m policy --dir in --pol ipsec --reqid 2 --proto esp -j ACCEPT
iptables -A FORWARD -s 10.10.30.0/24 -d 10.10.20.0/24 -o eth0 -m policy --dir out --pol ipsec --reqid 2 --proto esp -j ACCEPT

ルーティングに関しては機能しますが、tcpdump で明らかになったように、strongswan は接続を禁止しています。

[bottom]$ tcpdump -nni enp2s0 icmp
15:35:22.512437 IP 109.x.x.x > 85.x.x.x: ICMP host 109.x.x.x unreachable - admin prohibited, length 48

迅速な解決策

このソリューションは、strongswan/ipsec がすべての iptable ルートと静的ルートを管理し、指定されたサブネットへのアクセスも許可するため、非常に便利です。

下のサーバーの場合:

# /etc/ipsec.conf
conn top-left-to-bottom
    ...
    leftsubnet=10.10.10.0/24,10.10.30.0/24
    ...

conn top-right-to-bottom
    ...
    leftsubnet=10.10.10.0/24,10.10.20.0/24
    ...

左上のサーバー:

# /etc/ipsec.conf
conn top-left-to-bottom
    ...
    rightsubnet=10.10.10.0/24,10.10.30.0/24
    ...

右上のサーバー:

# /etc/ipsec.conf
conn top-right-to-bottom
    ...
    rightsubnet=10.10.10.0/24,10.10.20.0/24
    ...

成功した tcpdumped ping は次のようになります。

[bottom]$ tcpdump -nni enp2s0 icmp
15:52:37.160859 IP 10.10.20.1 > 10.10.30.1: ICMP echo request, id 1296, seq 1, length 64
15:52:37.164971 IP 10.10.30.1 > 10.10.20.1: ICMP echo reply, id 1296, seq 1, length 64

関連情報