今回はVPN構築にあたっての手順と注意点を書いていく。
①プライベートIPアドレスの調整
VPNで接続すると、クライアント側のPCが仮想的にVPNサーバ側のLAN内に配置されることになる。しかし、クライアント側LANにおいてDHCP機能で自動的に設定された各端末のIPアドレスと、サーバ側LANにおいてDHCP機能で自動的に設定された各端末のIPアドレスが被った場合、どちらに接続するのか混乱してしまう。このため、サーバ側のLANのIPアドレスとクライアント側のIPアドレスが被らないよう、ルータのIPアドレスを設定する必要がある。
以下のバッファローの解説画像がわかりやすい。
http://buffalo.jp/download/manual/bro150/qa/qa/images/buf7272_01.gif
http://buffalo.jp/download/manual/bro150/qa/qa/images/buf7272_02.gif
ルータの会社が違うと、DHCP機能で発行するプライベートIPアドレスも違う場合が多い。例えばNECは192.168.0.xでバッファローは192.168.11.xであることが多い。ところが、うちのバッファローのルータと職場のNECのルータはなぜか同じだった。当然、各ルータのLAN側IPアドレスも、それぞれがDHCPで発行するプライベートIPアドレスも被るはずで、どちらかを設定しなおさなければならない。
②アクセスされる側のLAN内のPCをVPNサーバとして設定する。
VPNサーバにするPC上で、使用するプロトコルを選択し、セキュリティを設定し、アクセスを許可するユーザー名とパスワードを作成する。
プロトコルにはPPTPやL2TP/IPSecなどがあるが、前者は安全性が低く、後者のほうが安全。
最近のWindowsは標準でVPNサーバ機能がついており、だいたいのプロトコルに対応しているので、サーバ構築そのものは容易である(参考:http://blog.livedoor.jp/strikers556/archives/65742488.html)。Linuxでも当然可能である。
また最近はルータそのものがVPNサーバ機能を持っている機種も出ている。ただし、機種によって対応するプロトコルが異なり、安全性の高いプロトコルに対応している機種は価格が高い。廉価なルータは安全性の低いPPTPにしか対応していない。安全性の高いのはL2TP/IPSecであるが、高額である。
③ポート開放
VPNサーバのファイアウォールを開放する。開放するのは以下のポート。
UDP 1701(L2TPトンネル用)
ESP(プロトコル番号 50)
UDP 500
UDP 4500(NATトラバーサル用)
ルータそのものをVPNサーバとする場合は必要ない。
④ルータ側で、③のパケットのポートマッピング(ポート変換)を設定する。
VPNサーバを設置する拠点内にプライベートIPしか存在しない場合、静的NATという仕組みでグローバルIPからプライベートIPへのアドレス変換を行っている。このとき、②のポートあてに送信された通信を、ルータ上で目的のPCのポートに変換する操作が必要になる。これはポートマッピングと呼ぶが、バッファローのルータではポート変換と呼ぶ。こちらも、ルータそのものをVPNサーバとする場合は必要ない。
⑤ダイナミックDNSを利用してアドレスを固定する。
プロバイダにもよるが、アクセス対象のネットワークに割り当てられたIPアドレスが固定IPでない場合、ダイナミックDNSサービスを利用して、グローバルIPとホスト名を関連付ける必要がある。
ダイナミックDNS=DDNSは、いくつかの業者が有料サービスを提供している。回線を提供するNTTもやっているし、プロバイダもオプションで加入することができる(月額300円程度)。バッファローもやっており、バッファローのルータを使っている場合はルータ上から設定ができるので簡単だ。無料のサービスをやっている業者もある。かつてはDynDNSが無料DDNSの定番だったが、現在は有料のみになってしまった。
⑥アクセスする側のPCやスマホをVPNクライアントとして設定する。
最近のWindowsにはVPN機能がついているので難しくない。接続したいネットワークのグローバルIPまたはURL、①で設定したユーザー名とパスワード、セキュリティの設定をする。
だいたいこんなところか。①は事前の確認が必要。②⑥はさほど難しくはないが、③④はやや面倒であり、⑤は有料のものが多い。自宅にはバッファローの個人向け無線ルータがあるので、ひとまずこの環境で、無料でできることを考える。
1. ルータのVPN機能を使う
最近のバッファローのルータにはVPN機能があるので③④が不要であり、さらにバッファローのDDNSサービスを利用すればルータ上から⑤が設定できるので手間が減るが、月300円程度かかる。プロトコルとしては、2万円程度する一部のルータはL2TP/IPSecに対応しているのでセキュリティも硬いが、自宅にある無線ルータはPPTPにしか対応していないのでセキュリティに問題があり、長期間使うのには不安がある。
業務用のヤマハのルータはL2TP/IPSecに対応しており、セキュリティも硬い上に③④が不要になるが、高額だしルータを買い換えたくないので却下。
2.VPNサーバを別に立てる
ルータのVPN機能を使わない場合、サーバ側のLAN内にある常時起動のPCをVPNサーバとすることになる。③④は自力でやることになるが、ポート開放やポートマッピングの経験はあるので、ググればできるだろう。しかしいずれにせよ、⑤のDDNSを解決する必要がある。
プロバイダが提供しているDDNSサービスは各プロバイダによって様々だが、うちはplalaを利用しており、DDNSサービスを利用するには月額300円のプラスプションに加入する必要がある。
有料サービスに加入したくない場合は無料のサービスを利用することになる。前述のとおりDynDNSの無料サービスは(少なくとも新規は)終わっているらしい。他には、ieServer、mydns、No-IPといったサービスがある。
しかしもう少し簡単かつ無料の方法がある。筑波大出身の開発者が在学中から開発したSoftEtherVPNというフリーソフトをインストールすると、VPNサーバ機能が簡単にインストールできることに加え、SoftEtherが提供するDDNSサービスを無料で使用させてもらえるのだ。つまり②⑤が1ステップでできるということである。すげー。
というわけで、SoftEtherVPNをインストールし、Windowsのファイアウォールのポートを開放し、ルータのポート変換を設定した。自宅でテストするために、スマホのLTE回線とVPN機能を使用して接続したところ、比較的スムーズに接続できた。SoftEther利用者は開発者に対して1日1回礼拝が必要だね。それくらい素敵。
インストールにあたっては以下のサイトを参考にさせてもらった。
http://www.teradas.net/archives/11317/
http://www.teradas.net/archives/11338/
http://www.teradas.net/archives/8557/
注意すべきなのは、①のプライベートIPアドレスの調整を最初にやっておくこと。これを後にすると、理論上はポート変換などが全てやり直しになる。自分は最初にスマホでVPN接続していたため後回しにしてしまったが、自宅で②~⑥を設定した後に職場のプライベートIPを調べたところ、自宅のルータと職場のルータがデフォルトでは同じプライベートIPを使用していることがわかった。理論的には職場から自宅へVPN接続すると、録画鯖にうまく接続できないはずだ。本来ならば各ルータのIPから全てずらす設定が必要なのだが、面倒くさいのでそのままでやってみた。結論から言うと各ルータのプライベートIP(例192.168.xx.1など)が同じでもなぜか問題なかった(原因はよくわからない)。ただし、サーバ側LAN内の接続対象PCのプライベートIPアドレスと(例192.168.xx.2等)、クライアント側LANで使用されているプライベートIPアドレスが被ると接続できないのは同じである。とりあえずの対処として、自宅LANでアクセス対象となるPC(VPNサーバと録画鯖)のプライベートIPアドレスを固定し(方法はIPアドレス 固定でググってください)、そのIPアドレスを職場のLANでDHCP発行IPから除外することとした(詳細はルータのマニュアルを参照のこと)。今のところこれで問題なく接続できている。 職場のPCにもVPN接続設定したので、自宅で録画した番組を職場の40インチのテレビでも見れるようになった。
※VPNを構築するとnasneでも外部から見れるという話もあって、これが可能になるのであれば録画鯖の優位性は少し下がってしまう。ただ自分の場合、職場にWi-Fi接続したVAIOから自宅へVPN接続した上でPC TV with nasneを開くと、録画番組のサムネイルまでは取得できたが再生はできなかった。 エクスプローラからnasneの内部は見えたので、ファイアウォール等のセキュリティの問題ではないと思う。もう少し調べてみる必要がありそう。
まあ、仮にnasneがVPNで見れたとしても、録画鯖のほうが有利な点もあり、このあたりは使い分けである。実は去年からBDレコーダーでBD-Rが焼けないという不具合が出ていて、外付けHDDも繋げられないタイプなので、代替案を探していたのだ。さんざんnasneと比較しておいて何だが、実はレコーダーの置き換えが目的だったのである。