6.14.6. カーネルレベルの IPsec の問題
VPN トンネルが確立されているように見えてもトラフィックが流れていない場合は、カーネルレベルの IPsec の問題をトラブルシューティングします。このような場合は、カーネルの IPsec の状態を調べて、トンネルポリシーと暗号鍵が正しくインストールされているかどうかを確認します。
このプロセスでは、次の 2 つのコンポーネントをチェックします。
- Security Policy Database (SPD): 暗号化するトラフィックをカーネルに指示するルール。
- Security Association Database (SAD): そのトラフィックを暗号化する方法をカーネルに指示する鍵。
まず、SPD に正しいポリシーが存在するかどうかを確認します。
# ip xfrm policy
src 192.0.2.1/32 dst 10.0.0.0/8
dir out priority 666 ptype main
tmpl src 198.51.100.13 dst 203.0.113.22
proto esp reqid 16417 mode tunnel
出力に、leftsubnet および rightsubnet パラメーターに一致するポリシーが、in 方向と out 方向の両方で含まれているはずです。トラフィックのポリシーが表示されない場合は、Libreswan がカーネルルールの作成に失敗しており、トラフィックは暗号化されていません。
ポリシーが存在する場合は、SAD 内に対応する鍵セットがあるかどうかを確認します。
# ip xfrm state
src 203.0.113.22 dst 198.51.100.13
proto esp spi 0xa78b3fdb reqid 16417 mode tunnel
auth-trunc hmac(sha1) 0x3763cd3b... 96
enc cbc(aes) 0xd9dba399...
このコマンドにより、秘密の暗号鍵が表示されます。この出力を共有しないでください。攻撃者がこの出力を使用して VPN トラフィックを復号するおそれがあります。
ポリシーが存在するにもかかわらず、同じ reqid を持つ対応する状態が表示されない場合は、通常、Internet Key Exchange (IKE) ネゴシエーションが失敗しています。2 つの VPN エンドポイントが、鍵セットについて合意できなかったということです。
より詳細な診断を行うには、いずれかのコマンドで -s オプションを使用します。このオプションはトラフィックカウンターを追加します。これは、カーネルが特定のルールに従ってパケットを処理しているかどうかを確認するのに役立ちます。