Android 2.x向けにL2TP/IPSecサーバ(openswan+xl2tpd)を設定する

前々から設定しかけてはうまくいかなかった、Android向けL2TP/IPSecがようやく動くようになったので、どんな設定をしたかをまとめてみます。対象はDebian squeezeです。 パッケージとして必要になるのは、openswanとxl2tpdです。これらをapt-get installします。 まずopenswanの設定をします。これはIPSecの実装の一つです。もともとFreeS/Wanというプロジェクトがあったのですが、その開発が止まったためforkしてできたのがOpenswanです。ほかにStrongswanという実装もあるようですが、ここでは触れません。 /etc/ipsec.confというファイルが存在しているので、それを編集します。冗長なコメントは消しています。 次に、L2TP向けの設定ファイル/etc/ipsec.d/l2tp-psk.confを新規に作成します。 次に、/etc/ipsec.secretsを編集します。ハイライトされた行を追加します。your-passwordを自分が設定したいパスワードにしてください。このパスワードがIPSec事前共有鍵になります。 次に、sysctl関連の設定をします。/etc/sysctl.d/for-ipsec.confファイルを作成し、以下のように設定します。自分はすべてのインターフェースに{accept,send}_redirectsを設定しています。各自のインターフェース名に合わせて設定してください。 ファイルを作成したら、sysctl -p /etc/sysctl.d/for-ipsec.confを実行してこのsysctl設定を有効化します。リブート時には/etc/init.d/procpsの中でこのファイルが自動的に読まれます。 ここで、一度ipsecを起動してみます。/etc/init.d/ipsec startして、ipsec verifyを実行してみてください。問題なければ以下のような出力が出ます。[NG]という出力があれば、何か設定に失敗していることになります。 ipsecはデフォルトでは自動起動になっていないので、insserv ipsecを実行して自動起動するようにしてください。 最後は、xl2tpdの設定です。/etc/xl2tp.confを以下のように設定します。 2行目で、ppp認証用のユーザー、パスワードを記述したファイル名を指定します。10,11行目でVPNに振るアドレスを指定します。各自にあったIPアドレスレンジを使ってください。16行目では、xl2tpdが起動するpppdの設定ファイル名を指定しています。うまく動かないときは、各種デバッグオプションを有効にしてみてください。 /etc/xl2tpd/l2tp-secretsは以下のように書きます。user, passwdは適切なものにしてください。 /etc/ppp/options.l2tpd.lnsの設定例は以下になります。 最初、MTU/MRUのサイズを指定しないで動かしていたら外部との通信がうまくいかなかったので、かなり小さめ(1280)にしています。16行目のネームサーバは適切なものに変更してください。 あとは/etc/init.d/xl2tpd restartを実行して、Android側の設定をしてゆきます。VPNのタイプはL2TP/IPSec PSK、VPNサーバ名とIPSec事前共有鍵(ipsec.secretsの値)を設定します。L2TPセキュリティ保護は無効にします。 あとは接続を実行し、l2tp-secretsに書いたユーザー名、パスワードを入力すれば接続できるはずです。設定がおかしいと、一瞬pppセッションが確立したあとすぐ切られる、というような状況が起きることがあるので気を付けてください。 知人から、これらに関していくつか助言をいただいています。 [blackbirdpie id=”237744346173153281″] ICSとOpenswanの組み合わせでは動かないことがあるようです。 [blackbirdpie id=”237735014954070016″] 新しいkernelにはopenl2tpというin-kernel l2tpモジュールがあるそうです。ただし、まだuserlandはDebianパッケージが(sidにも)ありません。 参考: AndroidスマートフォンからLinuxサーバにVPN接続する – いろいろwiki@princo.org 追記(2012/8/24): MS-CHAP-v2の脆弱性と攻撃ツールの流通が報告されていますが、pppの設定を見ての通り、L2TP/IPSecでもMS-CHAP-v2を使っています。暗号化されたトンネルの下でpppを確立するため、直ちに危険というわけではありませんが、PSK共有鍵方式だと安全とはいえないようです。 セキュリティ アドバイザリ 2743314 カプセル化されていない MS-CHAP v2 認証により、情報漏えいが起こる を公開 【注意喚起】MS-CHAPv2プロトコルの破綻 証明書ベースの接続(CRT VPN)の設定を今後は調べてみようと思います。