LinuxのxfrmでESPを試す

Linuxには、IPパケットのペイロードを変換するためのXFRMという、IPsecでも使用されているフレームワークがあります。
今回、XFRMに触れる機会があり、ググっても参考になるものが少なく、試行錯誤してしまったため、備忘録として残しておきます。

環境

  • PC1
    IPアドレス 192.168.1.152
  • PC2
    IPアドレス 192.168.1.153
  • PC1、PC2共通
    ディストリビューション Ubuntu 12.04.2 LTS
    カーネルバージョン 3.5.0-27-generic

XFRMを操作するコマンドは、iprouteパッケージのipコマンドです。詳しい使い方については、以下のURLを参照してください。

上記のmanによると、StateオブジェクトはSecurity Association Databaseを操作するため、Policyオブジェクトは、Security Policy Databaseを操作するために使用されるようです。

設定には、トラフィックを識別するセレクタ(Policy)とセレクタに従って処理を行うStateをそれぞれ設定する必要があります。また、トラフィック1方向につき1つ設定が必要なので、双方向通信の場合には、outとinの2つ設定する必要があります。

PC1とPC2間のトラフィックについてESPを設定するには、PC1、PC2それぞれで以下のようにコマンドを実行してください。
※Root権限が必要なため、一般ユーザで実行する場合には、各行の先頭にsudoをつける必要があります。
※SPIの設定は、PC1の送信側とPC2の受信側の設定、PC2の送信側とPC1の受信側の設定で合わせる必要があります。

PC1

PC2

上記設定後、PC1からPC2へのpingのパケットをtcpdumpによりキャプチャしてみると、パケットがXFRMによってESPフォーマットへ変換されていることが分かります。

特に新規ソフトウェアを導入することなくESPによる通信を行うことができますので、興味のある方は試してみてください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*