概要
sudo ipsec up VPN1
とかすると connection 'VPN1' established successfully
って言われてるのに全然繋がってなくてハマりました。
ipsecは問題ないなーと思って意識から消してましたが、実際はipsecが確立できてませんでした。
結論から言うとrightidの設定などの問題でした。
環境
- Linux Mint 18.1
- strongSwan 5.3.5-1ubuntu3.3
参考
詳細
以下に書いた問題などを解消して無事に繋がったように見えましたが、activeな接続を見ると0になっていました。
http://qiita.com/knqyf263/items/c619036ad2fa6b0d7c8f
# ipsec up VPN1
...
connection 'VPN1' established successfully
# ipsec status
Security Associations (0 up, 0 connecting):
none
upした際のメッセージにはsuccessfullyって出てるし問題なさそうなので、0 upになっていても繋がっているのかと思ってVPNの設定をしたのですがxl2tpdの設定をどう直してもうまくいきませんでした。
仕方ないのでsyslogを眺めていたら以下のエラーが出ていました。
$ grep -i IDir /var/log/syslog
Jun 20 13:07:02 XXX charon: 15[IKE] IDir '172.0.0.1' does not match to '10.0.0.1'
他にそれらしきエラーもないので、これが関係しているだろうと調べていくと、どうやらrightidの設定に関するエラーのようでした。
特にrightidなどを指定しない場合、デフォルトだと設定ファイルでrightに指定されている値をrightidとみなすらしいです。
right側のサーバで特に指定していない場合、実装にもよると思われるがIPアドレスがidに指定される?っぽい。
VPNサーバがグローバルIPアドレスを持っていて繋ぐ場合は問題ないが、NAT配下にあるなどしてIPアドレスが異なる場合はきちんと指定しないと動かないということらしいです。
IPアドレスは環境によって異なるので、ログを見つつ正しいidを指定すれば動くと思われます。
もちろんサーバ側できちんとidを指定してそのidを指定しても良いはず。
最終的には以下のような設定になりました。
設定の意味を全ては理解していないので無駄はありそうですが、とりあえずrightidを指定したら動くようになりました。
rightid=%anyなどはエラーが出てしまって、どう使うと良いのかはまだ分かっていないです。
$ sudo vim /etc/ipsec.conf
conn VPN1
keyexchange=ikev1
authby=secret
ike=3des-sha1-modp1024!
esp=3des-sha1-modp1024!
leftfirewall=yes
keyingtries=3
dpddelay=30
dpdtimeout=120
dpdaction=clear
rekey=yes
auto=start
left=%defaultroute
leftprotoport=17/1701
right=X.X.X.X
rightprotoport=17/1701
rightid=172.0.0.1
type=transport
$ sudo ipsec restart
$ sudo ipsec status
Security Associations (1 up, 0 connecting):
VPN1[1]: ESTABLISHED 2 seconds ago, 192.168.1.18[192.168.1.18]...10.0.0.1[172.0.0.1]
VPN1{1}: INSTALLED, TRANSPORT, reqid 1, ESP in UDP SPIs: cd29336f_i dd95abb5_o
VPN1{1}: 192.168.1.18/32[udp/l2f] === 10.0.0.1/32[udp/l2f]
上記のように ipsec status
をしたら無事に繋がっていることが確認できました。
まとめ
Macで普段VPN張るときには意識していませんでしたが、久しぶりにLinuxからやろうとしたら大ハマリしました。
前もハマった気がするので次はスムーズにできるように書いておきました。
rightidの指定は大事。実は自動でやってくれる設定とかもあるのかもしれないので、もしあったら知りたいです。