Docker
でL2TP/IPsec
のVPNサーバを立て、macOS
から接続する。
サーバ側のすること
docker-compose.yml
を作成して、up
するだけでサーバは立てられる。
使うイメージはこれ: hwdsl2/docker-ipsec-vpn-server: Docker image to run an IPsec VPN server, with IPsec/L2TP and Cisco IPsec
version: "3"
services:
l2tp-ipsec:
image: hwdsl2/ipsec-vpn-server
privileged: true
ports:
- "500:500/udp"
- "4500:4500/udp"
# 必要ならenvファイルにVPNの設定を書く。
env_file:
- ./vpn.env
VPNに事前にPSK
やユーザーを設定しておきたいときは、env
ファイルなどで書いておく必要がある。
ユーザーは複数登録することも可能。
VPN_IPSEC_PSK=<PRE_SHERED_KEY_HERE>
VPN_USER=<USERNAME_HERE>
VPN_PASSWORD=<USER_PASSWORD_HERE>
#Additional vpn users can be added
#VPN_ADDL_USERS=additional_username_1 additional_username_2
#VPN_ADDL_PASSWORDS=additional_password_1 additional_password_2
作成した後、docker-compose up -d
などで起動すればOK。
なお、docker-compose logs
すると、ユーザ名やパスワード、PSKなどを確認することができる。
クライアント側ですること
macOSを使っている前提で解説。上に載せたgithubのページに解説されている: setup-ipsec-vpn/clients.md at master · hwdsl2/setup-ipsec-vpn
画像があると冗長な気もするので、画像なし版も書いておく。
画像なし
システム環境設定-->ネットワーク
を開き、左下の+
ボタンを押す。L2TP/IPSec
を選択。名前はなんでも良い。- サーバアドレスとアカウント名を設定。先ほどの
env
ファイルを参照。 - 認証設定からユーザパスワードとPSKを設定。
env
ファイルを参照。 - 詳細ボタンを押し、次の2項目を設定。
オプション
タブからすべてのトラフィックをVPN接続経由で送信
にチェックTCP/IP
タブでIPv6の設定
をリンクローカルのみ
にする
- 適用。
画像つき
システム環境設定-->ネットワーク
を開き、左下の+
ボタンを押す。
すると、インターフェイスの選択画面が表示される。ここでは
インターフェイスとして、VPN
を選択し、VPNタイプとして、L2TP/IPSec
を選択する。
サービス名はなんでもいい。
ここまですると、作成したVPNを左側から選ぶと、VPN向けの設定画面を表示できる。 そこで、サーバアドレスとアカウント名が設定できる。 下図の赤枠を参照。
アカウント名は、先ほどenv
ファイルで作成したユーザ名でいい。
サーバアドレスは、dockerを動かしているマシンのIPを入力すればいい。docker-machine
なら、docker-machine ip <machine-name>
で分かる。
続いて、アカウント名の下部にある認証設定
をクリックして、PSKとアカウントのパスワードを入力する。
これもenv
ファイルで指定したものを入力するだけでいい。
入力が済んだら、右下のOK
ボタンを押して閉じる。下図を参照。
最後に、適用
ボタンの上にある詳細…
ボタンをクリックして、2つほど設定する。
1つ目は、オプション
タブですべてのトラフィックをVPN接続経由で送信
にチェックを入れること。
2つ目は、TCP/IP
タブでIPv6の設定
をリンクローカルのみ
にすること。
2つの設定が済んだら、OK
ボタンを押し、詳細を閉じる。
適用
を押したら設定は終了。
接続
ここまで上手く設定できていれば、クライアント側のVPN設定画面で接続
を押せば、接続が確立される。
ポート問題は恐らくないと思う。サーバのホスト元によってはポート開放が必要かもしれない。
Dockerは簡単でいいね