外部静的IPを使用したStrongSwan IKEv2セットアップを備えたリモート(集中型)VPNサーバーがあるとします。
そして、内部ネットワークに対してNATを実行する2つのゲートウェイ:
ゲートウェイは、StrongSwanを使用して集中サーバーに接続されます。
接続はゲートウェイからサーバーへ、およびサーバーからゲートウェイへ完全に機能します。pingは機能し、サーバー/ゲートウェイ上のサービスにアクセスします。ゲートウェイの背後にあるデバイスも問題なくサーバーにアクセスできます。
別のゲートウェイ間でコンピュータにアクセスしようとすると、問題が始まります。
一元化:
conn base
keyexchange = ikev2
keyingtries = %forever
forceencaps = yes
compress = no
left = centralized
leftid = @centralized
leftauth = pubkey
leftca = "..."
leftcert = centralized.crt
leftupdown = Sudo -E ipsec _updown iptables
leftsubnet = 192.168.1.65
right = %any
rightauth = pubkey
rightauth2 = psk
rightca = %same
conn gateway-first
auto = add
rightid = @gateway-first
rightcert = gateway-first.crt
rightsubnet = 192.168.1.32/27
rightsourceip = 192.168.1.66
also = base
conn gateway-second
auto = add
rightid = @gateway-second
rightcert = gateway-second.crt
rightsubnet = 192.168.1.0/27
rightsourceip = 192.168.1.67
also = base
ゲートウェイ優先:
conn gateway-first
auto = route
dpdaction = restart
closeaction = restart
keyexchange = ikev2
keyingtries = %forever
forceencaps = yes
compress = no
rightid = @centralized
right = centralized
rightauth = pubkey
rightca = "..."
rightcert = centralized.crt
rightsubnet = 192.168.1.65,192.168.1.0/27
leftid = @gateway-first
left = %defaultroute
leftauth = pubkey
leftauth2 = psk
leftca = %same
leftcert = gateway-first.crt
leftupdown = Sudo -E ipsec _updown iptables
leftsubnet = 192.168.1.32/27
leftsourceip = %config4
ゲートウェイ秒:
conn gateway-second
auto = route
dpdaction = restart
closeaction = restart
keyexchange = ikev2
keyingtries = %forever
forceencaps = yes
compress = no
rightid = @centralized
right = centralized
rightauth = pubkey
rightca = "..."
rightcert = centralized.crt
rightsubnet = 192.168.1.65,192.168.1.32/27
leftid = @gateway-second
left = %defaultroute
leftauth = pubkey
leftauth2 = psk
leftca = %same
leftcert = gateway-second.crt
leftupdown = Sudo -E ipsec _updown iptables
leftsubnet = 192.168.1.1/27
leftsourceip = %config4
Pingを実行しようとするとgateway-second背後のコンピューターからgateway-first(ソースコンピューターのIPは192.168.1.40)を実行してtcpdumpcentralizedサーバー上で同時に表示:
tcpdump -i eth0 Host 192.168.1.1 -n
error : ret -1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
21:27:49.030650 IP 192.168.1.40 > 192.168.1.1: ICMP echo request, id 9721, seq 35, length 64
21:27:50.026652 IP 192.168.1.40 > 192.168.1.1: ICMP echo request, id 9721, seq 36, length 64
21:27:51.031805 IP 192.168.1.40 > 192.168.1.1: ICMP echo request, id 9721, seq 37, length 64
21:27:52.041165 IP 192.168.1.40 > 192.168.1.1: ICMP echo request, id 9721, seq 38, length 64
21:27:53.029530 IP 192.168.1.40 > 192.168.1.1: ICMP echo request, id 9721, seq 39, length 64
したがって、このログによると、パケットはcentralizedサーバーに到着しますが、192.168.1.1に転送されることはありません。
集中サーバーと両方のゲートウェイで、転送を有効にしました。
net.ipv4.ip_forward = 1
集中サーバー上のルーティングテーブル:
# ip route
default via yy.yy.yy.yy dev eth0 proto static
zz.zz.zz.zz dev eth0 proto kernel scope link src xx.xx.xx.xx
192.168.1.64/27 via 192.168.1.65 dev eth1 proto static
また、ルートテーブル#220(VPN):
# ip route show table 220
192.168.1.0/27 via 5.189.141.1 dev eth0 proto static src 192.168.1.65
192.168.1.32/27 via 5.189.141.1 dev eth0 proto static src 192.168.1.65
2つの異なるトンネル間の転送を有効にする方法はありますか?
2つのゲートウェイのサブネットを中央サーバーのleftsubnet
に追加してみてください。各ゲートウェイのrightsubnet
にはそれぞれ反対のサブネットが含まれますが、トラフィックセレクターは、中央サーバーでleftsubnet
として構成されているもの(つまり、192.168.1.65
)に絞り込まれます。 ipsec statusall
の出力にそれが表示されます。中央サーバーでleftsubnet=0.0.0.0/0
を構成することもできます。そうすると、ゲートウェイはrightsubnet
として提案するanythingを受け入れます。