VPN Serverで自宅にVPN接続(OpenVPN編)~DiskStation DS218j
自宅に設置しているSynology DiskStation DS218jの「VPN Server」パッケージを利用して、外出先から自宅のネットワークに直結する方法の解説です。中国の検閲逃れ、テレワークやリモートに利用できますので興味のある方はどうぞ。
まずは回りくどい事情説明です。
NOMIはたま~にですが仕事で中国に行くことがあります。
困ったことに中国からはGoogleをはじめとして日米欧の多くの有用なインターネットサービスにアクセスすることができません。理由はご存知の通り、
中国のネット検閲
中国のネット検閲(ちゅうごくのネットけんえつ)とは、中華人民共和国におけるインターネットに対する検閲である。法律に従って60以上の条例が中国政府によって作られ、地方の国有インターネットサービスプロバイダの一部や、中国政府、商社、団体などが検閲を実施している[1][2]。ただし、中国の特別自治区である香港やマカオには適用されない[要出典]。
出典:ウィキペディア
です。今のところこの検閲を逃れるには、中国と日本の間にVPNでトンネリングをして、日本国内からインターネットに接続するという形にしてしまうのが一番です。
NOMIの場合は自宅のYAMAHA NVR500にL2TP/IPsecのインターネットVPNで接続し、中国から自宅経由でGoogleやTwitter、Facebookなどのサービスを利用してます。
ところがインターネットプロバイダのレンタルルーターや、電器屋さんで普通に売っている民生用ルーターで、OpenVPNやL2TP/IPsecのVPN接続機能を実装している機種はまずありませんから、NOMI宅のような美味しい環境は作れません。世にインターネットVPNの実装を謳っているルーターは結構ありますが、「使ってはいけないVPN」のPPTPが使えるだけ、というケースが多いです。
なぜPPTPを使ってはいけないのかというと、既に解読方法がわかっている危険な暗号化方式(RC4)を使っているためです。じゃあなんでPPTP開発元のマイクロソフト社はこれを改善しないかというと、がんばって改善しても商売にならないからで、本音は「皆さん、もうPPTPのことは忘れて他のベンダーの優秀なVPNを使ってください。ついでにWindows VistaとWindows 8もきれいさっぱり忘れていただければ幸いです。」という感じなのだと思います。業界によくある黒歴史のひとつですね。
なぜ民生用ルーターの多くがいまだにPPTPを実装しているのかというと、とりあえず実装しておけば「インターネットVPN対応」がアピールできることと、機能を廃止することによって、PPTPの危険性を理解できない愛用者の怒りを買いたくないからですね。ユーザーの顔色を窺ったりせずに2017年に正式にPPTPのサポートを終了したアップルを見習うべきでしょう(それでも遅かったですけどね)。
PPTPのもう一つの欠点は、サーバー側だけでなく、リモート側のルーターもVPNパススルーに対応していなければならないことで、例えば宿泊先のホテルのルーターが古く、VPNパススルーに対応していなければVPNを張ることができません。技術的には、手動でGREプロトコルを通過させる設定をすれば良いだけですけど、ホテルにリクエストしても多分無理でしょう。
もちろん、業者のVPN接続サービスを利用する、というテもあります。使えるか使えないかはやってみてのお楽しみのようです。無料のサービスより有料のサービスのほうが良くつながるという話は聞きます。が、堅実派でケチなNOMIの選択肢には、これはありません。
ところが自宅LANのSynology DiskStation DS218jに「VPN Serverパッケージ」をインストールすれば、PPTPだけでなく、OpenVPNやL2TP/IPsecで自宅にインターネットVPN接続できるようになります。
というわけで、Synologyの公式サイトの解説
VPN Server の設定 | Synology Inc.
を参考に設定します。
VPN Serverパッケージのインストール
DSMにログインして、[パッケージセンター]を開きます。
「VPN Server」の[インストール]をクリックします。ほどなくインストールは終わります。
OpenVPNの設定と有効化
[メインメニュー]を開いて[VPN Server]をクリックします。「VPN Server」では三種類のVPNが利用できます。
前述のとおり、オワコンのPPTPは却下です。
L2TP/IPSecのほうはルーターYAMAHA NVR500で使用中ですからNOMI宅の現在の環境では使えません。
DSMの「VPN Server」でL2TP/IPSecを利用するには、ポート番号1701、500、4500をDS218jのローカルIPアドレス"192.168.100.201″にポートフォワーディングする必要がありますが、NOMI宅では既にルーターYAMAHA NVR500の"192.168.100.1″にポートフォワーディング済み、だから使えない、というわけです。もちろん、YAMAHA NVR500でのL2TP/IPSecの利用をやめれば「VPN Server」でL2TP/IPSecを利用することはできます。
実は少し事情があって、「VPN Server」でもL2TP/IPSecの設定もやりました。興味のある方は【VPN Serverで自宅にVPN接続(L2TP/IPSec編)~DiskStation DS218j】をご一読ください。
というわけで、ここは"OpenVPN"の一択ですので「OpenVPN」を選択します。
「OpenVPN サーバーを有効にする」にチェックを入れると設定可能になります。
「ダイナミックIPアドレス:」、「最大接続数:」、「同じアカウントで接続できる数:」はデフォルトのまま、「ポート:」はセキュリティを考えてデフォルトの"1194″から適当なものに変更します(ここは内緒)。
「VPNリンクで圧縮を有効にする」はとりあえずON。負荷が大きいなら速度を犠牲にしてオフにする予定。「クライアントにサーバーの LAN にアクセスさせる」も試験的にとりあえずON。LANにアクセスする必要がなければセキュリティ上はオフが正解ですので後で考えます。
設定が終わったら「適用」をクリックします。
ダイアログが表示されます。つまり「ルーターからDS218jのIPアドレス"192.168.100.201″に対して「ポート:」に設定したポート番号をUDPで通過させる設定をしなさい。」ということですね。これは後程やります。ひとまず「OK」をクリックしてダイアログを閉じます。
OpenVPN接続設定ファイルのエクスポート
設定が有効になると、[エクスポート設定]ボタンが押せるようになりますのでクリックします。
意味としては「設定をエクスポート」するボタンですから、これは微妙な誤訳ですね。
設定ファイルのアーカイブ"openvpn.zip"の保存ダイアログが表示されますので、「OK」をクリックしてパソコンに保存しておきます。
「OpenVPN」の設定はひとまずここまで。続いてルーターの設定に移ります。
ルーターにポートフォワーディングの設定を行う
設定方法はルーター毎に異なりますが、YAMAHA NVR500では設定画面にログイン後、[詳細設定と情報]→[基本接続の詳細な設定]→「設定されているプロバイダの一覧」の有効なプロバイダから[設定]と進みます。
「静的IPマスカレード関連(…)」で[追加]をクリックします。
ここで表示されているフィルタの1と2は、このサイトの公開のため。3はルーターへのリモートログインのため。4~7はルーターへL2TP/IPSecのVPNで接続するための設定です。
先ほどのダイアログで指示された、「プロトコル」→"UDP"、「ポート」→"変更して設定したポート番号"、「使用ホストIPアドレス」→DS218jのIPアドレス"192.168.100.201″、を入力して[設定の確定]をクリックします。
ルーターの設定はこれで完了です。
YAHAMAルーターでは「静的IPマスカレード」と表現されているこれらの設定ですが、Baffaloでは[ポート変換]または[アドレス変換設定]、IOデータでは「ポートの開放」、NECでは「ポートマッピング」、となっています。やっていることは同じなのに、呼び方が違うのはどうにかならないものでしょうか。
Windows10のOpenVPNクライアント設定
続いてWindows10にOpenVPNのクライアントアプリ「OpenVPN GUI」をインストールします。OpenVPN公式のダウンロードページにアクセスします。
ウィンドウをスクロールします。
Windows用のインストーラを探してダウンロードします。
ダウンロードしたインストーラを右クリック→「管理者として実行(A)」でインストーラーを起動します。
インストール時は特に修正すべき設定項目はありませんのでサクサク進めます。
途中でネットワークデバイスのインストールに関するダイアログが出ますので[インストール(I)]をクリックします。
インストール終了です。ここから外部ネットワークから接続しての設定になります。
当たり前ですが、DS218jと同じLANの中からVPN接続をやっても意味がありませんので、スマホのテザリングを使うなり、インターネットカフェや学校や職場に行くなりして、自宅外からインターネット接続してからの作業となります。
インストールしたOpenVPNを起動します。
ファイヤーウォール設定のダイアログが出ます。外部ネットワークからの接続が前提になりますので、プライベート、パブリックともブロックを解除します。
こんなダイアログも出ます。「接続用のプロファイル(設定ファイル)が見つかりません。メニューからファイルをインポートするか、指定したパスに設定ファイルをコピーしなさい。」だそうです。
というわけで、「OpenVPN」の設定の最後で、[エクスポート設定]ボタンをクリックして保存した設定ファイルのアーカイブ"openvpn.zip"を解凍して、フォルダごと指定のパスに移動します。
移動した"openvpn"フォルダを開きます。
“VPNConfig.ovpn"ファイルをメモ帳で開きます。
dev tun
tls-client
remote YOUR_SERVER_IP [変更して設定したポート番号]
~中略~
#redirect-gateway def1
~後略~
“YOUR_SERVER_IP"のところを、利用可能なIPアドレスか、IPアドレスに正引きが可能なホスト名に書き換えます。
NOMI宅のインターネット接続環境は、一般家庭と同じくIPアドレス非固定の契約ですから、IPアドレスを指定してしまうとルーターをリセットする度に設定を書き換えなくてはなりませんのでこれはNGです。ここはダイナミックDNS(DDNS)のホスト名を設定します。
NOMI宅では、YAMAHA NVR500の利用でヤマハのネットボランチ用のホスト名の他、このサイトを公開するためにMyDNSからお借りしているホスト名、更にDSMの初期設定で登録したホスト名が利用できます。
- 【L2TP/IPsecで自宅にVPN接続~YAMAHA NVR500】 ????.netvolante.jp
- 【MyDNSでDDNSを利用する】 *.wwq.mydns.jp
- 【SynologyのDDNS設定~DiskStation DS218j】 wwq.myds.me
もちろんどれでも構わないのですが、ここはSynologyの「VPN Serverパッケージ」をつかうということで、敬意を表して"wwq.myds.me"を使用します。
また、中国のネット検閲を逃れるには、DS218jを経由して自宅のグローバルIPアドレスへリダイレクトしてインターネットに接続する必要がありますから、"#redirect-gateway def1″の先頭のコメント化記号"#"を削除します。
以下、設定後のパラメータです。
dev tun
tls-client
remote wwq.myds.me [変更して設定したポート番号]
~中略~
redirect-gateway def1
~後略~
編集が終わったら上書き保存します。以上でWindows側の設定は完了です。
では接続です。
パソコン上でOpenVPNは起動していますので、タスクトレイのOpenVPNを右クリックし、[接続]を選択します。
接続のダイアログが表示されます。
「VPN Server」では、DSMのアカウントのユーザー名とパスワードで接続します。NOMI宅のDS218jでは管理アカウント以外のユーザーはいませんので、管理アカウントで接続します。
[OK]をクリックし、接続がうまくいくと、メッセージが表示されます。AndroidのOpenVPNクライアント設定
Androidから接続するには、OpenVPNアプリと、上記でWindows10用に編集した"VPNConfig.ovpn"ファイルを使います。
まず、Android端末をパソコンにつなぎ、Android端末の適当なフォルダに編集済みの"VPNConfig.ovpn"ファイルをコピーしておきます。
“VPNConfig.ovpn"ファイルを端末にメールで送ってダウンロードしておく、というテもありますが、証明書入りのファイルはメールで送るのはやめたほうがいいと思います。
それからGoogle PlayにOpenVPNアプリをインストールします。
似たような名前のアプリが結構ありますが、ダウンロード数が半端なく多いのですぐにわかります。[インストール]をタップし、インストールが終わったらアプリを起動します。
[OVPN Profile]をタップします。端末にコピーしておいた"VPNConfig.ovpn"ファイルを探して選択し、右上の[IMPORT]をタップします。
Windowsからの接続と同じく、DSMのアカウントのユーザー名とパスワードを入力します。パスワード入力欄は「Save password」にチェックを入れると表示されます。
入力が終わったら[ADD]をタップします。
スイッチをタップすると証明書を選ぶダイアログが表示されますので[CONTINUE]をタップします。
これで接続完了です。VPN接続中は通知領域にアイコンが表示されます。
インポートが終われば端末にコピーしておいた"VPNConfig.ovpn"ファイルは不要になりますから、安全のため削除しておくことをお勧めします。
iPad(iOS)のOpenVPNクライアント設定
iPad(iOS)の場合、Androidのように好きな場所に"VPNConfig.ovpn"ファイルをコピーできませんので、面倒ですがiTunesを使います。iPhoneでも基本的には同じ(のはず)です。
まずApp StoreからOpenVPNアプリを探します。
見つかったらインストールします。
インストールが終わったらiPadをパソコンのiTunesと接続します。
「ファイルの共有」→「OpenVPN」を選択し、ファイルリストに上記でWindows10用に編集した"VPNConfig.ovpn"ファイルをドラッグします。
リストを上までスクロールしてみて、ファイルリストに"VPNConfig.ovpn"ファイルが入っていることを確認して[同期]ボタンをクリックします。
どうしてスクロールしないとリストを確認できないような仕様なのでしょうね。iTunesって。
同期が終わったらiPadの「OpenVPN」を起動します。
[OVPN Profile]をタップします。“VPNConfig.ovpn"ファイルがインポートされているのが確認できます。[ADD]をタップします。
Windowsからの接続と同じく、DSMのアカウントのユーザー名とパスワードを入力します。パスワード入力欄は「Save password」にチェックを入れると表示されます。
入力が終わったら[ADD]をタップします。
確認のダイアログが表示されるので[Allow]をタップします。するとiPad本体のパスコードを求められますので認証します。
設定が保存されるので接続スイッチをタップします。すると確認のダイアログが表示されるので[YES]をタップします。
これで接続完了です。VPN接続中は通知領域にアイコンが表示されます。
iOSの場合、"VPNConfig.ovpn"ファイルのインポートにはiTuneが必要なので少し面倒ですが、単純にコピーで済むAndroidよりも安全性は高いと思います。
OpenVPNの接続状況の確認と接続アカウントの追加
次に、接続状況を確認してみます。
VPN接続中に、自宅のグローバルIPアドレスへリダイレクトできているか否かは、接続中の端末のWebブラウザから
を開き、自宅LANのパソコンからアクセスしたときのグローバルIPアドレスと、VPN接続中のパソコンからアクセスしたときのグローバルIPアドレスが一致していることを確認すればOKです。
ちなみに、接続の状況はDSMの「VPN Server」から確認することができます。
リアルタイムのステータスと、
アクセスログです。
接続ユーザーを追加するときはDSMのアカウントとして追加します。接続ユーザーはDSM上のアカウントごとに設定できますので、
接続に使用しないユーザーアカウントと、使う予定のないPPTPとL2TP/IPSecの設定ははずして[保存]しておきます。
実は少し事情があって、「VPN Server」でもL2TP/IPSecの設定もやりました。興味のある方は【VPN Serverで自宅にVPN接続(L2TP/IPSec編)~DiskStation DS218j】をご一読ください。
以上で設定は終わりです。中国のネット検閲は予告なく変更されますので、ある日突然「L2TP/IPSecが使えなくなった」のようなことがあるかもしれません。複数のVPN接続手段を持っておくと安心ですね。
ディスカッション
コメント一覧
いやー素晴らしい記事です。
ありがとうございます。参考にさせていただきます。
どもっ。お役に立てれば何よりです。