Synology DS218j で VPN を構築する

NAS として、PC や録画のバックアップにも使える Synology の NAS シリーズ、非常に便利ですね。
でもそれだけで無くサーバー化させることができます。
そのうちの一つとして VPN サーバーとして使う場合の話です。
元々 NAS として 24 時間駆動させる前提のものなので、変にノートPC等を24時間駆動させるよりも安心でしょう。
前に AirMac Time Capsule を利用していたのですが、 DS218j の方が静音、アクセス速度、とNASとしての性能にも優れ、他にもサーバーとして使えるなど汎用性があり、個人的にはこちらの方がおすすめです。向こうはルーターなので、一緒に済ませたい用途が違うので、それで決めると良いでしょう。
DS218j は Amazon でも人気商品で大型セール時に安くなることがあります。

# 前提
一通り初期設定が終わっていて、基本的な操作方法は分かっている前提で進めます。

# 準備
DSM にログインします。
「パッケージ センター」で「VPN」を検索して「VPN Server」を見つけ、インストールします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/100313/8c7370bd-0174-51f0-72e3-d0c2e1829bf5.png)

# 設定
## DDNS
既に別途 DDNS サービスを利用していてホスト名を持っている場合、このステップは必要ありません。
Synology NAS の利用者であれば、無償で Synology を DDNS プロバイダーとしてホストアドレスを利用できます。
まず、「コントロール パネル」を開きます。
「外部アクセス」を開きます。
その中の「DDNS」のタブを開き、「追加」ボタンをクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/100313/ae38c88e-8f00-a221-5bc2-6d4bfaa0f300.png)

|設定項目名|設定値|
|:--|:--|
|サービスプロバイダ|Synology|
|ホスト名|(任意の文字列).(Synologyの提供する任意のドメイン)|
|ユーザー名/Eメール|(Synologyアカウントのユーザー名)|
|パスワード/キー|(Synologyアカウントのパスワード)
|Heartbeart|(任意の選択肢)|

![image.png](https://qiita-image-store.s3.amazonaws.com/0/100313/30e7c752-9fe9-094e-4879-3587abb21da7.png)

以上で設定します。
試しに `nslookup` を試してみて、自分のグローバルIPアドレスが表示されていれば正常に設定されています。

参考: [Synology DDNS サービスって何？](https://www.synology.com/ja-jp/knowledgebase/DSM/tutorial/General/What_Is_Synology_DDNS_Service)
参考: [DiskStation Manager ヘルプ - DDNS](https://www.synology.com/ja-jp/knowledgebase/DSM/help/DSM/AdminCenter/connection_ddns)

## VPN
参考: [Synology Router Manager ヘルプ - VPN Server の設定](https://www.synology.com/ja-jp/knowledgebase/SRM/help/VPNCenter/vpn_setup)
参考: [Windows PC または Mac を使って Synology VPN Server に接続するには](https://www.synology.com/ja-jp/knowledgebase/DSM/tutorial/Application/How_to_connect_to_Synology_s_VPN_Server_using_a_Windows_PC_or_Mac#t3.1)
### OpenVPN
#### DiskStation
以下に設定例を示します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/100313/15f6858e-f0c0-a99d-ece5-5862cf54e40d.png)

「同じアカウントで接続できる数」は「1」にしておく方が良いでしょう。
複数端末から同時にアクセスしたいのならアカウントを複数作った方が妥当だと思います。
暗号化・認証については好きなものを選んでください。
セキュリティ強度を高めるとその複雑さの分だけ、オーバーヘッドがかかりますが、最近のPCではあまり問題にならないことの方が多いのではないでしょうか。
「VPNリンクで圧縮を有効にする」とネットワークのトラフィックは抑えられますがオーバーヘッドがかかります。
「クライアントにサーバーの LAN にアクセスさせる」は必要ならチェックを入れましょう。
上記設定画面左下の「エクスポート設定」とは「エクスポート の 設定」ではなくて「設定 の エクスポート」です。
クライアント側の設定で使用します。

再びコントロールパネルに戻ります。
同様に「外部アクセス」を開き、今度は「ルーター の設定」タブを開きます。
「ルーターの設定」ボタンを押すとルーターが自動的に認識されます。
「作成」ボタンを押して「組み込み式アプリケーション」を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/100313/b725a8a2-a352-2dcd-3e19-395a5e6a0e87.png)
`VPN Server | 1194 | 1194 | UDP` のものにチェックを入れ適用を惜します。
それにチェックを入れて保存を押します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/100313/92a96a67-eb5e-b851-6092-4be28340092a.png)
これだけでルーターのポート転送設定が完了します。
やばいやつですねこいつ。お手軽過ぎます。

#### クライアント
上記設定画面左下の「エクスポート設定」をクリックすると、証明書と ovpn ファイル と README が zip にまとめられてダウンロードされます。
zip を解凍して、 `VPNConfig.ovpn` をエディタで開きます。
`YOUR_SERVER_IP` と書かれている箇所をグローバルIPアドレスあるいは上記 DDNS で取得したホスト名に書き換えます。
また、全てのトラフィックを VPN サーバー経由にしたい場合は `redirect-gateway def1` の前の `#` を消します。
その二箇所を確認したらこの解凍されたフォルダの名前を `openvpn` から分かりやすい名称に変更します。
OpenVPN クライアントソフトの設定フォルダにそのフォルダごと配置します。

自動的に生成された設定ファイルの二箇所だけ変更して突っ込むだけなので、非常に簡単ですね。
簡単すぎて使える様にするだけでは、あまり勉強になりません。

### L2TP/IPsec
#### DiskStation
OpenVPN 同様に「VPN Server」アプリケーションの「L2TP/IPsec」を開き、
有効にします。
注意点としては「認証」が `PAP` と `MS-CHAP v2` の二択です。
`PAP` は平文でやりとりするので、絶対に `MS-CHAP v2` を選択しましょう。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/100313/8164b286-25ee-33dd-cbd0-109adf0aebd4.png)

そして、OpenVPN の時同様に「コントロールパネル > ルーターの設定」からポート転送設定を行います。
L2TP/IPsec の場合は、 `UDP 1701, 500, 4500` の3つを転送します。

#### クライアント
クライアント側の設定は Windows, Mac 共にこちら [(RTX1200 で L2TP/IPsec の VPN を構築する - クライアント側の設定)](https://qiita.com/mizutoki79/items/daad6aa30e6f1cce7ac9#%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88%E5%81%B4%E3%81%AE%E8%A8%AD%E5%AE%9A) を参考にしてください