VPN Serverで自宅にVPN接続(OpenVPN編)~DiskStation DS218j

DDNS関係, DSMアプリケーション, Synology DiskStation DS218j, VPN関係, YAMAHA NVR500, ルーターAndroid, DSM, DSMパッケージ, iOS, NAS, OpenVPN, Synology, VPN, Windows, セキュリティ, 落雷

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」パッケージのインストール|VPN Serverを使う

「VPN Server」の[インストール]をクリックします。ほどなくインストールは終わります。

OpenVPNの設定と有効化

「VPN Sever」の起動|VPN Serverを使う

[メインメニュー]を開いて[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を利用することはできます。

というわけで、ここは"OpenVPN"の一択ですので「OpenVPN」を選択します。

OpenVPNの設定|VPN Serverを使う

「OpenVPN サーバーを有効にする」にチェックを入れると設定可能になります。

「ダイナミックIPアドレス:」、「最大接続数:」、「同じアカウントで接続できる数:」はデフォルトのまま、「ポート:」はセキュリティを考えてデフォルトの"1194″から適当なものに変更します(ここは内緒)。

「VPNリンクで圧縮を有効にする」はとりあえずON。負荷が大きいなら速度を犠牲にしてオフにする予定。「クライアントにサーバーの LAN にアクセスさせる」も試験的にとりあえずON。LANにアクセスする必要がなければセキュリティ上はオフが正解ですので後で考えます。

設定が終わったら「適用」をクリックします。

ルーター設定のダイアログ|VPN Serverを使う

ダイアログが表示されます。つまり「ルーターからDS218jのIPアドレス"192.168.100.201″に対して「ポート:」に設定したポート番号をUDPで通過させる設定をしなさい。」ということですね。これは後程やります。ひとまず「OK」をクリックしてダイアログを閉じます。

OpenVPN接続設定ファイルのエクスポート

OpenVPN設定のエクスポート|VPN Serverを使う

設定が有効になると、[エクスポート設定]ボタンが押せるようになりますのでクリックします。

意味としては「設定をエクスポート」するボタンですから、これは微妙な誤訳ですね。

OpenVPN設定の保存|VPN Serverを使う

設定ファイルのアーカイブ"openvpn.zip"の保存ダイアログが表示されますので、「OK」をクリックしてパソコンに保存しておきます。

「OpenVPN」の設定はひとまずここまで。続いてルーターの設定に移ります。

ルーターにポートフォワーディングの設定を行う

設定方法はルーター毎に異なりますが、YAMAHA NVR500では設定画面にログイン後、[詳細設定と情報]→[基本接続の詳細な設定]→「設定されているプロバイダの一覧」の有効なプロバイダから[設定]と進みます。

YAMAHA NVR500のフィルタ設定|VPN Serverを使う

「静的IPマスカレード関連(…)」で[追加]をクリックします。

ここで表示されているフィルタの1と2は、このサイトの公開のため。3はルーターへのリモートログインのため。4~7はルーターへL2TP/IPSecのVPNで接続するための設定です。

YAMAHA NVR500にフィルタ追加|VPN Serverを使う

先ほどのダイアログで指示された、「プロトコル」→"UDP"、「ポート」→"変更して設定したポート番号"、「使用ホストIPアドレス」→DS218jのIPアドレス"192.168.100.201″、を入力して[設定の確定]をクリックします。

YAMAHA NVR500フィルタ追加完了|VPN Serverを使う

ルーターの設定はこれで完了です。

YAHAMAルーターでは「静的IPマスカレード」と表現されているこれらの設定ですが、Baffaloでは[ポート変換]または[アドレス変換設定]、IOデータでは「ポートの開放」、NECでは「ポートマッピング」、となっています。やっていることは同じなのに、呼び方が違うのはどうにかならないものでしょうか。

Windows10のOpenVPNクライアント設定

続いてWindows10にOpenVPNのクライアントアプリ「OpenVPN GUI」をインストールします。OpenVPN公式のダウンロードページにアクセスします。

Community Downloads | OpenVPN

ウィンドウをスクロールします。

OpenVPN GUIダウンロード|VPN Serverを使う

Windows用のインストーラを探してダウンロードします。

OpenVPN GUIインストーラの起動|VPN Serverを使う

ダウンロードしたインストーラを右クリック→「管理者として実行(A)」でインストーラーを起動します。

インストール時は特に修正すべき設定項目はありませんのでサクサク進めます。

ネットワークデバイス追加|VPN Serverを使う

途中でネットワークデバイスのインストールに関するダイアログが出ますので[インストール(I)]をクリックします。

OpenVPNインストール終了|VPN Serverを使う

インストール終了です。ここから外部ネットワークから接続しての設定になります。

当たり前ですが、DS218jと同じLANの中からVPN接続をやっても意味がありませんので、スマホのテザリングを使うなり、インターネットカフェや学校や職場に行くなりして、自宅外からインターネット接続してからの作業となります。

インストールしたOpenVPNを起動します。

ファイヤーウォール解除設定|VPN Serverを使う

ファイヤーウォール設定のダイアログが出ます。外部ネットワークからの接続が前提になりますので、プライベート、パブリックともブロックを解除します。

設定方法のダイアログ|VPN Serverを使う

こんなダイアログも出ます。「接続用のプロファイル(設定ファイル)が見つかりません。メニューからファイルをインポートするか、指定したパスに設定ファイルをコピーしなさい。」だそうです。

というわけで、「OpenVPN」の設定の最後で、[エクスポート設定]ボタンをクリックして保存した設定ファイルのアーカイブ"openvpn.zip"を解凍して、フォルダごと指定のパスに移動します。

設定ファイルを移動|VPN Serverを使う

移動した"openvpn"フォルダを開きます。

設定ファイルを開く|VPN Serverを使う

“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の初期設定で登録したホスト名が利用できます。

もちろんどれでも構わないのですが、ここはSynologyの「VPN Serverパッケージ」をつかうということで、敬意を表して"wwq.myds.me"を使用します。

また、中国のネット検閲を逃れるには、DS218jを経由して自宅のグローバルIPアドレスへリダイレクトしてインターネットに接続する必要がありますから、"#redirect-gateway def1″の先頭のコメント化記号"#"を削除します。

以下、設定後のパラメータです。

dev tun
tls-client

remote wwq.myds.me [変更して設定したポート番号]

~中略~

redirect-gateway def1

~後略~

編集が終わったら上書き保存します。以上でWindows側の設定は完了です。

では接続です。

OpenVPNで接続|VPN Serverを使う

パソコン上でOpenVPNは起動していますので、タスクトレイのOpenVPNを右クリックし、[接続]を選択します。

接続のダイアログ|VPN Serverを使う

接続のダイアログが表示されます。

「VPN Server」では、DSMのアカウントのユーザー名とパスワードで接続します。NOMI宅のDS218jでは管理アカウント以外のユーザーはいませんので、管理アカウントで接続します。

[OK]をクリックし、接続がうまくいくと、メッセージが表示されます。

OpenVPN接続完了|VPN Serverを使う

AndroidのOpenVPNクライアント設定

Androidから接続するには、OpenVPNアプリと、上記でWindows10用に編集した"VPNConfig.ovpn"ファイルを使います。

まず、Android端末をパソコンにつなぎ、Android端末の適当なフォルダに編集済みの"VPNConfig.ovpn"ファイルをコピーしておきます。

“VPNConfig.ovpn"ファイルを端末にメールで送ってダウンロードしておく、というテもありますが、証明書入りのファイルはメールで送るのはやめたほうがいいと思います。

それからGoogle PlayにOpenVPNアプリをインストールします。

AndroidにOpenVPNをインストール|VPN Serverを使う

似たような名前のアプリが結構ありますが、ダウンロード数が半端なく多いのですぐにわかります。[インストール]をタップし、インストールが終わったらアプリを起動します。

[OVPN Prifile]をタップ(Android)|VPN Serverを使う

[OVPN Profile]をタップします。

プロファイルのインポート(Android)|VPN Serverを使う

端末にコピーしておいた"VPNConfig.ovpn"ファイルを探して選択し、右上の[IMPORT]をタップします。

接続設定の保存(Android)|VPN Serverを使う

Windowsからの接続と同じく、DSMのアカウントのユーザー名とパスワードを入力します。パスワード入力欄は「Save password」にチェックを入れると表示されます。

入力が終わったら[ADD]をタップします。

VPN接続操作(Android)|VPN Serverを使う

スイッチをタップすると証明書を選ぶダイアログが表示されますので[CONTINUE]をタップします。

VPN接続中(Android)|VPN Serverを使う

これで接続完了です。VPN接続中は通知領域にアイコンが表示されます。

インポートが終われば端末にコピーしておいた"VPNConfig.ovpn"ファイルは不要になりますから、安全のため削除しておくことをお勧めします。

iPad(iOS)のOpenVPNクライアント設定

iPad(iOS)の場合、Androidのように好きな場所に"VPNConfig.ovpn"ファイルをコピーできませんので、面倒ですがiTunesを使います。iPhoneでも基本的には同じ(のはず)です。

まずApp StoreからOpenVPNアプリを探します。

OpenVPNアプリ(iOS)|VPN Serverを使う

見つかったらインストールします。

インストールが終わったらiPadをパソコンのiTunesと接続します。

iTunesで"VPNConfig.ovpn"をインポート|VPN Serverを使う

「ファイルの共有」→「OpenVPN」を選択し、ファイルリストに上記でWindows10用に編集した"VPNConfig.ovpn"ファイルをドラッグします。

"VPNConfig.ovpn"の確認と同期|VPN Serverを使う

リストを上までスクロールしてみて、ファイルリストに"VPNConfig.ovpn"ファイルが入っていることを確認して[同期]ボタンをクリックします。

どうしてスクロールしないとリストを確認できないような仕様なのでしょうね。iTunesって。

同期が終わったらiPadの「OpenVPN」を起動します。

OpenVPN起動(iOS)|VPN Serverを使う

[OVPN Profile]をタップします。

"VPNConfig.ovpn"の追加(iOS)|VPN Serverを使う

“VPNConfig.ovpn"ファイルがインポートされているのが確認できます。[ADD]をタップします。

接続設定の保存(iOS)|VPN Serverを使う

Windowsからの接続と同じく、DSMのアカウントのユーザー名とパスワードを入力します。パスワード入力欄は「Save password」にチェックを入れると表示されます。

入力が終わったら[ADD]をタップします。

VPN設定保存時の認証(iOS)|VPN Serverを使う

確認のダイアログが表示されるので[Allow]をタップします。するとiPad本体のパスコードを求められますので認証します。

VPN接続の開始(iOS)|VPN Serverを使う

設定が保存されるので接続スイッチをタップします。すると確認のダイアログが表示されるので[YES]をタップします。

OpenVPN接続中(iOS)|VPN Serverを使う

これで接続完了です。VPN接続中は通知領域にアイコンが表示されます。

iOSの場合、"VPNConfig.ovpn"ファイルのインポートにはiTuneが必要なので少し面倒ですが、単純にコピーで済むAndroidよりも安全性は高いと思います。

OpenVPNの接続状況の確認と接続アカウントの追加

次に、接続状況を確認してみます。

VPN接続中に、自宅のグローバルIPアドレスへリダイレクトできているか否かは、接続中の端末のWebブラウザから

確認くん

を開き、自宅LANのパソコンからアクセスしたときのグローバルIPアドレスと、VPN接続中のパソコンからアクセスしたときのグローバルIPアドレスが一致していることを確認すればOKです。

確認くん|VPN Serverを使う

ちなみに、接続の状況はDSMの「VPN Server」から確認することができます。

OpenVPN接続状況を見る|VPN Serverを使う

リアルタイムのステータスと、

OpenVPN接続ログ|VPN Serverを使う

アクセスログです。

接続ユーザーを追加するときはDSMのアカウントとして追加します。接続ユーザーはDSM上のアカウントごとに設定できますので、

OpenVPN接続ユーザー設定|VPN Serverを使う

接続に使用しないユーザーアカウントと、使う予定のないPPTPとL2TP/IPSecの設定ははずして[保存]しておきます。

以上で設定は終わりです。中国のネット検閲は予告なく変更されますので、ある日突然「L2TP/IPSecが使えなくなった」のようなことがあるかもしれません。複数のVPN接続手段を持っておくと安心ですね。