web-dev-qa-db-ja.com

同じサーバー上のクライアントとゲートウェイのstrongSwan IPsecサイト間トンネルを介して転送されないクライアントパケット

CentOS 7仮想プライベートサーバー(サブネット172.25.10.0/24のパブリックIP xxx233)と顧客のネットワーク(サブネット10.9.200.0/24のパブリックIP yyy24)の間にstrongSwanを設定したサイト間IPsecトンネルがあります)。トンネルは問題なく接続されているようですが、トラフィックをトンネル経由でルーティングできません。ゲートウェイとして機能しているのと同じホスト上に172.25.10.0/24サブネットを設定しようとしていますが、これは間違って行ったと思います。

VPSのipsec.confconnセクションは次のとおりです。

conn customer
    esp=aes256-sha1-modp1024
    ike=aes256-sha1-modp1024
    keyexchange=ikev1
    authby=psk
    left=%defaultroute
    leftsubnet=172.25.10.0/24
    leftfirewall=yes
    right=y.y.y.24
    rightsubnet=10.9.200.0/24
    auto=start

私の知る限り、トンネル自体は問題なく機能しています。 VPSのstrongswan statusallは次を示します:

Security Associations (1 up, 0 connecting):
      customer[29]: ESTABLISHED 110 minutes ago, x.x.x.233[x.x.x.233]...y.y.y.24[y.y.y.24]
      customer[29]: IKEv1 SPIs: 0123456789abcdef_i* 0123456789abcdef_r, pre-shared key reauthentication in 50 minutes
      customer[29]: IKE proposal: AES_CBC_256/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024
      customer{88}:  INSTALLED, TUNNEL, reqid 1, ESP SPIs: 01234567_i 01234567_o
      customer{88}:  AES_CBC_256/HMAC_SHA1_96/MODP_1024, 0 bytes_i, 0 bytes_o, rekeying in 7 minutes
      customer{88}:   172.25.10.0/24 === 10.9.200.0/24

パブリックIP(x.x.x.233)を保持するのと同じインターフェイス上のVPSにサブネットIP(172.25.10.2)を設定しました。

ip addr add 172.25.10.2/32 dev eth0

しかし、VPSからリモートネットワーク上のIPにpingすると、pingが失敗します。

# ping -I 172.25.10.2 -c 3 10.9.200.254
PING 10.9.200.254 (10.9.200.254) from 172.25.10.2 : 56(84) bytes of data.

--- 10.9.200.254 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 1999ms

Tcpdumpは、IPsecトンネルが使用されていないことを示しています。

# tcpdump -n Host 10.9.200.254 or Host y.y.y.24
03:51:07.193494 IP x.x.x.233 > 10.9.200.254: ICMP echo request, id 10193, seq 1, length 64
03:51:08.193449 IP x.x.x.233 > 10.9.200.254: ICMP echo request, id 10193, seq 2, length 64
03:51:09.193452 IP x.x.x.233 > 10.9.200.254: ICMP echo request, id 10193, seq 3, length 64

172.25.10.2 IPをeth0に追加するだけでは、トラフィックがトンネルを介してルーティングされる必要があることを理解するには不十分だと思いますが、それを行うための正しい方法がわからない。

価値のあるものとして、strongSwanをオンにする前に次のコマンドも実行しました。

# echo "net.ipv4.ip_forward=1" > /etc/sysctl.conf
# sysctl -p
# firewall-cmd --zone=public --permanent --add-service="ipsec"
# firewall-cmd --zone=public --permanent --add-port=4500/udp
# firewall-cmd --zone=public --permanent --add-masquerade
# firewall-cmd --reload

それ以外の場合は、マシンの構成/ルーティングルールなどには触れていません。

2
Ben

IPsecトラフィックをルーティングする必要があります。デフォルトのNATデフォルトの問題NATルールがIPsecトラフィックに影響を与える)に該当する可能性があります。解決策は次のとおりです。

iptables -t nat -I POSTROUTING 1 -m policy --pol ipsec --dir out -j ACCEPT

または、firewall-cmd --add-ruleを使用した同等のコマンド。

1
Vesper

NATルール(--add-masqueradeを介したMASQUERADEなど)が構成されている場合は、IPsecポリシーに一致するトラフィックを除外しないようにする必要があります。それ以外の場合、そのトラフィックはパブリックIPに接続され、IPsecポリシーと一致しなくなり、トンネルを通過しません。 strongSwan wiki で説明されているように、次のようなルールを挿入する必要があります(NATルールの前に、-IがNATの場合に実行しようとするルール_ルールはすでに設定されています):

iptables -t nat -I POSTROUTING -m policy --pol ipsec --dir out -j ACCEPT

必要に応じて、より具体的にすることもできます(特定のソースIPのみを含めるなど)。 firewall-cmdがわからないので、そこでどうするかわかりません。ただし、次のようなもの(--add-masquerade行の前に実行)は機能する可能性があります。

firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -m policy --pol ipsec --dir out -j ACCEPT
2
ecdsa