VPNでNASにリモートアクセス!QTS5.0でWireGuardを試す

 QNAPのQTS5.0 betaが公開されており、その中でWire Guardが使用できる旨案内されています。

WireGuardはカーネルレベルでサポートされるVPN接続であり、非常に軽量と評価されています。

今回は、QTS 5.0にWire GuardでVPN接続する方法について、早速まとめていきたいと思います。

手順としては、
 1. NAS側のWireGuard VPNサーバー設定
 2. Windowsクライアント側のWireGuard クライアント設定
 3. NASに戻って、WireGuard VPNサーバーに、2で設定したクライアント情報を設定
という手順になります。

VPN暗号化なし、WireGuard VPN接続、QBelt VPN接続でパフォーマンス比較も行っちゃいます。

それでは、Let's try!


まずはじめに

なにはなくとも、QTS5.0にアップデートできなければWireGuardが使えません。
私のTS-251Dでは「コントロールパネル」→「ファームウェア更新」で、

「ベータプログラムに参加し、ベータアップデート通知を受け取ります」を有効にすることで、5.0 betaにライブ更新できました。

QVPN Service 3.0のインストールと設定

QTS 5.0にアップデートすると、QVPN Service 3.0がインストールできるようになっていますので、AppCenterからインストール / 更新します。
QVPN Service 3.0にアップデートすると、下記のようにWireGuardでの接続が選べるようになっています。
WireGuardの画面に移ったあと、まずはWireGuardを有効にし、サーバー側の設定を行っていきます。
 1. Server nameを入力した後
 2.「Generate Keypairs」のボタンを押して
 3. DNSサーバを8.8.8.8(google)に設定
まずはここまででOKで、クライアント側の設定に入ります。

Wire Guardクライアントのインストールと設定

従来、QVPNサーバーに接続する場合、QVPNクライアントから接続できましたが、Wire Guardで接続する場合は、Wire Guard クライアントから接続する必要があるようです。
ですので、下記ページよりWire Guardクライアントをダウンロードします。
私は、Windows 10 64bitを使っていますので、Windows用のインストーラをダウンロード、インストールしました。

WireGuardクライアントを起動すると下記のような画面が表示されますので、設定を行っていきます。
画面左下の「トンネルの追加」から、「空のトンネルを追加」を選びます。
すると、次のようにVPNの設定を入力する画面が開きますので、順番に設定していきます。
[Interface]のセクションが、クライアント(WireGuardクライアントをインストールしたWindows PC側の設定)となります。

デフォルトに対して、
 Address : VPNセッションを張った際のWindows PCのIPアドレス

 DNS : VPNセッションを張った際に参照するDNSアドレス
を追加設定してあげます。

Addressは、NAS側が、198.18.7.1/24に設定されていますので、同じネットワークアドレスで被らないように、198.18.7.3/24に設定します。
※NASに対して複数端末から接続するのであれば、各端末でIPアドレスが被らないようにしましょう。
※先に1台設定してましたので、この端末は、198.18.7.3としました。
[Peer]セクションが、NAS側の設定となります。
 PublicKey:NASのQVPN 3.0の画面で表示された「PublicKey」をコピペしてあげます。

 AlloweIPs:どのアドレスへアクセスする際に、この接続を使うか?という設定になります。今回は、198.18.7.0に接続されている端末にアクセスするときのみこの接続を使うということで、198.18.7.0/24を設定しました。

 Endpoint : NASのIPアドレスとポート番号になります。FQDNでの指定も可能です。インターネット越しに接続する場合は、FQDNでの設定になるかと思います。

 Persistentkeepalive:無通信状態となることを防いで、セッションが維持されるようにします。

これで、クライアント側の設定は完了です。

クライアント側の設定をコピペしやすいように、こちらに記載しておきます。
[Interface]
PrivateKey = XXXXXXXX
Address = 198.18.7.3/24
DNS = 8.8.8.8

[Peer]
PublicKey = XXXXXXXX
AllowedIPs = 198.18.7.0/24
Endpoint = 192.168.100.200:51820
PersistentKeepalive = 25

再度NAS側に戻って・・・

再度NASに戻って、接続を許可するクライアントの設定を行います。
QVPN Serviceの画面で、「AddPeer」ボタンを押すと、下記画面が表示されます。
今度はここで、クライアント名の設定と、クライアント側のPublic Keyの設定をしてあげます。クライアント名は、識別用に決めてあげればOK。クライアント側のPublic Keyは、先ほどのWindows側のWireGuardクライアントの設定画面から「公開鍵」をコピペしてあげればOKです。


WireGuardクライアントと、QVPN Serviceの両方で、このように通信が発生していれば、VPN接続された状態となっています。

正しく設定ができていれば、下の矢印で結んだ部分には同じ文字列が入っているはずですので、VPN接続がうまくいかない場合は、下記参考にして確認してください。
※ネットマスクが若干ずれてますが、ネットマスクがずれてても通信できました。
当然、厳密にはネットマスクをちゃんと合わせて設定することをお勧めします。

パフォーマンスチェック

ここまでの設定で、ローカルLAN内でのVPN接続ができるようになっていますので、VPN処理を行わなかった場合と、行った場合でパフォーマンスを比較してみます。

VPN接続なしで測定
WireGuard VPN接続越しで測定
QVPN QBelt VPN越しで測定

ローカルアクセス時は、ワイヤーレートに達しているので、実際にはもっとパフォーマンスが出るのかもしれません。シーケンシャルアクセスでは、WireGuard VPN接続時に45~50%程度にパフォーマンスダウンでしょうか。思ったよりもVPNの処理にCPUパワーを使っている印象です。
ただし、今までサポートされていたQBeltでは、VPN越しで10~20%程度にパフォーマンスダウンしているので、WireGuardではより良いパフォーマンスでVPN接続できることが期待できます。

家の外からアクセスするためには?

家の外からWireGuardでアクセスするためには、ポートフォワードの設定が必要となります。
Qhoraにおいては、「サービス」→「サービス管理」からまずはVPNサービスの設定を作ってあげます。WireGuardは、UDPの通信ですので、UDPポートのみ開ければよいですが、今回は、TCP+UDPでポートフォワードを設定しています。
ポート番号は、NASでのWireGuard接続待ち受けポートと同じにしました。
次に、「NAT/ファイアウォール」→「ファイアウォールルール」→「ポートフォワーディング」で、ポートフォワードの設定をします。
こんな形で、NASのIPアドレスと、WireGuard待ち受けポート番号を設定してあげればOKです。

仕上げに。外から接続するためのWireGuardクライアントのプロファイルを作成

先ほど作成したWireGuardのプロファイルはローカル接続用ですので、プロファイルを複製し、リモート接続用に修正します。
PrivateKeyなどの設定はそのままで変更不要です。
Endpointのアドレスを、外から見た時のルーターのアドレスとなるように書き換えます。
FQDNで指定ができますので、このようにmyqnapcloudに登録しているNAS名を使って設定することができます。

まとめ

今回は、QTS5.0で新しくサポートされたWireGuardを使ってVPN接続を行ってみました。

WireGuard VPN接続は、今まで標準的に使われていたQBeltよりも軽量でパフォーマンスが出るようです。
当然、今までもVPNで接続していたという方もいらっしゃると思いますが、VPNだと速度が遅くなってしまっていたので、myqnapcloud.com経由でQTSに入ってQfileでアクセスしていたような場合でしたら、WireGuardに切り替えることで、余計なGUI操作なく、単純なファイル操作のみでファイルにアクセスできるようになるため、使っていくのもありかと思いました。

コメント

このブログの人気の投稿

レトロゲームステーションに!QNAP TS-251D

NASに保存したファイルを便利に検索する方法