事象
YAMAHAルーターにWindowsやiPhoneからL2TP/IPsecで接続しているときに、回線断するとしばらく再接続できなくなる。
対象
- YAMAHAルーター(RTX1300、RTX1230、RTX1220、RTX1210、RTX830、FWX120など)
- アグレッシブモードでの取り回し(一方のルーターしか固定のグローバルアドレスを持たないとき)
取り扱わないこと
- ip filterまわり
原因
このような感じでSAが残存するから。SAが残存している間は、再接続できなくなる。
> show ipsec sa
Total: isakmp:1 send:1 recv:1
sa sgw isakmp connection dir life[s] remote-id
----------------------------------------------------------------------------
1 88 - isakmp - 3589 バインドされたIPアドレス
2 88 1 tra[0088]esp send 3590 〃
3 88 1 tra[0088]esp recv 3590 〃
SAの削除はipsec sa deleteか、ipsec refresh saでできる。
このようなケースにおいて手動でSAを削除する場合は、どちらのコマンドを使用しても構わない。
SAを指定する場合は、isakmp(connection列でisakmpとなっているsa)を指定する。
# ipsec sa delete 1
これで再接続できるようになる。
対策
要するに、再接続を早くできるようにしたいのであればSA (ISAKMP SA)が早々に削除されるようにすればよい。
設定例
おわかりいただけると思うが、88や8888といった数字に特段の意味はない。ぱっと見たときに本題ではない変数的要素をわかりやすくするためにそうしているだけ。
tunnel select 88
description tunnel "Source any"
tunnel encapsulation l2tp
ipsec tunnel 88
ipsec sa policy 8888 88 esp aes-cbc sha-hmac
ipsec ike duration isakmp-sa 88 300
ipsec ike keepalive use 88 on dpd 10 6
ipsec ike local address 88 ローカルIPアドレス
ipsec ike nat-traversal 88 on
ipsec ike pre-shared-key 88 text 共通鍵
ipsec ike remote address 88 any
l2tp tunnel disconnect time off
l2tp keepalive use on 10 3
l2tp keepalive log on
l2tp syslog on
ip tunnel tcp mss limit auto
tunnel enable 88
ipsec ike duration isakmp-sa
ひとつはipsec ike duration isakmp-saでSAの寿命を設定している。
しかしながら、IKEv1では(VPNの)始動側が寿命を決められる(15.47.1 SA の寿命の設定)ようなので、このような接続元が不定なケースでは役に立たなさそう。
仮に機能したとしてもminimumが300秒であるため、少なくとも5分は待たされることになる。
ipsec ike keepalive
もうひとつはipsec ike keepalive(15.19 IKE キープアライブ機能の設定)でIKEキープアライブをコントロールしている。
仮にこのように書くと、キープアライブパケットのintervalは10秒、障害とみなすまでの試行回数は6回となる。
すなわち60秒そこらで打ち切りになることが期待される。
ipsec ike keepalive use 88 on dpd 10 6
補足
メーカーページではL2TP/IPsecに関して次の記載がある。
IKEv1にのみ対応しており、IKEv2は使用できません。
よって、設定例に記載のコマンドはIKEv1のものに特定している。