OpenWrtでIPSec VPN(8)『StrongSwanの設定』

色々前準備を整えてきましたが、ようやくIPSec VPNのの設定に入ります。

参考情報

この記事を書くにあたって引き続き以下の情報を参考にしています
OpenWRTの公式サイトのDocument:『install/configure strongswan for IPhone/IPad』
StrongSwan公式サイトのDocument: 『iOS (Apple iPhone, iPad...) and Mac OS X』


編集方法

SSHでCLIログインしてviで編集します。
OpenWrtのvi は初期インストールのBusybox版・追加可能なvim 7.0ともに
デフォルトで autoindent が有効になっているため、
Terminalからcopy and paste で貼付けすると、自動インデント機能により桁ががずれてしまします。
こんな風に。
1行名
        2行名
                3行目
                        4行名
自動インデント機能を抑止するため、[ESC]押した後のコマンドモードから
「:」を押し、続けて「set noautoindent」または省略形の「set noai」を実行してください。
:set noautoindent
なお、viの現在の設定は「:set」で確認できます。

/etc/ipsec.conf の作成

IPSecの動作を ipsec.conf に記述します。端末種類ごとにセクションを分けて記述できます。
各パラメータの詳細はStrongSwan公式ドキュメントを参照してください。
vi /etc/ipsec.conf

共通部分

config setup
conn %default
	left=%any
	leftsubnet=0.0.0.0/0
	leftfirewall=yes
	leftcert=serverCert.pem
	right=%any
	rightsubnet=192.168.1.0/24
	rightsourceip=%dhcp

leftsubnet=0.0.0.0/0 の箇所はインターネット側のアドレスになります。この例では どんなIPでも受け付けます。(このためLAN内からでもIPSec接続できてしまいます。)
rightsubnet=192.168.1.0/24 の箇所はOpenWRTのLAN側IPアドレスのNWセグメントを指定してください。

Apple iOS対応部分

以下を ipsec.conf に追記します。
conn ios
	keyexchange=ikev1
	authby=xauthrsasig
	xauth=server
	rightcert=iPhoneCert.pem
	forceencaps=yes
	auto=add



/etc/ipsec.secrets の設定

IPSec接続後のユーザ認証用のIDとパスワードを設定します。
各パラメータの詳細はStrongSwan公式ドキュメントを参照してください。

# vi /etc/ipsec.secrets

# /etc/ipsec.secrets - strongSwan IPsec secrets file

: RSA serverKey.pem
iPhone_user : XAUTH "iPhone_password"

OpenWrtルータ用のServer証明書「serverKey.pem」を指定しています。
次の行からはIPSec 接続時に使用するユーザ名とパスワードを指定します。
ユーザ名とパスワードは任意です。

/etc/strongswan.conf の設定

strongswa.conf を設定します。
# vi /etc/strongswan.conf
各パラメータの詳細はStrongSwan公式ドキュメントを参照してください。
# strongswan.conf - strongSwan configuration file

charon {
	dns1 = 192.168.1.1
	#dns1 = 8.8.8.8
	#dns2 = 8.8.8.4
	#dns1にルータのIPを指定してダメだったらgoogleのDNSを指定してみましょう。
	threads = 16
	plugins {
		dhcp {
			server = 192.168.1.1
		}
	}
}

pluto {
}

libstrongswan {
   #  set to no, the DH exponent size is optimized
   #  dh_exponent_ansi_x9_42 = no
}

dns1 と dhcp は実際の環境に合わせて適切なIPを設定してください。
ここではDNSもDHCPサーバもOpenWrtルータ 192.168.1.1 (初期値) を指定しています。

/etc/init.d/ipsecの作成

何故かStrongSwan用の自動起動スクリプトが用意されていないので、新規に作成します。
以下を /etc/init.d/ 以下に ipsec として保存します。

#!/bin/sh /etc/rc.common
# ipsec init script

START=46
STOP=01

start() {
ipsec start
}

stop() {
ipsec stop
}

restart() {
ipsec restart
}

reload() {
ipsec update
}

保存したら、スクリプトに実行権限をつけておきます。
# chmod 755 /etc/init.d/ipsec

strongswan daemon の起動確認

ここまで出来たら、CLI上でstrongswan のdaemonを起動してみます。

# /etc/init.d/ipsec start

設定ファイルに不備がなければ以下のメッセージがコンソールに表示されます。
Starting strongSwan 5.0.0 IPsec [starter]...


WebUI上での確認と自動起動設定

LuCIのWebUIで 『ipsec』が管理できるかどうかを確認します。

「System」タブ→「Startup」タブを開いて
Start priority 46番(/etc/init.d/ipsec のSTARTで設定した値)に ipsec の行が追加されていることを確認します。
最初は Enable/Disable が Disableになっているはずなので、自動起動できるように
ボタンをクリックして Enabled にします。