IPsecは確立したのに通信できない

以下は、某ルータでIPsec VPNを使う際の設定の抜粋です
ただし、11行目で分かるように、このVPNのトンネルインターフェースは有効にはなっていません
IPsec VPNを結ぶ相手側でも同様な設定がされており、これらを有効にすることで、IPsec VPNが問題なく確立し、これを介したIP通信が可能であることが確認されています

tunnel select P
 tunnel encapsulation ipsec
 ipsec tunnel Q
  ipsec sa policy Q R esp aes-cbc sha-hmac
  ipsec ike encryption R aes-cbc
  ipsec ike group R modp1024
  ipsec ike hash R sha
  ipsec ike local address R <自分側IPアドレス>
  ipsec ike pre-shared-key R text <事前共有鍵>
  ipsec ike remote address R <相手側IPアドレス>
 tunnel disable P

さて、この状態でIPsec VPNトンネルインターフェースの片側だけを有効にすると、どのような動作をすると思いますか?

「IPsec VPNは確立しない、つまりIPsec VPNを介したIP通信が不可能である」
大抵の方はそう答えると思います
実は、この回答でと半分だけが正解です

正解は「IPsec VPNは確立するものの、これを介したIP通信は不可能」です

これは一体どういうことでしょう

内部を解析したわけではないので、あくまでも推測に過ぎないのですが、IPsecの有効・無効と、IPsecを利用したトンネルインターフェースの有効・無効の設定が連動していない故の現象だと思われます

まず片方のルータがIPsec VPNを通過するようなIPパケットを受信します
このルータのトンネルインターフェースlが有効になっていれば、IPパケットはトンネルインターフェースを通ってIPsec VPNの処理に受け渡されます
IPsec VPNの処理では、相手側ルータとの間でIKE saを確立し、次いでIPsec暗号ペイロードを確立します
このとき、相手側ルータのトンネルインターフェースの有効・無効とは無関係に、IKE saとIPsec暗号ペイロードが確立されます
こまでの段階で、先のIPパケットがIPsec VPNを流れることが可能になります
やはりこのときも、相手側ルータのトンネルインターフェースの有効・無効は関係ありません
しかし、相手側ルータがこのIPパケットを受け取ったとしても、それを受け入れるトンネルインターフェースが無効になっていれば、ルータはそのIPパケットを受け入れることはありません
IPパケットを拒否(reject)することも、送り先不明(unreachable)でエラーにすることもありません
これらの処理はインターフェース(物理インターフェースおよび仮想インターフェス)の中でされているようなので、仮想インターフェースのひとつであるトンネルインターフェースが無効、つまり存在しないのと同じ状態になっている以上、先に挙げた処理は一切為されないままになります
結果として、受け取ったIPパケットはルータの中で紛失、消失するしかなく、「IPsec VPNは確立するものの、これを介したIP通信は不可能」な状態に陥ってしまいます

具体的な現象としては、以下のようなものが確認できます

  • トンネルインターフェースが有効になっているルータ
    IKE saの確立が確認できる
    show ipsek sa
    トンネルインターフェースを通過する(出て行く)パケットが記録される
    ip filter N pass-log * * * * *
    ip tunnel P secure filter in/out N
  • トンネルインターフェースが無効になっているルータ
    IKE saの確立が確認できる
    show ipsek sa
    トンネルインターフェースを通過するパケットの記録がない
    ip filter N pass-log * * * * *
    ip tunnel P secure filter in/out N

関連する投稿

返信の投稿

 

 

 

これらのHTMLタグが使えます。

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt="">