Android12でL2TP VPNを作る
Android12からIKEv2以外のVPNタイプの選択肢がなくなった。
うちは今まで L2TP/IPsec PSK
を使ってきたが、これを機にIKEv2を構築しようとした。
IX2215ルーターをフォロワーから譲ってもらい、それをいろいろ弄り倒した結果、できなかった。
というのも対ルーターの設定や事例ならいくらでもサンプルが転がっているのだが、細かい設定ができない対携帯のサンプルは全くと言っていいほどなかった。
そこでもうIKEv2は諦めてAndroid側をハックしようと思った。
どうも泥12でも11からアップデートしてきた端末への救済措置かはわからないが、新規作成時の選択肢が出ないだけで機能としては残っているようだったからだ。
Question - Android 12 & VPN Restrictions (L2TP/IPSec PSK) | XDA Forums
それに成功したので書き記しておく。
泥12 L2TP設定
- まずVPN設定でふつうに
IKEv2/IPSec MSCHAPv2
のプロファイルを作る - adbでVPNのデータベースをPCに持ってくる
# in adb shell
su
cp /data/misc/keystore/vpnprofilestore.sqlite /sdcard/
# in local
adb pull /sdcard/vpnprofilestore.sqlite .
- DBの中身をPCで書き換える(後述)
- 書き換えたDBを転送して上書きする
# in local
adb push ./vpnprofilestore.sqlite /sdcard/
# in adb shell
su
mv /sdcard/vpnprofilestore.sqlite /data/misc/keystore/
chown keystore:keystore /data/misc/keystore/vpnprofilestore.sqlite
chmod 600 /data/misc/keystore/vpnprofilestore.sqlite
- VPN設定を見ると今まで表示されていなかったVPNタイプがすべて選べるようになってる
DBの書き換え作業
SQLite3 DBの編集に使ったソフトはDB Browser for SQLite
泥VPNの件、詳しくはブログにまとめるけど、簡単に言えばIKEv2/IPSec MSCHAPv2でプロファイルを作ってそのDBを直接書き換える感じ。
— yui (@sugtao4423) February 6, 2022
画像1枚目の1行目「6」がVPNタイプの設定なので、それを2枚目のものを参考に「1」に書き換えるだけでOK pic.twitter.com/uVvLX7VcRg
作業内容としてはツイートの通り、設定内容のBlobカラムがあるのでそこを編集する。
画像2枚目のVPNタイプの選択肢が上から順に0番からの番号が振られているので L2TP/IPsec PSK
にしたければ「1」を入れれば良い。
おわり
iOSでもまだ残っているL2TPの選択肢を消してきたAndroidくんなかなかすごいと思った。
でもまだ救済措置を残しててくれてありがとうよ…
PPTPはもちろんだが、L2TPでさえも安全でないという考えはよくわかる。
これを機にルーターの対携帯端末でのIKEv2の構築サンプルがたくさん出てきてくれるといいなという気持ち。