はじめに
ふと自宅で VPN サーバーを建てようと思った時に、SoftEther VPN を使ったら Android の標準機能だけで VPN 接続ができなかった。どうやら Android 12 から L2TP/IPsec 接続が作成できなくなったらしい。
そこで、調べたところ IKEv2 接続できるサーバーを建てればいいらしいということに行きついたので、やった工程のメモを記す。
自分の環境では Proxmox + LXC コンテナだったので、少し設定が必要だった。その設定も書いてみる。
環境
- Proxmox Virtual Environment 7.4-17
- ubuntu-22.04-standard_22.04-1_amd64
- Android 14
使用するサーバー構築プログラム
ほとんどこの手順に沿ってコマンド実行するだけ。
LXC コンテナ環境で構築した際問題が起きた話
LXC コンテナでこの構築コマンドを実行すると、
Failed to start Internet Key Exchange (IKE) Protocol Daemon for IPsec.
というエラーが生じた。これと同じ症例の人が Issue で質問していて、そこに解決策があったのでそれを含めた構築手順を書く。
構築開始
Container 作成
いつも通りコンテナを作成するが、ここで一つ設定しなければいけない。
画像のとおり、Unprivileged container
を切る必要がある。
後はご自由にコンテナ作成してください。
コンテナができたら、起動する前に以下の設定をコンテナのファイルに追記する。
ここでは /etc/pve/lxc/101.conf
ファイルを例として挙げているが、コンテナの番号に応じてファイル名を変えましょう。
lxc.cgroup.devices.allow: c 108:0 rwm
lxc.mount.entry: /dev/ppp dev/ppp none bind,create=file
サーバー構築プログラムを実行する
GitHub にも書いてある通り、このコマンドを実行することで VPN サーバーの構築が完了する。
ここで後で使う証明書ファイル (vpnuser.p12
) が発行される。
また、Server IP
も出力されるのでメモしておくこと。
wget https://get.vpnsetup.net -O vpn.sh && sudo sh vpn.sh
ポート開放
ここで構築されるプログラムでは UDP 500
と UDP 4500
を使用するので、開ける必要がある。
今回は、Proxmox の管理画面から Firewall の設定と、ルーターのポートマッピング設定をすることでポート開放を行った。環境によってポート開放野やり方は違うと思うので割愛。
おわり
ここまでくればすでに VPN サーバーとしての機能を果たすことができる。次に Android 12 以降のデバイスで、組み込みの VPN を使用して接続できるかを検証する。
Android 端末で検証
手順はほぼ GitHub のガイド通り。
証明書 (.p12
) をインストールする
- サーバー構築プログラムを実行する」で生成された
.p12
ファイルを Android 端末に安全な方法で転送する。 - 設定アプリを開く。
- 「証明書」と検索し、「VPN とアプリユーザー証明書」を開く。
- 先ほど転送したファイルを選択し、好きな名前を付けて端末にインストールする。
VPN の設定をする
- 「VPN」と検索し「VPN」を開く。
- 右下の + ボタンから「VPN プロファイルの編集」を行う。
- 保存すれば接続できるようになる!
おわり
これで Android の標準機能で VPN が接続できるサーバーを建てられた!
他の端末の手順も GitHub に書いてあるので Android 以外でもぜひお試しあれ~
参考文献