PacketiX VPN 4.0の新機能を試す(1)

はじめに

国産VPNソフトウエアのPacketiX VPN 4.0のRCがついにリリースされたので、試しに使ってみる。
今回のバージョンアップでは、iPhoneと接続出来るIPSec/L2TPやEtherIP以外にもNATトラバーサル(以下NAT-T)やダイナミックDNS(以下DDNS)などの機能が実装されているが、今回はNAT-Tについてちょっと書いてみようと思う。

NAT-Tとは

Wikipediaを見て貰えば早いのだが、要するにUDPホールパンチングである。
元々UDP高速化機能(PacketiXではWAN高速化機能と言っている)が実装されているため、その延長線上にUDPホールパンチングを実装したのではないのだろうか。
動作の仕組みとしては、既知の第三者サーバ(恐らくソフトイーサ社が設置している)に対してサーバ側からパケットを投げると、NATサーバにそのエントリが残る。この時NATサーバの実装によっては、宛先IPアドレスとポートをちゃんと紐付けしていないこともある(このポートへのアクセスはどのホストからも許可するようになる)ので、これを利用して擬似的にポートを解放させている。
もちろんこの状態ではクライアントは接続先ポートを知らないので接続出来ない。そのため、クライアント側は「このホストに対応するポートはあるのか?」という問い合わせを第三者サーバに送り、得たポート番号を元に接続を行う。
これによりサーバとクライアントで一対一で接続が出来るようになり、高速な通信が可能になる。

実際に使ってみる

実験環境としてポート開放をしていないIX2015を用意し、その下にPacketiX VPN Server 4.0 RC1を配置した。
また、DDNS設定を行い、ホスト名にはexample.softether.net(仮名)を設定した。
この状態でPacketiX VPN Clientに設定を行う。DDNS名をホスト名に入力すると、ちょっと間を置いて仮想ハブが列挙された。まさにこの間にUDPホールパンチングが行われていたのである
(なお、NAT-Tの設定はデフォルトで有効になっているため、設定する必要は無い。)
設定を済ませて接続を行うと、すぐに接続が確立し、いつも通りVPN通信が出来る。
この状態でスループットを付属の「通信スループット測定ツール」を用いて測定した。設定は32セッション、上下、60秒間とした。
結果から言うと、100Mbpsを越えるスループット*1をはたきだした。

おわりに

つらつらとPacketiX VPN 4.0に搭載されているNAT-Tについて書いてきたが、これを防ぐのは大変難しい。
NAT-Tを防ぐには第三者のサーバを突き止めアクセスコントロールを行う必要があるが、現在の所第三者サーバは非公開のためパケットキャプチャを行うしかなく、第三者のサーバIPが変わった場合にも対応しなければならない。
また、NAT-Tを防いだとしてもVPN Azureという機能も実装されているため、ファイアーウォールでのブロックをより困難にしている。
そのVPN Azureについては、また次の機会に書こうと思っている。

*1:全二重通信のため