SoftEtherでVPN

FreeBSDをVPNサーバにする際、幾つかVPNのソフトウエアの選択肢がありますが、たぶん最も簡単なものの一つがSoftEther VPN。
しかも、簡単でいてL2TP/IPSec VPNだけでなく、OpenVPNやMS-SSTP VPNなども少しの設定変更で対応できる器用ぶり。

インストールから起動まで

portsからのインストールがすぐできて簡単。

# cd /usr/ports/security/softether
# make install

/etc/rc.confに次の一行を追記。

softether_server_enable="YES"

次のコマンドで起動。

# /usr/local/etc/rc.d/softether_server start

ファイアウォールでUDPポート500,4500の2つを開けます。
例えばファイアウォールがpfならこんなのを/etc/pf.confの適切なところに追記。

$ext_if = "外向けインターフェース名"
vpn_port = "{ 500, 4500 }"
pass in quick on $ext_if proto udp from any to ($ext_if) port $vpn_port keep state

次のコマンドでpfを再起動。

# /etc/rc.d/pf restart

設定ファイルは通常のportsでは/usr/local/etc下、ログは/var/log下などに配置されますが、SoftEtherでは設定ファイルもログも全て/var/db/softether下になります。(portsでインストールした場合)
設定ファイルを手動で編集するのはとても大変でSoftEther用の設定アプリを使うというのが普通なので、おそらく/var/db/softether下を見に行くことはないかと。
よって、これで終わり。ここまで5分もかからないですね。

設定

SoftEtherダウンロードセンターからSoftEther VPN Server Manager for Windowsをダウンロードします。

ダウンロードするソフトウエア: SoftEther VPN (Freeware)
コンポーネント: SoftEther VPN Server Manager for Windows
プラットフォーム: Windows
CPU: Intel (x86 and x64)

リストから最新ビルドのリンクをクリックしてダウンロード。

ダウンロードしたファイルを実行してインストール。

SoftEther01
画面1: 途中でインストールするソフトウエアの選択画面が出るので「SoftEther VPN サーバー管理マネージャ (管理ツールのみ)」を選択して「次へ」。
後は普通にインストールを終わらせる。

SoftEther02
画面2: SoftEther VPN サーバー管理マネージャが起動した画面。
まだ何も登録されていないので「新しい接続設定」を押す。

SoftEther03
画面3:
接続設定名: 適当に何でも可
ホスト名: SoftEther VPNサーバをインストールしたFreeBSD機のIPアドレスかホスト名
ポート番号: ドロップダウンで幾つか選択肢が出るので5555とか
経由するプロキシサーバ: 直接 TCP/IP接続 管理モードの選択とパスワードの入力: サーバー管理モード
管理パスワード: 適当に
設定したら「OK」を押す。

SoftEther04
画面4: 接続設定が作成されたのでリストで選択されていることを確認(1つしかなければ強制的に選択される)して「接続」を押す。

SoftEther05
画面5: 認証画面が出るが、まだ何も設定されていないのでパスワード欄は空のままで「OK」を押す。

SoftEther06
画面6: 管理者パスワードの登録要求画面が出るので同じパスワードを2回入力して登録。「OK」を押す。

SoftEther07
画面7: 基本設定の選択画面。今回はリモートアクセスVPNが目的なので「リモートアクセス VPN サーバー」にチェックして「次へ」を押す。

SoftEther08
画面8: 仮想HUB名の入力を求められる。標準で「VPN」が入っているので特に希望がなければそのままでも可。「OK」を押す。

SoftEther09
画面9: SoftEtherが提供しているDDNSの設定。独自ドメインや固定IPを持っていたり、他のDDNSを愛用しているならここは正直どうでも良いが、このDDNSを使いたいという場合は画像の破線の赤い四角で囲っている部分で希望のサブドメイン名を指定できる。「上記のDNSホスト名に変更する」で確定。希望したサブドメイン名が既に誰かに取得されてなければこれ以降このホスト名が利用できる。
「閉じる」を押す。

SoftEther10
画面10: L2TP/IPSecの設定。「L2TPサーバー機能を有効にする(L2TP over IPsec)」にチェックする。
HUBの選択で2つ前の手順で指定したHUB名を選択。
事前共有鍵を登録。強い鍵を作りたいので本来は20〜30文字程度は欲しいところだが、接続する端末によっては9文字程度でないと正常に接続できないので適切な文字数で。画像のように「the quick brown fox・・・」なんてありきたりなPSKは実際には使っちゃダメ
「OK」を押す。

SoftEther11
画面11: 事前共有鍵に10文字以上を指定した場合はこの画面が表示される。接続予定の端末がAndroid以外なら「いいえ」を選択して確定する。

SoftEther12
画面12: VPN Azureの利用の有無が問われるのでどうしても使いたいということでなければ「VPN Azureを無効にする」を選択する。「OK」を押す。

SoftEther13
画面13: VPNのユーザーを作成するので「ユーザーを作成する」を押す。

SoftEther14
画面14: ユーザー名とパスワードだけ登録する。認証方法は「パスワード認証」(おそらく初期値)。その他は触らない。「OK」を押す。

SoftEther15
画面15: ユーザーリストでユーザーが登録されたことを確認する。「閉じる」を押す。

SoftEther16
画面16: VPNにブリッジ接続するネットワークインターフェース名を選択する。(普通はLAN側のNICを指定)
「閉じる」を押す。

SoftEther17
画面17: メインメニューに戻る。
リスナー一覧からL2TP/IPSecでは使わないTCP/IPポートを選択して削除する。(画面3で5555を選んだ場合は5555以外全部)
ちなみに使うのは
SoftEther VPN: TCP443, 992, 5555
OpenVPN: TCP443, 992, 5555, UDP1194
L2TP/IPsec: UDP500, 4500

「暗号化と通信関係の設定」を押す。

SoftEther18
画面18: 暗号化アルゴリズムを適度に強度の高いものに変更します。VPNに接続する端末が対応する最も強度の高いもので良いかと思われます。

設定が終わったらメインメニューに戻る。(「SoftEther VPN サーバー管理マネージャ」は終了でも構わない)
動作確認するのであれば、VPNクライアントで外部からVPNに接続してから「最新の状態に更新」ボタンを押す。
上の方にある仮想HUBリストのセッション欄が1から2以上に上がれば接続できています。

ユーザーの追加・変更などは「仮想HUBの管理」の下階層にあります。

AndroidでVPNに接続

SoftEther1a
画像1A 左上: Androidの「設定」で「もっと見る」を選択。
画像1A 右下: Androidの「VPN」を選択。

SoftEther2a
画像2A 左上: 時刻表示の下にある「点が3つ縦並び」を押す。
画像2A 右下: Androidの「VPNプロフィールの追加」を選択。

SoftEther3a
画像3A 左上:
名前: プロフィール名を任意で
タイプ: L2TP/IPSec PSK
サーバアドレス: SoftEther VPNサーバのFQDNかグローバルIPアドレス(VPNサーバが固定IPであればIPアドレスの方が望ましい)

画像3A 右下:
IPSec事前共有鍵: 画面10で入力したもの

「保存」を押す。

SoftEther4a
画像4A 左上: 登録したVPNプロファイルが表示されるので押す。
画像4A 右下: ユーザー名とパスワードは画面14で登録したもの。
「アカウント情報を保存する」にチェックすると次回以降に入力の手間が省けるが、端末を他人に操作されるとVPNに危険が及ぶ可能性も。
「接続」を押してVPN接続を開始する。

SoftEther5a
画像5A 左上: VPNプロフィールのところに「接続されました」が表示され、画面最上部に鍵マークが出れば正常にVPN接続できている。
画像5A 右下: VPN接続を終了する場合はVPNプロフィールを押して「切断」を押す。

画面3A左上でグローバルIPアドレスを指定して且つ画面3A右下で「詳細オプションを表示する」を押して「DNSサーバー」を指定した場合は、画面2A右下の「常時接続VPN」を有効にすることができる。