Nanairo

プライベートを充実させてみたいものだ…。

OPENVPNによるVPNサーバーを立てたのでメモ③

2ヶ月前の記事の続きです。
今回はserver.confの中身について書きたいと思います。

前記事
tachi221.hatenablog.com
tachi221.hatenablog.com

最初にserver.confを編集する。(各々好きなテキストエディッタはあると思うけど)vimでserver.confを編集してやる。ここからはserver.confの中身のみを説明していきます。コロンはコメントアウトの意味ですので念のため。
基本的には似ているような文が記載されている行を直して行くということです。

vim /etc/openvpn/server.conf

まず最初にポート番号を設定する。デフォルトは1194でこれはOPENVPNの標準のポート番号だと思う。が、ここはSSL-VPNに見せかけたいので、筆者は443と指定した。443はHTTPS通信と同じポートなのでVPNを使っているということが第三者から見て分かりにくい。対して1194はOPENVPNを使っていると何となくバレる気がする。

port 443

次にプロトコル指定。UDPを使ってもいいのだけど、HTTPS通信をしているように見せかけたいのでTCPを選択する。
ちなみにUDPTCPの違いはこれが個人的には分かりやすかった。
http://wa3.i-3-i.info/diff61tcpudp.html

proto tcp

バイスの種類は「tun」にする。ちなみに「tap」はブリッジ接続(いわゆるレイヤー2での接続)、「tun」はルーティング接続(いわゆるレイヤー3での接続)なので、ここでは「tun」を設定する。余談だけど、iPhoneなどのiOSバイスOPENVPNを使う際にはtunにしておく方がいいとどこかで聞いた(iOSのtapデバイスはバグがあるらしい)。

dev tun

次にルート証明書(CA)、サーバー証明書(CRT)、秘密鍵(KEY)を設定する。

ca ca.crt
cert server.crt
key server.key

ちなみにserver.confと同じ位置に証明書をおく場合はパスを省略できるが、違う場所におく場合はパスも書く必要がある。
上記と同様にDiffie hellman parametersの設定もする。

dh dh2048.pem

ちなみにdhの長さを4096など、デフォルトから変えている場合はその値を用いて、例えばdh4096.pemなどに置き換える。

クライアントにIPアドレスを割り当てる際に用いるアドレスの範囲を指定する。例は192.168.0.0でサブネット255.255.255.0の場合の例。

server 192.168.0.0 255.255.255.0

クライアントがVPNを確立している場合に全ての通信をVPNサーバー経由でインターネットに接続するために、以下の文のコメントアウトを外す。ちなみに下記の文になっていない場合には不足分を足す。

push "redirect-gateway def1 bypass-dhcp"

次にクライアントに割り当てるDNSの設定をする。ここではGoogle Public DNS(8.8.8.8、8.8.4.4)を設定する場合の例で書く。

push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

ちなみにここでCISCOが提供しているOPENDNSと連携させると簡単なフィルタリングを行うことが出来る。

TLS認証を有効化する。ちなみにサーバーからのディレクションは0、クライアントからのディレクションは1となる。

tls-auth ta.key 0 # This file is secret

VPNの暗号化方式を指定する。基本的に何を設定してもAES-256-GCMになっている気がする。

cipher AES-256-GCM

LZO圧縮についてはするとデータの節約になると思うのだけど、うまく設定できないのでここはコメントアウト

;compress lz4-v2

これでserver.confの編集はおしまい。
ちなみに本来はセキュリティを確保するためにopenvpnの実行権限を落とすのがいいらしいけど、なぜかうちの環境ではうまくいかなかった。

ちなみにここのコメントアウトを外す。

;user nobody
;group nobody

最後にserver.confを保存して、iptablesにNAT設定をしておしまい。

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

さくらのVPSでは物理イーサネットの名前がens3になっているので、上記のeth0をens3に変えてやる。

あとはうまいようにクライアントにクライアントソフトをインストールし、クライアント証明書、ルート証明書、ta.keyをサーバーからコピーしてソフトに読み込ませるとVPN接続できる。クライアントソフトとしてはvpnuxはおすすめ。本当にワンタッチで設定できる。
これで海外にいてもらじるらじるやradikoが聞けたり、日本国内からじゃないとアクセスできないホームページを閲覧することができる。
が、残念なことにhuluやnetflixは見ることができない。これらを見たい場合は日本の留守宅にインターネットを引いて、そことVPN接続をするしかないようだ。何とも厳しい。