RTシリーズのIPsec&IKE&VPN&...に関するFAQ


特定のサーバに接続すると通信が止まってしまいます。


最終変更日2015/Jul/23
文書サイズ4.1KB

Path MTU Discoveryの処理に関係する問題が知られています。

IPsecで暗号化されたパケットは、元のパケットに比べて長いため、 元のパケットの長さがMTUに近いときには、 パケットのフラグメントが必要になります。通常は、 ルータがパケットをフラグメントして送信するので通信に支障はありませんが、 フラグメントは転送効率を落としてしまいます。

そこで、送信元の端末では、Path MTU Discoveryという方法で、 なるべくフラグメントが起きないようにパケットの長さを抑制することがあります。 Path MTU Discoveryを実施する端末は、 DFビットというフラグを立てたパケットを送信します。 DFとはDon't Fragmentの略で、フラグメントの禁止を意味します。 ルータは、DFビットを立てたパケットのフラグメントが必要になったら、 送信元に対してICMPを返します。 端末は、このICMPを受け取ることでパケットが長すぎることを知り、 パケットをより短い長さに抑制します。

                                                        VPN
   端末 -------------------------- ルータ <============================> ルータ ---------------------- 端末

   DFビットをつけて送信する
   +------------------+
   | 長さ: 1500バイト |-----------> 「IPsecをするにはフラグメントが必要だぞ」
   +------------------+
                                   DFビットでフラグメントができないのでICMPを返す
                                   +--------------+
   <------------------------------ | ICMP         |
                                   +--------------+
   長さを短くする
   +------------------+
   | 長さ: 1400バイト |-----------> 「この長さならIPsecできるぞ」
   +------------------+

ところが、ファイアウォールなどによって、 ICMPが破棄されてしまうことがあります。この場合には、 送信側がICMPを受け取れないために、パケットの長さが短くならず、 通信ができなくなってしまいます。

端末やファイアウォールがユーザの管理下にあればよいですが、 そうでなければ、その端末との通信の障害を回避する手段がありません。

ルータがICMPを送信しているかどうかを確認するためには、次のように、 フィルタを設定して確認します。

  ip filter 1 pass-log * * icmp * *
  ip filter 100 pass * * * * *
  ip lan1 secure filter out 1 100
  syslog notice on

ICMPを送信していれば、次のようなログが残ります。

... LAN1 Passed at OUT(1) filter: ICMP 発IP > 着IP : unreachable fragment

IPsec機能のFAQの目次に戻る。