Softether VPN Server: マルチプロトコル対応の クロスプラットフォームなオープンソース VPN サーバ
Total Page:16
File Type:pdf, Size:1020Kb
3 特集●ソフトウェア論文 SoftEther VPN Server: マルチプロトコル対応の クロスプラットフォームなオープンソース VPN サーバ 登 大遊 新城 靖 佐藤 聡 SoftEther VPN Server はマルチプロトコル対応のクロスプラットフォームなオープンソース VPN サーバソフト ウェアであり,既存の VPN サーバプログラムにない 2 つの特徴がある.1 つ目は,単一 VPN サーバインスタンス で複数の VPN プロトコルをサポートしている点にある.管理者は,複数の VPN プロトコルによる多種類の VPN デバイスからのリモートアクセスおよび拠点間接続を受付ける VPN サーバを容易に管理することができる.そのた めに,SoftEther VPN Server 内に L2 アダプタと呼ばれるモジュールを実装し,レイヤ 2 VPN プロトコルとレイ ヤ 3 VPN プロトコルとの間の通信を,共通のバスである仮想 L2 スイッチを経由させ,シームレスに実現にした. 2 つ目は,ユーザ管理やネットワークの機能を仮想化するマルチテナント機能である.これは,仮想ホスティング サービスのために必須である.本プログラムは複数の OS 間の移植性を有する.本プログラムは 2013 年 3 月から 2014 年 9 月までの間に,世界中で 242,000 回インストールされた実績を有する.また,異なる VPN プロトコル間 での通信速度実験では,従来の VPN プロトコルのネイティブな VPN サーバプログラムを組み合わせて用いた場合 と比較して高速な結果が得られた. SoftEther VPN Server is an open-source cross-platform multi-protocol VPN server which has two advan- tages over existing VPN servers. First, it supports multiple VPN protocols in a single VPN server instance. This makes it easy for an administrator to configure and manage a VPN server which supports remote access and site-to-site connection from a variety of VPN client devices. To realize that, SoftEther VPN Server includes a module called an L2 adapter to exchange messages between layer-3 VPN protocols and layer-2 VPN protocols seamlessly via common virtual L2 switches. The second advantage is that it can virtualize user management and networking, which is an essential function in multi-tenant virtual hosting. SoftEther VPN Server is portable among several operating systems. SoftEther VPN Server gained a total of 242,000 installations around the world from March 2013 to September 2014. The experimental result indicates that SoftEther VPN Server is faster than combinations of native VPN servers when exchanging messages between different VPN protocols. 社内 LAN や自宅のネットワークに接続することがで 1 はじめに きる.各デバイスには,予め組み込みの VPN クライ インターネット上では,パーソナルコンピュータ アントプログラムが搭載されている.これらの組み (PC) やスマートフォンを含めた多くの種類のデバイ 込み VPN クライアントプログラムを使用すれば,対 スが使用されている.仮想プライベートネットワー 応している VPN プロトコルに追加ソフトウェアのイ ク (VPN) を用いることにより,それらのデバイスを ンストールなしで接続でき,便利である.このよう な組み込み VPN クライアントプログラムで対応し SoftEther VPN Server: An Open-source Cross- ている VPN プロトコルを,ネイティブ VPN プロ platform Multi-protocol VPN Server. トコルと呼ぶ.例えば,Layer 2 Tunneling Protocol Daiyuu Nobori, Yasushi Shinjo and Akira Sato, 筑波大 学大学院システム情報工学研究科コンピュータサイエンス (L2TP) [27] over IPsec および Point-to-Point Tun- 専攻 , Department of Computer Science, University neling Protocol (PPTP) [8] 等は iOS,Mac OS X お of Tsukuba. よび におけるネイティブ プロトコルで コンピュータソフトウェア, Vol.32, No.4 (2015), pp.3{30. Android VPN [ソフトウェア論文] 2014 年 10 月 29 日受付. ある.これらの VPN プロトコルに加え,Windows は 4 コンピュータソフトウェア Secure Socket Tunneling Protocol (SSTP) [21] をネ 計と実装を行った.SoftEther VPN Server は,単一 イティブ VPN プロトコルとしてサポートしている. のインスタンスで多数の VPN プロトコルをサポー CentOS Linux においては,OpenVPN [26] Layer 3 トする.サポートされる VPN プロトコルは,L2TP (L3) をサポートしている.これらのリモートアクセ over IPsec,Ether IP over IPsec,OpenVPN L3 お ス用の VPN プロトコルに加え,複数の拠点間を拠点 よび L2,L2TPv3 over IPsec,EtherIP over IPsec, 間接続するための VPN プロトコルとして OpenVPN SSTP および SoftEther VPN Protocol (SEVP: Eth- Layer 2 (L2),Layer 2 Tunneling Protocol version ernet over HTTPS を実現するプロトコル) である. 3 (L2TPv3) [18] および EtherIP [9] がある.Open- これらの複数の VPN プロトコルに対応することによ VPN L2 は CentOS に,L2TPv3 は Cisco IOS に, り,広範囲に渡るリモートアクセス用途の VPN クラ EtherIP は NEC IX ルータにおいてネイティブ VPN イアント (PC やスマートフォンなど) や拠点間接続用 プロトコルとしてサポートされている.同一の目的で 途の VPN デバイス (ルータなど) が単一の SoftEther 利用できる複数の VPN プロトコルは,環境や用途に VPN Server のインスタンスに接続できるようにな よって使い分けられることがある.例えば,UDP 通 る.SoftEther VPN Server を使用することにより, 信が可能な環境では高速な L2TP over IPsec (UDP) システム管理者は単一のインスタンスを稼働させ管理 を使用し,UDP 通信ができない環境では速度が低 するだけで,複数の VPN プロトコルをサポートし運 下するものの TCP により通信ができる SSTP over 用することができる.管理者は,サポートする各々の TCP を使用することがある. VPN プロトコルを意識することなく,ユーザ管理, 社内 LAN において複数の VPN プロトコルをサ VPN クライアントへの IP アドレスの割り当て,ア ポートしたい場合,システム管理者は問題に直面する. クセス制御およびログの保存などの設定・運用を行う 単一の VPN サーバソフトウェアでは一部の VPN プ ことができる.さらに,SoftEther VPN Server は, ロトコルしかサポートしていない場合,サポートし サービスプロバイダが顧客に VPN サービスを提供す たいすべての VPN プロトコルのために複数の VPN るために利用可能な,単一の VPN サーバインスタン サーバソフトウェアをインストールし同時に稼働させ スにおける複数の顧客向けの仮想 VPN サーバ (テナ なければならない.複数の VPN サーバを同時に設定 ント) のホスティング機能を提供する. し運用するためには,たとえばアクセス制御リスト 本論文では,SoftEther VPN Server の設計,実装お (ACL) を設定する場合はそれぞれの VPN サーバに よび評価について述べる.SoftEther VPN Server の 対して設定する必要がある.これは管理コストの増大 最大の特徴は,VPN サーバ内において,IPv4,IPv6 につながる. および Internetwork Packet Exchange (IPX) 等の任 マルチテナント仮想ホスティングサービスにおい 意のレイヤ 3 パケットを含む MAC フレームを交換 て,メールサービスや Web サービスに加え,新たに することができるソフトウェアベースのレイヤ 2 ス VPN サービスを提供しようとする場合,サービスプ イッチを実装している点にある.しかしながら,単純 ロバイダは問題に直面する.多くのメールサーバや なレイヤ 2 スイッチ機能だけでは,レイヤ 3 である Web サーバには,単一のサーバプログラムのインス IP パケットを直接取扱うことができない.複数のレ タンスで,複数の顧客のための互いに分離された仮 イヤ 3 VPN プロトコルをサポートするため,我々は 想ホストを作り出すための仮想ホスティング機能が L2 アダプタと呼ばれるアダプタモジュールを用いて, 搭載されている.しかしながら,同様の仮想ホスティ レイヤ 3 パケットをレイヤ 2 フレームに変換するこ ング機能を搭載した広く使われている VPN サーバプ とで,この問題を解決した.L2 アダプタは Address ログラムは存在しない. Resolution Protocol (ARP) および Dynamic Host これらの問題を解決するため,我々は SoftEther Configuration Protocol (DHCP) パケットを必要に VPN Server と呼ばれる VPN サーバプログラムの設 応じて受発信することにより,レイヤ 3 パケットとレ Vol. 32 No. 4 Nov. 2015 5 イヤ 2 フレームとの間の交換を実現する. 2. 1 多数の VPN プロトコル SoftEther VPN Server は OS 間の移植性を有する. 表 1 は広く利用されている VPN プロトコルを示 現在対応している OS は,Windows,Linux,Mac したものである.これらの VPN プロトコルは,レ OS X,FreeBSD および Solaris である.我々は Soft- イヤ 3 およびレイヤ 2 に分類することができる.レ Ether VPN Server のバイナリパッケージは 2013 年 イヤ 3 VPN プロトコルは IP データグラムの交換を y 3 月に公開 1し,2014 年 1 月にソースコードを GNU 実現し,レイヤ 2 VPN プロトコルはローカルエリア General Public License (GPL) Version 2 として公 ネットワーク (LAN) で使用されている Ethernet の y 開 2した.SoftEther VPN Server は,2014 年 9 月 フレームの交換を実現する. までの間に,世界中で 242,000 回インストールされた レイヤ 2 VPN プロトコルには,レイヤ 3 VPN プ 実績を有する.SoftEther VPN Server は,商用ソフ ロトコルにはないいくつかの利点がある.まず,PC トウェアである PacketiX VPN Server 3.0 の後継版 をレイヤ 2 VPN プロトコルを用いてネットワークに である.PacketiX VPN Server の新たなバージョン VPN 接続すれば,IP プロトコルだけではなく,非 IP 4.0 は,SoftEther VPN Server で実装したマルチプ プロトコル,例えば Microsoft の NetBIOS Extended ロトコルのサポート機能のコードが搭載されている. User Interface (NetBEUI) や Novell の Internetwork PacketiX VPN Server は 5,500 社に導入されている. Packet Exchange (IPX) / Sequenced Packet Ex- 本論文の構成は次のとおりである.第 2 章では,複 change (SPX) および Apple Talk 等を使用すること 数の VPN プロトコルおよびマルチテナント機能を提 ができる.次に,レイヤ 3 VPN プロトコルを用いる 供する上での問題について述べる.第 3 章では,Soft- 場合に必要なルーティングやプロキシ ARP 等の複雑 Ether VPN Server の設計について,第 4 章では実装 な仕組みを使用しなくても,リモートアクセスおよび について述べる.第 5 章では SoftEther VPN Server 拠点間接続を容易に実現できる.拠点間接続におい の性能評価について述べる.第 6 章では SoftEther ては,両方の拠点のコンピュータを同一の IP ネット VPN Server,商用版 PacketiX VPN Server および ワークに所属させることができ,管理が容易になる. これらの元となった SoftEther 1.0 の制作および普及 最後に,レイヤ 2 VPN においては,マルチキャスト の努力の過程を述べる.第 7 章では関連研究につい およびブロードキャストベースのプロトコルをその て述べる.第 8 章は,本論文のまとめである. まま利用することができる.例えば,Multicast DNS (mDNS) [2] プロトコルを用いてマルチキャスト対応 2 既存の VPN サーバソフトウェアの問題点 のサービスを検索したり,NetBIOS over TCP/IP プ この章では,まず広く使われている多数の VPN ロトコルや Link-Local Multicast Name Resolution プロトコルおよび各プロトコルの特徴を述べる.次 (LLMNR) プロトコルを用いることで遠隔拠点のコ に,これらの複数の VPN プロトコルを既存の VPN ンピュータの名前解決を行ったり,コンピュータを列 サーバソフトウェアで運用する場合の問題点を述べ 挙したりすることができる. る.最後に,既存の VPN サーバソフトウェアで複数 表 1 の VPN プロトコルの多くは,リモートアクセ の VPN 顧客をマルチテナント仮想ホスティングを実 スをサポートしている.リモートアクセスには,ユー 現しようとする際の問題と,マルチテナント仮想ホス ザ認証および IP アドレスの割り当てが必要である. ティングのために VPN サーバソフトウェアに要求さ 表 1 の VPN プロトコルのうち,SSTP,OpenVPN れる機能について述べる. (L3 および L2) および SEVP は,PC がリモートの VPN サーバに HTTP 対応のプロキシを経由して接続 することを許容する.このうち,SSTP および SEVP y1 http://www.softether.org/ は正規の SSL プロトコルを TCP コネクション上で y2 https://github.com/SoftEtherVPN/SoftEtherVPN/ 使用するため,PC はステートフルファイアウォール 6 コンピュータソフトウェア 表 1 広く利用されている VPN プロトコルの一覧 レイヤ 3(IP パケット) を伝送する VPN プロトコル レイヤ 2(MAC フレーム) を伝送する VPN プロトコル 機能 IPsec トン L2TP/ PPTP SSTP OpenVPN OpenVPN L2TPv3/ EtherIP/ SEVP ネルモード IPsec L3 L2 IPsec IPsec リモートアクセ X X X X X ス 暗号化 IPsec IPsec MPPE SSL SSL SSL IPsec IPsec SSL 下位レイヤ ESP/UDP ESP/UDP GRE HTTPS TCP, TCP, ESP/UDP ESP/UDP HTTPS /TCP UDP UDP /TCP HTTP プロキシ X X X X を通過 ステートフルフ X X ァイアウォールを 通過 Windows 上 の サードパー ネイティブ ネイティブ ネイティブ サードパー サードパー サードパー クライアント ティ ティ ティ ティ Mac OS X 上の ネイティブ ネイティブ ネイティブ サードパー サードパー サードパー サードパー クライアント ティ ティ ティ ティ iOS 上のクライ ネイティブ ネイティブ ネイティブ サードパー サードパー アント ティ ティ Android 上のク ネイティブ ネイティブ ネイティブ サードパー サードパー ライアント ティ ティ Linux 上のクラ 実装あり 実装あり 実装あり 実装あり 実装あり 実装あり 実装あり イアント FreeBSD 上のク 実装あり 実装あり 実装あり 実装あり 実装あり 実装あり ライアント 「SEVP」=SoftEther VPN Protocol.「MPPE」=Microsoft Point-to-Point Encryption.「ESP」=Encapsulating Security Payload.「GRE」 =Generic Routing Encapsulation.「HTTPS」=HTTP over SSL.「リモートアクセス」とは,VPN クライアントへの IP アドレス割り当て機能を有す る VPN 接続が可能であることを意味する.「ステートフルファイアウォール」とは,SSL の通信のステートを検査し,非 SSL プロトコルを遮断する機能を有する ファイアウォールを意味する.「ネイティブ」とは,OS ベンダが OS に組み込んでいる VPN クライアントによりサポートされていることを意味する.「サードパー ティ」とは,サードパーティの提供する VPN クライアントのインストールにより利用可能となることを意味する.「実装あり」とは,1 つ以上のオープンソース実装 が利用可能であることを意味する. を経由して VPN サーバに接続できる.ステートフル る.複数の VPN プロトコルをサポートする必要があ ファイアウォールは Deep Packet Inspection (DPI) る例として,例えば,iOS のデバイスからの VPN 接 機能により,TCP ストリームが真正な SSL 通信であ 続を受付けるために L2TP をサポートし,PC から るかどうか見分け,SSL 通信に偽装した非 SSL 通信 の VPN 接続において mDNS をサポートする目的で をブロックすることができる. レイヤ 2 通信のために OpenVPN L2 をサポートす 表 1 に列挙されているように,各クライアントデ る必要がある場合等が挙げられる. バイスは特定のプロトコルをネイティブ VPN プロト 複数の VPN プロトコルのサポートは,ホスティン コルとしてサポートしている.ネイティブ VPN プロ グサービスにおいて重要である.サービスプロバイ トコルとは,OS に組み込まれているドライバによっ ダは,顧客の要求を満たすために,できるだけ多くの てサポートされている VPN プロトコルのことであ VPN プロトコルをサポートする必要がある. る.例えば,iOS は IPsec トンネルモード,L2TP お よび PPTP の 3 つをネイティブ VPN プロトコルと 2. 2 既存の VPN サーバソフトウェアで複数の して有している.それぞれの OS がサポートしている VPN プロトコルをサポートする際の問題 VPN プロトコルは互いに異なる.例えば,SSTP は 必要な複数の VPN プロトコルの組み合わせによっ Windows においてのみネイティブ VPN プロトコル ては,単一の VPN サーバによってこれら複数の VPN である. プロトコルをサポートすることができることがある. 社内 LAN 管理者は,サポートする必要があるデバ 例えば,L2TP,PPTP および SSTP をサポートし イスや実現したい機能等の要求に基づき,1 個または たい場合は,Microsoft Windows に搭載されている 複数の VPN プロトコルをサポートすることを選択す Routing and Remote Access (RRAS) を用いてこれ Vol. 32 No. 4 Nov. 2015 7 らの VPN プロトコルをサポートできる.しかしな きる. がら,いずれの VPN サーバも,必要とする複数の VPN プロトコルすべてをサポートしていない場合は, 2. 3 マルチテナント仮想ホスティングサービスの