さくらのVPSへVPN経由で繋いでみた

(注)この記事は2013年3月17日に旧ブログに投稿したものです。今でも有効な内容かは不明・・・

先日、ソフトイーサ社からVPNソフト「SoftEther」が無償公開されました。
http://internet.watch.impress.co.jp/docs/news/20130311_591224.html

以前UT-VPN(同社製品、PacketiX VPNオープンソース版)を自宅サーバで使ってみた事はありましたが、今回さくらのVPS上の自アカウントに導入してみたので、その過程をメモっておきます。

VPN構築後のネットワーク図

f:id:xyzplus:20161210001914p:plain

アイコン素材はここから拝借しました。
http://jp.yamaha.com/products/network/downloads/tools/

ダウンロード

SoftEther Projectのサイトからファイルをダウンロード
http://www.softether.org/5-download

ダウンロードするコンポーネント
SoftEther VPN Server
 softether-vpnserver-v1.00-*.tar.gz
SoftEther VPN Server Manager for Windows
 softether-vpnserver_vpnbridge-v1.00-*–windows-x86_x64-intel.exe

インストール

まず、SoftEther VPN Serverのインストールから。
詳しい手順は公式サイトに書いてありますので(英語ですけど)それに従いインストール。
サーバの起動は(この時点では)まだしません。

次に、SoftEther VPN Server Manager for Windowsをインストール
インストーラの指示に従って淡々とインストールします。
途中、「インストールするソフトウェアの選択」画面が出てきますので、
SoftEther VPNサーバ管理マネージャ(管理ツールのみ)」を選択。

ファイアウォール、ネットワーク設定の変更

SoftEtherで使用するポートを予めFWのフィルタリングルールに追加(許可)します。

・TCP443, 992, 1194, 5555 のいずれか
・UDP500
・UDP4500

クライアント(Windows)のレジストリエディタを開き、
NATトラバーサルを有効にします。
http://support.microsoft.com/kb/885407/ja
http://support.microsoft.com/kb/926179/ja
(変更後クライアント再起動)

192.168.0.0/24のネットワークからさくらのVPSサーバ経由で外部ネットワークへアクセスできるようにIPフォワードの設定をします。

サーバの/etc/sysctl.confファイルを開き
net.ipv4.ip_forward = 1
に変更。
(変更後サーバ再起動)

iptableの設定ファイルに下記1行を追加(NAPTの設定)
-A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

サーバの設定

SoftEther VPN Server Managerを起動します。

f:id:xyzplus:20161210002519p:plain

新しい接続設定を追加します
入力する箇所はホスト名(VPSサーバのIPアドレス)と
ポート番号(FWで通信を許可したTCP443, 992. 1194. 5555のいずれか)

f:id:xyzplus:20161210002552p:plain

VPNサーバを起動します。
# /etc/init.d/vpnserver start

SoftEther VPN Server Managerを使って接続します。
初回の接続時に管理者パスワードを設定する画面が出てくるので入力。

f:id:xyzplus:20161210002620p:plain

その後、簡易セットアップ画面とかウィザードが色々表示されますが、手動で行うのでとりあえず全部閉じます。

f:id:xyzplus:20161210002639p:plain

これが管理画面です。(上記の図はこれから説明する仮想HUBやユーザーを作成した後の状態)
TCP 443で「エラー発生」しているのはポートが競合(Apacheで使用中)しているから(自分のサーバの場合)ですので、そのまま放置します。(停止しておいたほうがいいかも)
なお、”DEFAULT”という仮想HUBが最初から作られているかとおもいますが、1から作りたいので削除しておきます。

では、新しく仮想HUBを追加します(「仮想HUBを作成」ボタン)
入力する箇所は、仮想HUB名と、パスワード

f:id:xyzplus:20161210002700p:plain

仮想HUBを作成したら、その仮想HUBを選択し、管理画面を開きます。

f:id:xyzplus:20161210002718p:plain

「ユーザーの管理」ボタン押下でこの仮想HUBに接続するユーザーの一覧が表示されます。

f:id:xyzplus:20161210002744p:plain

ここから、クライアントからVPSサーバへ接続するユーザーを追加します。(追加の方法は直感でわかると思うので説明は省略)

仮想HUBの管理画面にある「仮想NATおよび仮想DHCPサーバ機能」ボタンを押下すると仮想ルータや仮想DHCPサーバの設定画面が表示されます。
今回は、仮想DHCPサーバのみを使用したいので、「SecureNATの設定」ボタンを押下して設定を変更します。

f:id:xyzplus:20161210002811p:plain

仮想NAT機能のチェックボックスを外し、仮想DHCPサーバのチェックをつけます。
そして、仮想HUNを配置する仮想ネットワークのアドレス帯域を設定します。

f:id:xyzplus:20161210002831p:plain

設定し終わったら「SecureNAT機能を有効にする」ボタンを押下します。
(本当に有効にしますか?と聞かれるので、OKを押下)

続いてローカルブリッジの設定を行います。(「ローカルブリッジ設定」ボタン)
本来なら外部ネットワーク用とVPN用で2枚のNICを使いたいのですがVPSではそういう事出来ませんのでtapデバイスで代用します。

先ほど作成した仮想HUBをドロップダウンリストから選び、新しいtapデバイスのブリッジ接続のラジオボタンを選択→tapデバイス名を入力し、ローカルブリッジを追加します。

f:id:xyzplus:20161210002854p:plain

追加が正常にできたかifconfigコマンドで確認します。
tap_デバイス名が表示されたのを確認したら以下のコマンドを実行してtapデバイスに対してIPアドレスとサブネットの設定を行います。
ifconfig tap_XXXXXX 192.168.0.2 netmask 255.255.255.0

ただ、VPNサーバ起動するたびに上記のコマンドを打つのは面倒などで、起動スクリプトにifconfigの設定を埋め込みました。
$DAEMON start
 ↓
$DAEMON start
sleep 3
ifconfig tap_softether 192.168.0.2 netmask 255.255.255.0

最後に、IPsec / L2TPの設定を行います。(「IPsec / L2TP 設定」ボタン)
L2TPサーバ機能を有効にする(上2つ)にチェックをつけ一番下のIPsec事前共有鍵を入力します。
この値は後で、クライアントの設定に使います。

f:id:xyzplus:20161210002929p:plain

これでサーバ側の設定は完了です。

クライアントの設定

続いてクライアントの設定を行います。
にあるように、VPNサーバとの接続方法は何種類かありますが、今回はL2TP over IPsecProtocolで行きます。
SoftEther VPN Protocolでの接続手順は後日(実はこっちのほうが楽)

コントロールパネルのネットワーク共有センターを開き、新しい接続を追加します。(「接続またはネットワークのセットアップ」)
「職場に接続します」を選択し、次へ

f:id:xyzplus:20161210003020p:plain

「インターネット接続(VPN)を使用しますを選択

f:id:xyzplus:20161210003049p:plain

VPSサーバのアドレスを入力
そして「今は接続しない~」を選択して次へ

f:id:xyzplus:20161210003110p:plain

ユーザーとパスワードを入力。

f:id:xyzplus:20161210003131p:plain

これで設定が完了です。

続いて、先ほど作成したVPN接続のプロパティを表示し、設定を変更します。
セキュリティのタブで、VPNの種類をIPsecを利用したレイヤー2トンネリングプロトコルに変更。

f:id:xyzplus:20161210003150p:plain

詳細設定ボタンを押し、「認証に事前共有キーを使う」を選択し
IPsec事前共有鍵を入力します。

f:id:xyzplus:20161210003210p:plain

続いて、ネットワークのタブでインターネットプロトコル バージョン4を選択し、プロパティを押下→詳細設定ボタンを押下します。

f:id:xyzplus:20161210003231p:plain

VPN接続後、外部ネットワークとの接続をVPSサーバ経由で行いたい場合は、”リモートネットワークでデフォルトゲートウェイを使う”にチェックボックスをつけます。

f:id:xyzplus:20161210003258p:plain

これでクライアント側の設定は完了です。

接続

作成したVPN接続を開き接続!

f:id:xyzplus:20161210003336p:plain

無事接続できました。

f:id:xyzplus:20161210003355p:plain

これを活用すれば、
・外出先から自宅のパソコンにリモートデスクトップで繋いで作業する
・インターネットが規制されている某国からさくらVPS経由でインターネット閲覧する
などすることができます。(上記は一例です)