拠点間VPN調べたこと まとめ

はじめに

中古で7,000円くらいで売っていたyamahaのRTX810を購入した。
ネット上では最新のRTX830と比較してスループットが劣るとの評価があったが,
前まで使ってたbuffaloのPPTPサーバよりは安定感抜群で,しかもL2TP/IPsecに対応しているとの事もあり
特に不満なく使用していた。
ただ,今度は実家にもRTX810を設置し,拠点間VPNを張ってみたくなってしまった。
もう一台RTX810を調達したはいいものの調べてみると拠点間VPNには色々と種類があることが分かった。
とりあえずセキュリティが高ければいいという素人丸出しの意識しかなかったため,リモートアクセスみたくルータ間でL2TP/IPsecを張ればいいのではないかと思っていたがそんな単純なものでもないらしい。
とりあえず設定の前にお勉強することを備忘録代わりに記しておく。

RTX810で対応している方式

まず,RTX810で対応しているVPN方式は以下の四つだ。

IPsec
最も安全性の高い方式で、各拠点のLAN同士を接続(LAN間接続)したい場合
L2TP/IPsec
安全性を確保して、スマホなどからリモートアクセスしたい場合
PPTP
1つの接続方式でLAN間接続とリモートアクセスを併用したい場合、または、Windows PCから気軽にリモートアクセスしたい場合
IPIP
機密性の高い閉域網などを使って、簡単な設定でLAN間接続を実現したい場合
L2TPv3
拠点をLAN間接続して、同一セグメントのネットワークを構築したい場合

出典:
VPN接続方式

この内L2TP/IPsecはリモートアクセス用の方式であり拠点間VPNには適さないことから除外。
また,PPTPについてはセキュリティの問題から除外したいと思う。
また,IPIPは暗号化がされず機密性の高いネットワーク(フレッツ光NGN網等)が必要になるが,拠点間VPNを張る予定の拠点がフレッツ光を使用していないため除外となる。
すると残るのがIPsecとL2TPv3となる。この2つの方式について調べることとした。

IPsec

単純に単語からあたってみると以下の記述が見つかる。

IPsec(Security Architecture for Internet Protocol)とは、暗号化によってパケットの秘匿や改ざん検知を実現するプロトコルです。主にインターネットを介して拠点間を接続する、インターネットVPNを実現するためのプロトコルとして広く利用されています。
出典:
IPsecとは?意味・定義 | ITトレンド用語 | NTTコミュニケーションズ

主として暗号化に関わるプロトコルであるという記述が分かる。
ただ,IPsecは全体の総称であるとの記述もある。

実のところIPSecというのは、暗号化通信を実現する複数のプロトコルの総称である。本稿では、中核をなす以下の3つのプロトコルについて説明する。

IKE(Internet Key Exchange)
ESP(Encapsulating Security Payload)
AH(Authentication Header)
出典:IT管理者のためのIPSec講座 (3/3):技術解説 - @IT

IKEは暗号鍵作成のためのプロトコル,ESPはパケットの作り方に関するプロトコル,AHは直接暗号化には関わらないプロトコルらしい。
IKEは深く追求すると数学屋さんのテリトリーに入ってしまいそうなので暗号化技術についてはさておいて,通信に用いる暗号化方式に関する取り決めを安全にできるように双方のホスト間でやり取りするものであるようだ。L2TP/IPsecでも事前共有鍵を入力していたがIPsecを直接暗号化している鍵ではなく,あくまでIPsec成立の際に必要なものだったわけで成立後はホスト間が取り決めた暗号鍵でやり取りしているということだろう。
ちなみに鍵交換自体はISAKMPというのがやっているらしいが別プロトコルだと書いてあったり,IKEの一部だと書かれていたりとよくわからない。

ESPにはトンネルモードとトランスポートモードの2つのモードがある。
各モードの説明は以下のサイトに詳しく記述があるが今回のような拠点間VPNに用いられるモードはトンネルモードといえるだろう。
www.infraexpert.com
トランスポートモードでは発信元から直接データ部分のみを暗号化しヘッダをつけて送信するが,トンネルモードは発信元からGWなりで一旦受信し,発信元からのヘッダもろとも暗号化し新たにヘッダを付けて投げてやっているということらしい。GWなりが発信元の代わりに暗号化とヘッダの取り付けを行ってくれているので発信者はIPsec通信が行われていることを感じずにいられるという仕掛けなんだろう。

便利そうなトンネルモードでのIPsecだが,一つ弱点がある。NAT越えの問題だ。
通常のご家庭はNAPT機器を経由して通信を実施しているが,その際にポート番号を使って管理している為IPsecのようにポート番号も暗号化してしまいNAPT機器によりポート変換ができないと言う問題がある。しかしながらRTX810にはNATトラバーサル機能がある。

NATの内側でIPsecを利用するときに生じる制約や運用の難しさを改善します。 ESPパケットをUDPパケットの中に押し込めて送信することで、 次のような改善を引き出します。

NATの設定が簡単になります。 通常はESPパケットをNATで変換する設定が必要になりますが、 この機能を使うと、そのような設定が不要になります。
NATの内側で、複数の機器がIPsecを利用できるようになります。
出典:IPsec NATトラバーサル 外部仕様書

手法としては
1.IKEの処理途中でISAKMPメッセージを相手に渡すときにポート番号(UDP500)が変更されてないかIPsec機器は注視。(ISAKMPにはUDPヘッダが付いている)
  この際受信側がNATトラバーサルに対応しているかも送信。
2.ポート番号が変更されていたらNAPT機器が挟まっていると判断し,送信元にUDPを追加するように求める。

ESPには通常はないTCP/UDPのポート番号を与えてやることでNAPTが通常通りポート番号変更してもうまく通信を成り立たせられるようになる機能というところだろうか。
なお,家庭用ルータの設定によくあるIPsecパススルーはNAPTを素通りさせてやる設定のことらしい。
つまりIPsec発信元の方でなんとかするのがNATトラバーサルで,ルータの方でなんとかするのがIPsecパススルーなんだろう。
NATトラバーサルとIPsecパススルーの内容については以下のサイトで詳しく記載されている。
program.sagasite.info

ただし,IPsecはL3-VPNのため基本的には接続先と元でセグメントが異なる構成が基本となっている他,プロトコルはIPしか使えない。(広域なネットワークだと管理が煩雑にならずにすむというメリットも有るようが)
具体的にはWOLとかか。ただ,ルーティングを設定等することによりうまくやれる場合があるとのことだ。
イメージ的にはルータ同士を直接結びつけておいてるというところか。

L2TPv3

単語の意味合いを調べると以下の意味が出てくる。

L2TPv3 (Layer 2 Tunneling Protocol version 3) は、データリンク層(L2)でのVPN接続 (L2VPN)を実現するトンネリングプロトコルです。L2フレームをIPパケットとしてカプセル化することでルーター間でのL2フレーム転送を可能にし、複数の拠点で同一セグメントのネットワークを構築することができます。
出典:L2TPv3を用いたL2VPN

リモートアクセスに利用しているL2TPはL2TPv2というバージョンであり,L2TPv3はルータ間でのL2-VPNに対応した方式といえるようだ。
なお,バージョンと記載があるが最新バージョンが機能を内包しているというわけでもなく別プロトコル扱いという認識で良さそうだ。
ただ,L2TPには暗号化機能がないことから別に暗号化技術を仕入れる必要があるが,RTX810の場合はIPsecのトランスポートモードを併用して暗号化を実施するという。
先程までメインを張っていたIPsecがここでは女房役にまわるというわけだ。
L2TPv3にはL2TPv3 over IpとL2TPv3 over UDPの2方式があり,RTX810はL2TPv3 over UDPに対応しているとのこと。違いとしてはIPでパケットを作るか,UDPでパケットするかという違いのよう。L2かL3のどこでデータを纏めてくれるのかというところか。ちなみにIPsecの例のようにNAPTが介在する環境下ではポート番号をつけてやらないと通信が成立できないためNAPT環境下では実質L2TPv3 over UDPの一択になるようだ。
L2TPv3で相互接続されたトンネルの両端を家庭内LANとブリッジさせてやれば概念上は相互のLAN内のHUB同士をあたかも長いLANケーブルで結んだような動作が期待できるというのが一番のメリットだろう。正直家庭用程度の小規模なネットワークではこれが一番わかり易いと思う。
ただデメリットもあり,IPsecとの併用によるデータ処理工程の増加に伴う通信速度の低下が挙げられることや,同一セグメントでの通信が前提になるため,もし違うセグメントだった場合変更しなければならない手間が発生することか。

まとめ

IPsec,L2TPv3についてそれぞれまとめたが個人的には家庭内LANを手軽に結ぶ上ではL2TPv3/IPsecが妥当かと判断した。セグメントをわざわざ分けるほど複雑なネットワークではないしイメージがしやすいのが最たる理由だ。無論速度の低下は痛いところだが,なにより構成がわかりやすいというところが素人にはありがたい。