ついに個人用の最短手順を見つけたぞ。L2TP/PSKのVPNをレンタルサーバに立てて、フリーWiFiを使うときの足しにしようと思っていたんだが、L2TPサーバの設定ってけっこう面倒じゃん。
その手順がこれだ! dockerが使えているLinuxホストであることが前提です。CentOS7のホストでも問題ないみたいです。VMのVPSでもチョチョイと借りとけばサーバはどうにでもなる時代。
- docker pull hwdsl2/ipsec-vpn-server
- mkdir vpn
- cd vpn
- vi env
- VPN_IPSEC_PSK=<your pre-shared key>
- VPN_USER=<username>
- VPN_PASSWORD=<password>
- スペースやクォートに注意。余計なものが入ってるとダメです
- sudo modprobe af_key
- docker run –name ipsec-vpn-server –env-file ./env -p 500:500/udp -p 4500:4500/udp -v /lib/modules:/lib/modules:ro -d –privileged –restart=always hwdsl2/ipsec-vpn-server
以上です。なんて簡単な! 誰だか知らないけど、ありがとうhwdsl2(←気に入った人はdocker hubにログインして☆をつけよう)。
あとは手持ちのAndroid機のVPN設定でクライアント側を設定していく。
- 名前→適当につける
- L2TP/IPSec PSK
- サーバーアドレス→立てたサーバについてるグローバルIPアドレス
- L2TPセキュリティ保護→(未使用)のまま
- IPSec ID→(未使用)のまま
- IPSec事前共有鍵→VPN_IPSEC_PSKの値
- 詳細オプションを表示する→どっちでもいい
- ユーザー名→VPN_USERの値
- パスワード→VPN_PASSWORDの値
- 常時接続VPN→どっちでもいい / つなぐ時にも選べる
Macからもつながりましたが、元のdefault routeが残るみたいな感じで、WebアクセスしてみてもソースアドレスがVPN先のIPアドレスにならないんだよなぁ…何かが間違ってるかもしれない。そのへんAndroidは問題ない。この環境固有の問題なのか、Macの問題なのか??
この暗号化セッションってどのくらいの強さなんでしょうね。あまり知識がないのでわからない。最近のTLSのPFSみたいに後で鍵がバレても大丈夫なんだろうか?
On/Offは、ホーム画面にウィジットを追加すると楽チンだと思います。
- ホームで長押し
- ウィジェット
- 設定→設定のショートカット1×1を長押しドラッグ
- VPN
あとは何かと軽くするためにprivoxyか、あるいはキャッシュでも立てるか、どうするか…
常時接続VPNはちょっと期待したけど、WiFiのOn/OffでWiFiとLTEが切り替わるとVPNも切れちゃいますね。
(追記) 2016-10-25
Macの問題は、VPNの設定で「すべてのトラフィックをVPN接続経由で送信」のチェックの問題だった。チェックをつければVPN経由で行くようになる。