2020年12月31日木曜日

QNAPとOpenVPNを使って自宅にVPN接続する方法

インターネット経由で自宅のネットワークにアクセスできると何かと便利ではあるが、外からRDPやSSHで接続できるようポートを開けてしまうと、外部からの攻撃や乗っ取りのリスクが高まるため望ましくない。実際に身近でも、外からRDPで接続できるようポートを開けていたら、PCが乗っ取られてしまったというケースを聞いたことがある。

というわけで外部から自宅内ネットワークに安全にアクセスするために、VPNによるアクセスを実施することにした。具体的には、QNAPのNASをVPNサーバーとして設定し、WindowsやAndroidからVPNでリモート接続できるようにしてみた

QNAPのOpenVPNサーバの設定

本記事で掲載する画面キャプチャは、QTSバージョン:4.5.1のものとなるが、他バージョンでも、ほぼ同様の画面となっているはずだ。

1. QVPN Serviceのインストール

まず、QNAPのWeb管理画面にログインしたのちApp Centerを開き、「QVPN Service」をインストールする。

2. OpenVPNの設定

インストール後、QVPN Serviceを開く。VPNの方式として、「QBelt」、「PPTP」、「L2TP/IPsec (PSK)」、「OpenVPN」の4種類が選択可能だが、今回は「OpenVPN」を有効化するため、左メニューより「OpenVPN」を選択し、「OpenVPNサーバーを有効にする」にチェックを入れる。

その他の設定はデフォルトのままで問題ないため、「適用」ボタンを押して設定反映を行う。

3. OpenVPNのプロファイルファイルをダウンロード

次に、「設定ファイルのダウンロード (for QVPN v1.1 or newer)」ボタンをクリックし、<QNAPのホスト名>.ovpnというファイル名のファイルをダウンロードする。このファイルはOpenVPNの接続情報が記載されたテキストファイル (プロファイルファイル) となっており、接続に必要な証明書情報も含まれている。

ダウンロードしたプロファイルファイルをテキストエディタで開くと接続先情報がIPアドレス表記になっているので、DDNSなどで自宅のグローバルIPアドレスを名前解決できる場合は、FQDNの表記に修正しておく。これによって、プロバイダから割り当てられるIPアドレスが変更となった場合にも接続することができる。

remote 100.10.20.30 1194
   ↓
remote example.myqnapcloud.com 1194

4. OpenVPN接続ユーザの設定

左メニュー→「権限設定」にて、接続可能とするVPN接続ユーザを追加し、OpenVPNの項目にチェックを付ける。

ブロードバンドルータの設定

OpenVPNはUDPの1194ポートを使うため、ブロードバンドルータでポート開放を行う必要がある。設定方法は各社のルーターのマニュアルを確認すること。通常は「ポートマッピング」といった呼ばれ方の設定項目があるはずで、外部からの特定ポートのアクセスをLAN側の特定のサーバに転送する設定を行えばよい。

OpenVPNは1194/UDPで接続を行うため、以下のようなマッピング設定を行う。

  • LAN側ホスト:QNAPのIPアドレスを設定
  • LAN側ポート番号:1194/UDP
  • WAN側ポート番号:1194/UDP

Windows OSからの接続

1. OpenVPNクライアントをダウンロード

Windows OSの場合、まずは以下URLからOpenVPNクライアントをダウンロードする。自身の使っているWindows OSに合わせて、「Windowsインストーラ」の64bitまたは32bitのどちらかをダウンロードすればよい。

※なお、ダウンロードURLの注意書きに「vpnux Clientがお勧めです」との記載もあるので、そちらを利用してもよい。私はvpnux Clientは使ったことがないので、今回はOpenVPNを使って接続する。

2. OpenVPNクライアントをインストール

インストーラーを実行して、「Install Now」を押すだけでインストールは完了する。なお、途中でデバイスのインストールの警告が表示される場合は、「OK」を押してインストールを継続すればよい。

インストール後、「No readable connection profiles (config files) found.」という内容のポップアップが表示されるが、プロファイルファイルを配置していないことによるものであり、ファイル配置前となることから問題がないメッセージとなるため、「OK」を選択しておく。

3. プロファイルファイルの配置

インストール後、先ほどQNAPからダウロードした<QNAPのホスト名>.ovpnを以下パスに配置する。

C:\Program Files\OpenVPN\config

4. OpenVPNで接続

タスクトレイの「OpenVPN GUI」のアイコンを右クリック→「接続」を選択する。
※タスクトレイに表示されていない場合は、デスクトップの「OpenVPN GUI」のショートカットをダブルクリックし起動すること。

リモート接続を許可しているユーザとパスワードを入力することでOpenVPNによるVPN接続ができる。

なお、接続時に赤字で以下のような警告メッセージが表示されるが、これはAES-128-CBCが非推奨 (DEPRECATED) である旨のメッセージとなる。現時点のQNAPは残念ながら、AES-128-CBCまたはAES-256-CBCの2種類しか設定できないため、この警告は無視して接続するしか対処方法はない状況となる。

Thu Dec 31 08:04:10 2020 WARNING: Compression for receiving enabled. Compression has been used in the past to break encryption. Sent packets are not compressed unless "allow-compression yes" is also set.
Thu Dec 31 08:04:10 2020 DEPRECATED OPTION: --cipher set to 'AES-128-CBC' but missing in --data-ciphers (AES-256-GCM:AES-128-GCM). Future OpenVPN version will ignore --cipher for cipher negotiations. Add 'AES-128-CBC' to --data-ciphers or change --cipher 'AES-128-CBC' to --data-ciphers-fallback 'AES-128-CBC' to silence this warning.
Thu Dec 31 08:04:10 2020 OpenVPN 2.5.0 x86_64-w64-mingw32 [SSL (OpenSSL)] [LZO] [LZ4] [PKCS11] [AEAD] built on Oct 28 2020
Thu Dec 31 08:04:10 2020 Windows version 10.0 (Windows 10 or greater) 64bit
Thu Dec 31 08:04:10 2020 library versions: OpenSSL 1.1.1h  22 Sep 2020, LZO 2.10

Androidからの接続

1. OpenVPNクライアントをインストール

Androidの場合は、Google Play Storeから「OpenVPN Connect」を検索して、インストールをする。

2. プロファイルファイルのインポート

OpenVPN Connectを起動すると「Import Profile」画面が表示されるので、「File」タブ→QNAPからダウロードした<QNAPのホスト名>.ovpnを指定→「Import」ボタンを選択する。

リモート接続を許可しているユーザとパスワードを入力し、右上の「ADD」を選択する。

3. OpenVPNで接続

作成したプロファイルの選択し有効化することで接続が開始される。

「Connection request」のポップアップが表示された場合は「OK」を選択する。

「Select Certificate」が表示される場合は、「CONTINUE」と「SELECT CERTIFICATE」どちらを選択しても接続は成功するが、毎回接続時に確認されるのが面倒な場合は、「SELECT CERTIFICATE」を選択してデフォルトの証明書を選択しておけばよい。

正常に接続されれば、以下の通り「CONNECTED」と表示される。

まとめ

以上で、QNAPをVPNサーバーとして、外部からVPNすることに成功した。外出先から自宅環境のファイルを見たり、検証サーバーにアクセスしたり、非常に便利になった。

更新履歴

  • 2017/08/01 新規作成
  • 2020/12/31 最新の情報に合わせて、全体的に内容を更新

4 件のコメント:

  1. QNAPをOpenVPNで利用する上で非常にわかりやすく参考になりました。
    おかげさまで無事設定も終えることができました。ありがとうございました。

    返信削除
    返信
    1. 本情報がお役に立ててよかったです!

      削除
  2. > なお、接続時に赤字で以下のような警告メッセージが表示されるが、これはAES-128-CBCが非推奨 (DEPRECATED) である旨のメッセージとなる

    今更ですが、ここにたどりついた方のために訂正すると、このワーニングは単に定義ファイル内の記述方法が「古い」(将来的になくなります)ためのものです。
    「cipher AES-128-CBC」を「data-ciphers-fallback AES-256-CBC」に変更すればワーニングは出なくなるとのことです。

    返信削除

人気の投稿