SoftEtherを使用してマルチプロトコルVPNサーバーを設定する方法
紹介
この記事では、SoftEtherパッケージを使用してマルチプロトコルVPNサーバーをインストールおよび構成する方法について説明します。私たちは、Linux上でOpenVPNおよびL2TP/IPSec、SSTP VPNサーバーを有効にし、構成します。
ソフトイーサとは何ですか?
SoftEther VPNは、世界で最も強力で使いやすいマルチプロトコルVPNソフトウェアの一つで、日本の筑波大学の良い方々によって開発されました。Windows、Linux、Mac、FreeBSD、Solarisで動作し、フリーウェアでオープンソースです。SoftEtherは、個人利用または商業利用のいずれにおいても無料で使用できます。
ステップ1:仮想サーバーを作成する
まず、DigitalOceanのDropletを作成する必要があります。SoftEtherのウェブサイトで述べられているように、SoftEtherはカーネルv2.4以上のほとんどのLinuxディストリビューションで動作しますが、次のいずれかのディストリビューションを選択することをお勧めします:CentOS、Fedora、またはRed Hat Enterprise Linux。
個人的には、Ubuntu、CentOS、Fedoraで、32ビット版と64ビット版の両方で試しましたが、完璧に動作しました。
ステップ2:サーバーソフトウェアを更新する
以下のコマンドを使用して、サーバーのソフトウェアパッケージを最新のバージョンに更新およびアップグレードしてください:
Debian/Ubuntu:
apt-get update && apt-get upgrade
CentOS/Fedora:
yum upgrade
ステップ3:SoftEtherをダウンロードする
最新のSoftEtherサーバーパッケージをLinux用に彼らのウェブサイトからダウンロードできます:
SoftEtherをダウンロード
残念ながら、現在のところ、パッケージ管理ツールを通じて最新バージョンを取得する方法はありません(または単一のURLを使用することもできません)。したがって、パッケージをダウンロードするためにデスクトップブラウザを使用して彼らのウェブサイトを閲覧する必要があります。これを処理する方法はいくつかあります。まず、自分のコンピュータで彼らのウェブサイトを閲覧し、サーバーの構成(OS、x86/x64など)に応じて適切なパッケージへのリンクを見つけてから、wgetを使用してパッケージをサーバーにダウンロードします。あるいは、lynxのような端末ベースのウェブブラウザを使用してSoftEtherのウェブサイトを閲覧し、正しいパッケージをダウンロードすることもできます。
lynxを使用してこれを行う方法は次のとおりです:
まず、サーバーにlynxをインストールします:
Debian/Ubuntu:
apt-get install lynx -y
CentOS/Fedora:
yum install lynx -y
今、以下のコマンドを使用してSoftEtherダウンロードウェブページを閲覧してください:
lynx http://www.softether-download.com/files/softether/
このページには、利用可能なすべてのバージョンのSoftEtherが含まれています。希望するバージョンを選択してください(このチュートリアルではv2.00-9387-rtm-2013.09.16を使用します)そしてEnterを押してリンクに移動します。次にLinuxを選択し、次のページでSoftEther VPN Serverを選択します。サーバーのハードウェアアーキテクチャに応じて、パッケージを選択します;32bit - Intel x86および64bit - Intel x64またはAMD64はDigitalOceanの32bitまたは64bitのドロップレットで動作します。最後に、次のページからtarファイルをダウンロードするためにリンク上で「D」キーを押し、Lynxからの確認メッセージで「ディスクに保存」を選択してください。ファイルが保存されたら、「Q」を押してLynxを終了し、インストールを進めることができます。
ステップ4:SoftEtherをインストールして設定する
今、私たちはSoftEtherダウンロードページから受け取ったパッケージを抽出し、コンパイルする必要があります。このチュートリアルで使用されるパッケージはsoftether-vpnserver-v2.00-9387-rtm-2013.09.16-linux-x86-32bit.tar.gzという名前なので、以下のコマンドを使用して抽出します:
tar xzvf softether-vpnserver-v2.00-9387-rtm-2013.09.16-linux-x86-32bit.tar.gz
抽出後、作業フォルダにvpnserverという名前のディレクトリが作成されます。SoftEtherをコンパイルするには、サーバーに次のツールとパッケージをインストールする必要があります:
作成する、gccbinutils (gcc)、libc (glibc)、zlib、openssl、readline、および ncurses
これらがインストールされていることを確認してください。以下のコマンドを使用して、SoftEtherをビルドするために必要なすべてのパッケージをインストールできます:
Debian/Ubuntu:
apt-get install build-essential -y
CentOS/Fedora:
yum groupinstall "Development Tools"
注意: Fedoraでは、上記のコマンドを使用してgccパッケージがインストールされないことがあるため、yum install gccを使用して手動でインストールする必要があります。
必要なすべてのパッケージがインストールされたので、次のコマンドを使用してSoftEtherをコンパイルできます:
最初に「cd」をvpnserverディレクトリに移動します:
cd vpnserver
そして、今「make」を実行して、SoftEtherを実行可能ファイルにコンパイルします:
make
SoftEtherは、ライセンス契約を読んで同意するように求めます。契約を読むために1を選択し、再度確認として読み終えたことを示し、最後にライセンス契約に同意します。
SoftEtherは現在コンパイルされ、実行可能ファイル(vpnserverとvpncmd)になっています。プロセスが失敗した場合は、必要なパッケージがすべてインストールされているか確認してください。
SoftEtherがコンパイルされたので、vpnserverディレクトリを別の場所に移動できます。ここではusr/localに移動します。
cd ..
mv vpnserver /usr/local
cd /usr/local/vpnserver/
そして、それらを保護するためにファイルの権限を変更します:
chmod 600 *
chmod 700 vpnserver
chmod 700 vpncmd
SoftEtherを起動時にサービスとして開始する場合は、/etc/init.d ディレクトリに vpnserver という名前のファイルを作成し、以下のように変更してください:
最初にviまたはnanoを使用してファイルを作成し、開きます:
vi /etc/init.d/vpnserver
そして次の内容をファイルに貼り付けてください。
#!/bin/sh
chkconfig: 2345 99 01
description: SoftEther VPN Server
DAEMON=/usr/local/vpnserver/vpnserver
LOCK=/var/lock/subsys/vpnserver
test -x $DAEMON || exit 0
case "$1" in
start)
$DAEMON start
touch $LOCK
;;
stop)
$DAEMON stop
rm $LOCK
;;
restart)
$DAEMON stop
sleep 3
$DAEMON start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
最後に、esc を押して :wq と入力することでファイルを保存して閉じてください。
存在しない場合、/var/lock/subsys にディレクトリを作成する必要があります。
mkdir /var/lock/subsys
次に、スタートアップスクリプトの権限を変更し、以下のコマンドを使用してvpnserverを開始します:
chmod 755 /etc/init.d/vpnserver && /etc/init.d/vpnserver start
以下のコマンドを使用して、スタートアップ時に実行されるようにしてください:
Debian/Ubuntu:
update-rc.d vpnserver defaults
CentOS/Fedora:
chkconfig --add vpnserver
SoftEther VPNサーバーは現在インストールされ、起動時に実行されるように設定されています。最後に、VPNサーバーが正常に動作しているか確認する必要があります:
cd /usr/local/vpnserver
./vpncmd
今3を押してVPNツールの使用を選択し、次にタイプしてください:
check
すべてのチェックが通過すれば、サーバーはSoftEther VPNサーバーとして準備が整ったことになりますので、次のステップに進むことができます。“exit”と入力してVPNツールを終了してください。
SoftEther VPNサーバーを構成する方法は2つあります。Windowsベースのサーバーマネージャを使用して、リモートから任意の数のSoftEther VPNサーバーを管理および構成するか、組み込みのvpncmdツールを使用してサーバーを構成することができます。
Windowsユーザーであれば、彼らのウェブサイトからSoftEther Server Managerをダウンロードし、提供されているGUIを使用して設定を行うのが望ましい方法です。
ここではvpncmdを使用してVPNサーバーを構成します。
ステップ5: 管理者パスワードを変更する
SoftEther VPNサーバーがインストールされたので、SoftEtherで使用するために管理者パスワードを設定する必要があります。これは、SoftEtherのコマンドラインベースの管理ツールであるvpncmdを使用して行うことができます:
./vpncmd
「VPNサーバーまたはVPNブリッジの管理」を選択するには1を押し、その後、何も入力せずにEnterを押してlocalhostサーバーに接続し、再度何も入力せずにEnterを押してサーバー管理者モードでサーバーに接続します。
次に、管理者のパスワードを変更するために以下のコマンドを使用してください:
ServerPasswordSet
ステップ6:仮想ハブを作成する
SoftEtherを使用するには、まず仮想ハブを作成する必要があります。ここでは、例としてVPNという名前のハブを作成します。そのためには、vpncmdツールに以下のコマンドを入力してください:
HubCreate VPN
次に、ハブの管理者パスワードを入力するように求められます。このパスワードは、サーバー管理者モードでログインしていない時に、その特定のハブを管理したい場合に使用されます。
今、このコマンドを使用して作成したバーチャルハブを選択してください:
Hub VPN
ステップ7:SecureNATを有効にする
ハブをサーバーネットワークに接続する方法は2つあります:ローカルブリッジ接続を使用するか、SecureNAT機能を使用することです。
それぞれを別々に使うことはできますが、これら二つを一緒に使うと問題が発生します。
ここではSecureNATを使用しています。これは設定が非常に簡単で、ほとんどの状況でうまく機能します。Local Bridgeを使用することもできますが、その場合はDHCPサーバーもインストールして設定する必要があります。
SecureNATは、仮想NATとDHCPサーバー機能の組み合わせです。以下のコマンドを使用してSecureNATを有効にできます。
SecureNatEnable
ステップ8:ユーザーの作成と管理
これから私たちは、VPNを使用するためのバーチャルハブのユーザーを作成する必要があります。コマンドUserCreateを使用してバーチャルハブのユーザーを作成し、UserListで現在のユーザーの一覧を表示できます。ユーザーはグループに追加でき、異なるタイプの認証モード(パスワード、証明書、RADIUS、NTLMなどを含む)を持つこともできます。
UserCreate コマンドを使用して、「test」と名付けられたユーザーを作成します。
UserCreate test
デフォルトの認証タイプはパスワードですが、以下のコマンドを使用して別のタイプに変更できます。
UserNTLMSet NTドメイン認証用
UserPasswordSet はパスワード認証用です
UserAnonymousSet は匿名認証のためのものです
UserRadiusSet は RADIUS 認証用です
個別証明書認証のためのUserCertSet
署名付き証明書認証用のUserSignedSet
このチュートリアルでは、ユーザー認証モードとしてパスワードを使用するため、ユーザーtestのパスワードを設定するには、このコマンドを使用します:
UserPasswordSet test
ステップ9: L2TP/IPSecの設定
L2TP/IPsec VPNサーバーを有効にするには、以下のコマンドを使用できます:
IPsecEnable
このコマンドを入力した後、L2TPサーバー機能を設定するよう求められます:
IPsecサーバー機能におけるL2TPの有効化: はいを選択して、プレシェアードキー暗号化を使用したIPSec上でのL2TP VPNを有効にします。これで、iPhone、Android、Windows、およびMac OS Xデバイスを使用してこのサーバーにVPN接続をすることができます。
生のL2TPサーバー機能を有効にする: これは、IPSec暗号化なしでクライアントのためにL2TP VPNを有効にします。
EtherIP/L2TPv3 over IPsecサーバー機能を有効にする: EtherIP/L2TPv3 over IPsecに対応したルーターは、この機能を有効にすることでこのサーバーに接続できます。
IPsec用の事前共有鍵: L2TP VPNで使用する事前共有鍵を入力してください。
ユーザー名を省略した場合のデフォルト仮想 HUB: ユーザーは接続する仮想 HUB を指定する必要があります。接続時に Username@TargetHubName をユーザー名として使用します。このオプションは、ユーザーがこの情報を提供しない場合に使用される仮想 HUB を指定します。私たちのケースでは VPN を入力してください。
ステップ10:SSTP/OpenVPNの設定
SoftEtherはMicrosoft SSTP VPNサーバーおよびOpenVPNサーバーの機能をクローンできます。しかし、これらを有効にする前に、サーバー用の自己署名SSL証明書を生成する必要があります。opensslまたはSoftEther独自のコマンドを使用してSSL証明書を生成できます。
ここでは、SoftEtherのServerCertRegenerateコマンドを使用して、サーバー用の自己署名SSL証明書を生成して登録します。コマンドに渡される引数はCN(コモンネーム)であり、ホスト名(FQDN)またはIPアドレスに設定する必要があります:
ServerCertRegenerate [CN]
注1: SoftEtherには、サーバーにユニークで永続的なホスト名を割り当てることができる動的DNS機能も組み込まれています。この機能によって割り当てられたホスト名を使用して、SSL証明書を作成し、サーバーに接続することができます。
注意 2: すでにSSL証明書をお持ちの場合、またはopensslを使用して作成した場合は、ServerCertSetコマンドを使用してサーバーに追加できます。
証明書を作成したので、クライアントに証明書をダウンロードして信頼されたものとして追加する必要があります。以下のコマンドを使用して、サーバー証明書をcert.cerという名前のファイルに保存します:
ServerCertGet ~/cert.cer
今、FileZillaまたは他のSFTPクライアントを使ってクライアントに証明書をダウンロードできます。
Windowsで証明書を信頼できるようにするには、信頼されたルート認証局ストアにインストールする必要があります。こちらの記事ではその方法を説明しています(証明書チェーンをインストールする部分をお読みください):
証明書チェーンのインストール
サーバーのSSL証明書を作成および登録したので、このコマンドを使用してSSTP機能を有効にできます:
SstpEnable yes
そしてOpenVPNを有効にするには:
OpenVpnEnable yes /PORTS:1194
注意: OpenVPNのデフォルトポートは1194ですが、上記のコマンドの /PORTS:1194 部分を希望するポートまたはポートに変更することで、任意のポートに変更できます(はい、複数のポートをサポートしています)。
OpenVPNを有効にした後、OpenVPNクライアント用のサンプル設定ファイルをダウンロードできます。ここで、サンプルのOpenVPN設定ファイルを作成し、my_openvpn_config.zipとして保存します:
OpenVpnMakeConfig ~/my_openvpn_config.zip
その後、FileZillaなどのSFTPクライアントを使用してダウンロードし、それをOpenVPNクライアントに適用できます。
SoftEtherは、WindowsとLinuxの両方に専用のVPNクライアントソフトウェアを提供しています。これは、非常に強力なHTTPS上のイーサネットまたはSSL-VPNと呼ばれるSoftEther特有のプロトコルをサポートしています。VPNトンネルを確立するためにHTTPSプロトコルとポート443を使用し、このポートは広く知られているため、ほとんどのファイアウォール、プロキシサーバー、NATがパケットを通過させることができます。SSL-VPNプロトコルを使用するためには、彼らのウェブサイトから取得できるSoftEther VPNクライアントをダウンロードしてインストールする必要があります。
ステップ11: SoftEther VPNサーバーへの接続(クライアント設定)
SoftEtherはマルチプロトコルVPNサーバーであるため、クライアントとして接続する方法は多岐にわたります。L2TP、SSTP、OpenVPN、およびSoftEther専用のプロトコルであるSSL-VPNを含め、サーバーへの安全な接続を確立するために任意のプロトコルを選択できます。
クライアントのオペレーティングシステムや設定によって、挙げられたプロトコルのいずれかを使用することができます。ただし、私はSSL-VPNを使用することを好みます。なぜなら、それは安全で高速であるだけでなく、前述のように一般的でよく知られたポート(443またはhttpsポート)を使用するため、ほとんどのファイアウォールを突き抜けることができるからです。
ここでは、SoftEtherの独自のVPNクライアントソフトウェアを使用してサーバーに接続します:
まず、SoftEtherのウェブサイトからLinux用のSoftEther VPNクライアントをダウンロードします。lynxブラウザを使用してダウンロードできます。このコマンドを入力してSoftEtherのダウンロードページを開きます:
lynx http://www.softether-download.com/files/softether/
サーバーソフトウェアをダウンロードしたときと同様に、最新バージョンを選択してください(ここではv2.00-9387-rtm-2013.09.16を使用しました)。次にLinuxを選択し、次のページでSoftEther VPN Clientを選択します。次に、システムのハードウェアアーキテクチャに応じてパッケージを選択します(32bit - Intel x86と64bit - Intel x64またはAMD64は、DigitalOceanの32bitまたは64bitドロップレットで動作します)。最後に、次のページからリンクのDキーを押してtarファイルをダウンロードし、Lynxからの問い合わせがあったらディスクに保存を選択します。ファイルが保存されたら、Lynxを終了するために「Q」を押します。
ダウンロードしたばかりのtarファイルをこのコマンドを使って展開してください:
tar xzvf softether-vpnclient-v2.00-9387-rtm-2013.09.16-linux-x86-32bit.tar.gz
注意: softether-vpnclient-v2.00-9387-rtm-2013.09.16-linux-x86-32bit.tar.gz をダウンロードしたファイルの名前に変更してください。
サーバーと同様に、これらのコマンドを実行してvpnclientを実行可能ファイルにコンパイルする必要があります(クライアントにステップ4で言及された開発ツールがインストールされていることを確認してください):
cd vpnclient
make
ライセンス契約に同意するために1を3回入力した後、ファイルを別のディレクトリに移動し、権限を変更してください。
cd ..
mv vpnclient /usr/local
cd /usr/local/vpnclient/
chmod 600 *
chmod 700 vpnclient
chmod 700 vpncmd
次に、このコマンドを使用してVPNクライアントサービスを開始します:
./vpnclient start
クライアントを設定するために、vpncmdを使用します。vpnclient ディレクトリにいる間に、このコマンドを入力して vpncmd ツールを実行してください:
./vpncmd
2を選択してVPNクライアントの管理モードに入り、Enterキーを押して、インストールしたばかりのローカルVPNクライアントに接続し、管理してください。
SoftEtherは仮想アダプタを使用してVPNサーバーへの接続を確立します。このコマンドを使用して、myadapterという名前の仮想アダプタを作成します:
NicCreate myadapter
このコマンドを使用して、新しいVPN接続myconnectionを作成します:
AccountCreate myconnection
次に、SoftEther VPNサーバーのIPアドレスとポート番号を入力します。ポート番号は、サーバーでリッスンするように設定した任意のポートを使用できます。デフォルトでは、SoftEtherは以下の4つのポート(443、992、1194、5555)でリッスンします。ここでは、ポート443を使用する例を示します:
Destination VPN Server Host Name and Port Number: [VPN Server IP Address]:443
注: IPアドレスの代わりに、サーバーの完全修飾ドメイン名(FQDN)を入力することもできます。
次に、サーバーで接続しようとしている仮想ハブの名前を入力してください。この場合、名前はVPNです:
Destination Virtual Hub Name: VPN
それでは、サーバー内で作成したユーザーのユーザー名を入力してください。私たちはtestという名前のユーザーを作成しました。
Connecting User Name: test
最後に、あなたが作成したばかりの仮想ハブの名前を入力してください:
Used Virtual Network Adapter Name: myadapter
現在、私たちのVPN接続が作成され、接続の準備が整いました。最後のステップは、認証モードをパスワードに変更することです。なぜなら、それがサーバーでユーザーの認証モードを設定した方法だからです。
AccountPasswordSet myconnection
要求された場合は、パスワード認証方法として標準を入力してください。
Specify standard or radius: standard
ようやく私たちは接続を行うことができます。このコマンドを使用してください:
AccountConnect myconnection
このコマンドを使って接続状況を確認できます:
AccountStatusGet myconnection
注意: サーバーとの接続をより安全にし、中間者攻撃を防ぐために、サーバーを特定するためにSSL証明書を使用するのがベストです。これはSoftEtherを使用することで簡単に行えます。そのためには、まずステップ10で説明されているように、証明書ファイルをクライアントにダウンロードする必要があります。その後、CertAddを使用してクライアントの信頼済み証明書に追加します。そして、AccountServerCertEnableコマンドを使用してVPN接続の証明書検証を有効にします。
仕上げる
この記事では、SoftEtherが提供するコマンドライン管理ユーティリティであるvpncmdを使用してSoftEther VPNサーバーを設定するプロセスを説明しました。ここで行ったすべての作業は、Windows用SoftEtherサーバーマネージャを使用しても行うことができ、そのツールを使用するとSoftEther VPNサーバーの設定がさらに簡単です。したがって、Windowsマシンをお持ちの場合は、それを使用することをお勧めします。
それで全部です。私たちはSoftEtherを使用してマルチプロトコルVPNサーバーを正常にインストールおよび構成しました。これでクライアントはL2TP、IPSec、SSTP、OpenVPNなどを使用して私たちのサーバーに接続できるようになりました。


