これまでのところは、 通信の両端が直接 IPSEC を理解している、 いわゆる IPSEC の「転送 (transport)」モードのみを見てきました。 しかし通常は IPSEC を理解するマシンばかりではないので、 ルータのみに IPSEC を喋らせ、 その後ろにあるネットワークの作業を肩代わりさせることが必要となります。 こちらは「トンネルモード」と呼ばれています。
この設定はとても簡単です。10.0.0.216 から 130.161.0.0/16 へ向かうトラフィックを すべて 10.0.0.11 経由でトンネルさせるには、 以下を 10.0.0.216 で実行するだけです。
#!/sbin/setkey -f flush; spdflush; add 10.0.0.216 10.0.0.11 esp 34501 -m tunnel -E 3des-cbc "123456789012123456789012"; spdadd 10.0.0.0/24 130.161.0.0/16 any -P out ipsec esp/tunnel/10.0.0.216-10.0.0.11/require; |
次に実際のトンネルを設定します。これはカーネルに対し、 10.0.0.24 から 130.161.0.0 に向かう経路のトラフィックを 暗号化するよう指定しています。 さらに、続いてこのトラフィックは 10.0.0.11 に出荷されるのです。
10.0.0.11 でも少々設定が必要です。
#!/sbin/setkey -f flush; spdflush; add 10.0.0.216 10.0.0.11 esp 34501 -m tunnel -E 3des-cbc "123456789012123456789012"; spdadd 10.0.0.0/24 130.161.0.0/16 any -P in ipsec esp/tunnel/10.0.0.216-10.0.0.11/require; |
この設定は別名「代理 ESP」とも呼ばれています。 こちらのほうが少々わかりやすいでしょうか。
Note: IPSEC トンネルには、カーネルで IP Forwarding を有効にしておく必要があります!