Android 6 MarshmallowでL2TP/IPsec VPNが動作しない問題を解決する(xl2tpd+openswan)

VPN

自宅サーバーやAWSなどでL2TP/IPSec VPNサーバーを構築している方は結構いらっしゃるのではないかと勝手に思っている。当方環境では、Android 6 Marshmallowにアップデートした瞬間、これまでの設定ではxl2tpd+openswanで構築した環境にアクセスすることが出来なくなってしまった。解消方法をメモ程度に記載する。


Android 6でxl2tpd+openswanなL2TP/IPSec VPNサーバーにアクセスしてみる

PPTPでは接続できているが、xl2tpd+openswanで構築したL2TP/IPsecサーバーには接続することが出来ない。この問題は下記のフォーラムでも多くの記載があり、Android6のバグなのではないかと思われる。

実際にxl2tpd+openswan環境にアクセスしてみると

Android6端末で接続を試みると、/var/log/auth.logには下記のような内容が残る。

原因

どうやら、Android端末では、ipsecの設定で暗号化アルゴリズムをきちんと設定してあげる必要があるようだ。
ただし、Android 6 MarhsmallowのSHA2は標準のものとは少し異なっているため、他の環境との共存が出来る設定を行わなくてはならない。

LibreswanのFAQにもその旨が記載されているが、当該のコマンドはopenswanでは対応していない。

It seems that android 6.0 now defaults to ESP with SHA2, but it uses a bad implementation of SHA2. You can work around that using sha2-truncbug=yes but that would break all non-android clients that use the proper RFC SHA2 implementation. It might be possible to avoid SHA2 completely and use esp=aes_gcm-null instead (which is also faster)

See the sha2-truncbug man page entry of ipsec.conf for more information. There is also an android bug 194269 about this issue.

対策

仕方ないので、openswanをアンインストールし、libreswanを新規にインストール。openswanの設定ファイルは基本的に流用可能であった。

Libreswanのインストール

libreswanをインストールしたら、このようなメッセージが続々と表示されたため、-f installは行わず、必要なパッケージを全てインストール。

Libreswan用Android対策設定をする

libreswanの設定ファイルはopenswanと同じものが使用できるため、追記のみで問題なし。
下記の設定を追記する。

設定完了後、ipsecをリスタートする。

当方の環境では、これでAndroid6からもL2TP/IPsec接続が可能となった。また、MacやiPhoneでも接続出来ることを確認している。

Pocket
LINEで送る

Leave a Reply

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