pfSenseのIPsec Xauth設定

この記事は2015年1月10日に全面改訂し、pfSense2.2RCに則した内容になっています。pfSense2.2からIPSecのdaemonがracoonからstrongSwanに変更になっていますが、設定画面や設定項目は以前とほぼ同様です。

pfSense2.2ReleaseからIPSecが正常に利用できません

2015年2月10日追記:
pfSense2.2ReleaseからIPSecが使い物にならなくなっています。RC版まで正常に利用できたのに何故なのでしょう。pfSenseのフォーラムにも非常に多くの不具合報告が多く上がっています。IPSecを利用する場合は2.1.5を使用するか2.2RCを使い続ける方が良いでしょう。

2015年5月1日追記:
改訂版の2.2.1, 2.2.2でも改善していません。

pfSenseにVPNの設定を追加して外出先のAndroid端末からVPN接続できるようにします。
接続認証方式はPSK+Xauthとします。

pfSenseのIPsec Xauth設定1
手順01:
メニューからVPN→IPsecを選択。
Tunnelsのタブが表示される筈なのでEnable IPsecの項目にチェックを入れ[Save]で保存します。
これはIPSecを使うまでのどのタイミングでも構いません。後でも結構ですが忘れずに。
Mobile clientsタグを選択します。

pfSenseのIPsec Xauth設定2
手順02:
IKE ExtensionsのEnable IPsec Mobile Client Supportにチェック。 User AuthenticationのSourceにLocal Databaseを選択。(初期値)
Group AuthenticationのSourceにsystemを選択。(恐らく初期値は選択されていないので選択する)
Virtual Address PoolのProvide a virtual IP address to clientにチェック。(必要です)
Networkはクライアント用に「既存でない」ネットワークを適当な大きさで作成します。もしもLANが192.168.0.0/24ならこれに被せてはいけません。新規のネットワークを作成します。画像では192.168.254.0/24を指定していますが、24ビットだとホスト数が254個と大きすぎるので29ビット6個、30ビット2個程度にするなど。 Network Listにチェックします。
これ以降の項目は全てチェック無し、設定不要です。
一番下の[Save]ボタンを押す。
頁の右上部に[Create Phase1]ボタンが表示されるので押す。(画像の破線の四角部分)

pfSenseのIPsec Xauth設定3
手順03:
Key Exchange versionは「V1」を選択。(初期値)
Internet Protocolは「IPv4」を選択。(初期値)
Interfaceは「WAN」を選択。(初期値)
Descriptionは何でも可。
Authentication methodは「Mutual PSK + Xauth」を選択。(変更必要です)
Negotiation modeはネットワーク環境によって選択が異なります。pfsenseのWANアドレスと出先で使用するAndroid側の両方のIPアドレスが固定グローバルアドレスの場合は「main」を選択します。
「Aggressive」を使いたい人が多いと思うのだが、私の環境で試した範囲では認証失敗になります。環境のせいだと思いますが・・
My identifierは「My IP Address」を選択。(初期値)
Peer identifierは「Distinguished name」を選択(初期値)し、右のテキストボックスに何か文字を入れます。
Pre-Shared KeyはMutual PSK + Xauthで使用する事前共有鍵になります。20〜30文字程度は入れましょう。(重要)
Encryption algorithmは「AES 256bits」を選択します。一番暗号強度の高いものです。
Hash algorithmはSHA1を選択。
DH key groupは2 (1024bit)を選択。
Lifetimeは短すぎす長すぎすで適当な時間。86400(秒)は24時間。
NAT Traversalは「Force」で。
Dead Peer Detectionの項目は初期値で。

pfSenseのIPsec Xauth設定4
手順04:
Tunnelsタブを表示する。登録したPhase1の下にPhase2エントリの欄が表示できるようになっているので[+]ボタンを押す。

pfSenseのIPsec Xauth設定5
手順05:
Phase2はまだ登録されていないので空行。右の[+](追加)ボタンを押す。

pfSenseのIPsec Xauth設定6
手順06:
Modeは「Tunnel IPv4」を選択。(初期値)
Local Networkは以下のパターンから。

  • VPNゲートウェイ経由でインターネットに接続したい場合、Typeを「Network」、Addressを「0.0.0.0/0」を指定。
  • LANに接続したい場合、Typeを「LAN subnet」を指定。
  • インターネットとLANのどちらにも接続使用したい場合、Typeを「LAN subnet」を指定。その下のIn case you need NAT/BINAT・・・のTypeを「Network」、Addressに「LANのネットワークアドレス」を指定。(上の画像ではLANのネットワークアドレスとして192.168.0.0/24を指定している)
ここの設定が不適切だとVPNクライアントがネットワーク的にVPNゲートウェイ(pfSenseのホスト)以外の何処にも接続できない状態になります。

Protocolは「ESP」を選択。(初期値)
Encryption algorithmsはAES 128bitsを指定。それ以外はチェックを外す。
Hash algorithmsはSHA1を選択。それ以外はチェックを外す。
PFS key groupは「off」を選択。(初期値)
Lifetimeは短すぎす長すぎすで適当な時間。28800(秒)は8時間。
一番下の[Save]ボタンを押す。

pfSenseのIPsec Xauth設定7
手順07:
Phase1, Phase2で何らかの変更したいなら各エントリの右側にある[e](編集)ボタンから。設定に満足したら頁右上部の[Apply changes]ボタンで保存した設定を有効にします。

pfSenseのIPsec Xauth設定8
手順08:
メニューからSystem→User Managerを選択。
新規のユーザーを登録するのでユーザーリスト右下の[+](追加)ボタンを押す。

pfSenseのIPsec Xauth設定9
手順09:
ユーザー名とパスワードは任意。VPNクライアント側でも使うので滅茶苦茶なのは避ける。パスワードは簡単なものを避ける。
ユーザーのIPsec Pre-Shared Keyは今回は関係ないので入力しない。(入力しても使われません)
一番下の[Save]ボタンを押す。

pfSenseのIPsec Xauth設定10
手順10:
Groupsタブを選択。

新規のグループを登録するのでグループリスト右下の[+](追加)ボタンを押す。

pfSenseのIPsec Xauth設定11
手順11:
Group nameは任意。
Group Membershipsの左側リストボックス新規追加したユーザー(画像例だと「vpn」)を選択し、[▶](追加)ボタンを押す。選択したユーザーが右側のリストボックスに移動することを確認。
一番下の[Save]ボタンを押す。

pfSenseのIPsec Xauth設定12
手順12:
画像は無いが、手順10の画面でグループリストから追加したグループ(画像例だとvpngroup)エントリの右にある[e](編集)ボタンを押す。
[Save]ボタンの上に先程は存在しなかったAssigned Privilegesの欄が出現するので権限リストの右下の[+](追加)ボタンを押す。

pfSenseのIPsec Xauth設定13
手順13:
System Privilegesのリストボックスから「User - VPN - IPsec xauth Dialin 」だけを選択した状態(緑色にする)にする。
一番下の[Save]ボタンを押す。

pfSenseのIPsec Xauth設定14
手順14:
画像は無いが、もう一度手順10の画面でグループリストから追加したグループ(画像例だとvpngroup)エントリの右にある[e](編集)ボタンを押す。
Assigned Privilegesの欄に「User - VPN - IPsec xauth Dialin 」が表示されていることを確認。(画像の破線四角部分。)
画像は無いが、同じくUsersタブのユーザーリストから追加したユーザー(例だとvpn)エントリの右にある[e](編集)ボタンを押す。
先程は存在しなかったEffective Privileges欄に「User - VPN - IPsec xauth Dialin 」が表示されていることを確認。

pfSenseのIPsec Xauth設定15
手順15:
メニューからFirewall→Rulesを選択し、IPsecタグを選択する。
ルールリストが恐らく空の状態と思われるのでルールリスト右側の[+](追加)ボタンを押す。

pfSenseのIPsec Xauth設定16
手順16:
Actionは「Pass」。(初期値)
Interfaceは「IPsec」。(初期値) 手順15の画面のタグと同じ名前が初期値。ここを変更すると変更した値と同じ名前のタグのルールリストに追加される。
TCP/IP Versionは「IPv4」。(初期値)
Protocolは「any」。(変更する)
Sourceはnotにはチェックを入れずTypeは「Network」、Addressには手順02で設定したVirtual Address Poolのネットワークと同じ値を入力。
Destinationはnotにはチェックを入れずTypeは「any」。
一番下の[Save]ボタンを押す。
画像はないが、手順15の画像の右上部に[Apply changes]ボタンで保存した設定を有効にします。

以上でpfSense側の設定は完了。

Android端末側の設定方法と使い方はAndroidでIPSec Xauth PSKを参照。