VyOS 1.1.1とSoftEther VPN Serverで自宅VPN最速設定

VyOS 1.1.1とSoftEther VPN Serverで自宅VPN最速設定

あけましておめでとうございます。本年もよろしくお願いします。
のっけから濃い話題で2015を始めたいと思います。

個人用途でWindowsファイル共有(CIFS)をサクサク使いたい

以前VyOSでPPTPによるリモートアクセスVPNを構築したが、実際のところ操作が重く、もっさりで大変だった。
そこで他のプロトコルではどうかとアレコレ試してみたが却ってスループットは低下してしまった。堅牢性が上がっているので当然かもしれない。
しかし個人で考えれば、ハードなセキュリティよりもスループット、レスポンスに重点を置きたいと考えるのは当然だろう。
最終的に一番高速だったのはSoftEther VPN Serverだった。ただし、プロトコルはSoftEther、セッション数は32(最大)、UDP高速化機能という条件でのみ実現された。
今回はその方法を紹介したいと思う。

VPNのスループットを上げるには

VPNのスループットを特殊なネットワーク、機器とかに頼らず速くしたい。SoftEtherのプロトコルはマルチコネクションで接続することが可能で、最大32コネクション接続が可能。
一般的な光回線では1コネクション当たりのスループットが良くて200Mbps程度だと思う。しかし、マルチとなると一気に帯域が太くなる。32コネクションを1つのVPNトンネルとして形成するので転送自体はかなり上がる。

VPNでWindowsファイル共有(CIFS)を快適に使うには

別の視点から見てみる。私のVPNでの使用主目的がファイル共有である。これがVPNととても相性が悪く、驚くほどの遅さになってしまうこともある。原因はSMBプロトコルにあって、過剰な通信を繰り返す事からそうなるようだ。(例えば、1つのExcelファイルを開くのに4000回通信を行っているらしい)
WANを経由したら当然大きな遅延が発生する。帯域がどんなに太くても、Ackが返ってくるまではどうやっても待機にならざるを得ない。1つの通信を行う毎に遅延が大きく伸し掛かってくる。これがCIFSの速度が遅い理由だ。
この問題もSoftEtherで解決できる。UDP高速化機能を使用することで低遅延を実現できる。UDPでトンネリングを行うため、トンネル側の通信に3ハンドシェイクをしなくて済むからだ。これにより低遅延なVPNが実現可能となった。
SoftEtherの資料によればTCP接続に比べ、UDPでは倍のスループットが出るらしい。

じゃあSoftEther VPNでどう実現するの?

実は、UDP(WAN)高速化機能を実現するためには条件がある。
  • NAT外にSoftEtherを配置すること(ルーター内ではダメ)
    (使用するUDPポートがダイナミックに変わるため、ポートフォワードは無理)

そこで白羽の矢が立ったのがVyOSである。
VyOSにSoftEtherをインストールしてしまえば簡単にUDP高速化機能が使用できる。
その設定方法を次にまとめる。

実装の前に

まずはじめに私はLinuxをほとんど触っておらず、過去Unixをかじった程度の知識しかありません。なので間違っている可能性も高いです。
参考:hige blogさんの記事を参考にしました。感謝。

Hyper-Vの設定

Hyper-VサーバーにNICを3枚構成する。(PPPoE用、LAN用、SoftEtherBridge用)
SoftEther側はローカルブリッジで実現するため、1つ用意する。
ローカルブリッジ用のNICは、HYPER-Vの設定でMACアドレスのスプーフィングを有効にするをチェックしておく。

VyOSにSoftEtherをインストールする

1.VyOSの開発環境を設定する

set system package repository squeeze components 'main contrib non-free'
set system package repository squeeze distribution 'squeeze'
set system package repository squeeze url 'http://ftp.jp.debian.org/debian/' 
sudo aptitude update
sudo aptitude install build-essential
>Accept this solution? [Y/n/q/?] n
>Accept this solution? [Y/n/q/?] y
>Do you want to continue? [Y/n/?] y

2.SoftEtherのダウンロードURLを確認する

ダウンロードセンターからlinuxの64bit版を選択し、リンクのURLを取得しておく。

3.VyOSにインストールする

wget http://jp.softether-download.com/files/softether/v4.12-9514-beta-2014.11.17-tree/Linux/SoftEther_VPN_Server/64bit_-_Intel_x64_or_AMD64/softether-vpnserver-v4.12-9514-beta-2014.11.17-linux-x64-64bit.tar.gz ※バージョンによってURLが変わります。
tar xzvf softether-vpnserver-v4.12-9514-beta-2014.11.17-linux-x64-64bit.tar.gz
cd vpnserver/
make
全て1を選択
cd ..
sudo mv vpnserver /usr/local/
sudo chown -R root:staff /usr/local/vpnserver/
sudo chmod 600 /usr/local/vpnserver/*
sudo chmod 700 /usr/local/vpnserver/vpncmd
sudo chmod 700 /usr/local/vpnserver/vpnserver

4.スタートアップスクリプトを配置

hige blogさんのところにスクリプトがあるので省略。
sudo update-rc.d /etc/init.d/vpnserver default

5.アクセス制限の設定

/usr/local/vpnserver/adminip.txtを作成し、管理コンソールがアクセス可能なIPリストを記述する。
例)
192.168.200.10
127.0.0.1

6.サービス開始

sudo /etc/init.d/vpnserver start

 7.Windows側でVPNサーバー管理ツールを起動

以下、管理ツールで設定可能

検証結果

PPTPが60Mbps程度のスループットだったのに対して、SoftEtherでは80Mbps程度に伸びた。また、マルチコネクションのお陰でエクスプローラーのファイル表示がサクサクになった。
ただし、Windows 8以降ではSMBMultiChannelが動き出してしまってVPN内をマルチチャネルで転送してしまい、結果的にスループットが落ちるという情けない状況もあったので注意が必要。
知人の環境でも試したのだが、プロバイダの能力とOSの差によりマチマチだった。参考程度に留めておいて欲しい。

コメント

このブログの人気の投稿

カスタムメイド3D2用プラグインを作りました

プロバイダをオープンサーキットからIIJへ変更