AWS EC2 に OpenVPN を構築して Chromebook から接続するときにハマったポイント
OpenVPN 2.4によるVPN接続環境をAWSで構築する | DevelopersIO
Chromebook から OpenVPN(TLS-Auth、LZO圧縮有り)へ接続してみた - Qiita
基本はこの2つのあわせ技です。 作業内容のほとんどはそれぞれの記事を参考にしてもらえば。
個人的にハマったところ
インターネット向けのトラフィックを全部 OpenVPN 経由にするとき
OpenVPN の server.conf
に以下のような設定を書きます。
push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 192.168.1.1"
このとき、dhcp-option DNS
で指定する DNS サーバのアドレスは、 OpenVPN サーバから到達できるものを指定してください。
何故なら、名前解決も全部 OpenVPN サーバから実行するからです。
最初これがわかってなくて、無限に名前解決に失敗してインターネットに出られなくなった。
AWS EC2 上で構築するなら、AmazonProvidedDNS を指定するのが良いかもしれません。
たとえば VPC のネットワークが 172.30.0.0/16
だったら、AmazonProvidedDNS は 172.30.0.2
になります。
固定で 169.254.169.253
も使えるみたいですけど、試してません。
詳しくはこちら↓。
Chromebook から接続するときはパスワード欄の入力が必須
クライアント証明書をパスワード設定せずに作成した場合でもパスワード欄に何かしらの文字列の入力が必要です。 空欄だと接続しに行ってくれません。
サーバー側の設定と ONC ファイルの設定を合わせる
ONC ファイル作るのが面倒だったんでベースの作成にこれを使いました。
ただ、2018/05/28 時点でそのまま使うのはちょっと微妙で、いくつか手を入れないといけなかったです。
"Proto": udp
と出力されるので"Proto": "udp"
に直す必要がある。udp
にダブルクォーテーションがなくて JSON Syntax Error になる
- クライアント証明書が埋め込まれてしまっているので、デバイスにインポートしたものを使う場合は要修正
"Auth": "SHA512"
がサーバ側のデフォルト設定と異なる- サーバ側に
auth SHA512
を設定するか、ONC ファイルから"Auth": "SHA512"
を消す
- サーバ側に
Source IP アドレスを OpenVPN サーバのものにしたい
IP Masquerade しましょう。
$ sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
以上、楽しい VPN ライフを!