Path MTU Discovery 2



 ◆ Path MTU Discoveryブラックホールの問題解決 その1

 異なるMTU値が定義されたルータ上で適正なMSSサイズを定義することにより、通信開始となる
 3 way-handshake 時に、ルータに設定された
MSSサイズが送信先に通知されるため、送信元で
 作成されるIPデータグラムが、ルータのMTU値を超えることなく正常に通信することができます。

 ルータでMTUを小さく設定したとしても、自動的にMSS値が調整されてI/Fに適用されるわけでは
 ないので、MTU値が小さくなるI/FのルータでMSS値を設定することは推奨というより必須です。
 以下の設定で、Ciscoルータを通過するTCP SYNのMSSが「1360」となり送信先へ通知されます。

 Cisco(config-if)# ip tcp adjust-mss 1360



        


 ◆ Path MTU Discoveryブラックホールの問題解決 その2

 DF=1(分割禁止)で受信したIPデータグラムを、着信インターフェース上でDFビットをクリアする
 こと(
DF=0)によって、ルータ上でフラグメントが可能にすることでも、この問題を解決できます。
 ただし着信パケットに対してその都度、IPフラグメントを発生させるとスループットが著しく落ちます。
 ※ 送信元PCによるデータ分割と、ルータでの着信パケットに対するデータ分割とでは意味が違います。

 問題解決 1 の方法でも解決せず、PMTUD Black Holeによって通信できなくなる状態が発生した時の
 苦肉の策として使用する手法と言えます。以下はCiscoでroute-mapを使用し DF=0 にする設定例です。


 Cisco(config)# interface fastethernet 0/0
 Cisco(config-if)# ip policy route-map R-df

 Cisco(config)# route-map R-df permit 10
 Cisco(config-route-map)# match ip address 101
 Cisco(config-route-map)# set ip df 0

 Cisco(config)# access-list 101 permit ip any any


      


 その他、ネットワーク上でGREトンネリングを実装しているルータのTunnelインターフェース上で
 MTU値を1500に上げる手法もありますが、この手法でもルータ上でIPフラグメントが発生します。
 ちなみに、Path MTU Discoveryが有効になっているホストでは一般的に全てのTCP/IPパケットに
 DFビットが立ちます(DF=1)が、例えばPINGのICMP datagramにはIPでDFビットが立っておらず
 WindowsからDFビットを立ててPINGするためには [ -f ] のパラメータをPINGコマンドに必要です。




 ◆ ICMP(type3 code4)メッセージの制限

 Ciscoルータでは、DoS攻撃に対してCPUを保護するために、送信するICMP(type 3 code 4)の
 メッセージを1秒につき2パケット(=500msあたり1パケット)に制限しています。デフォルトで
 Ciscoルータでは [ ip icmp rate-limit unreachable DF 500 ] と定義されています。従いまして、
 1秒につき2パケット以上のICMP(type3 code4)メッセージを出す必要のある環境ではこの値を
 調整するか、以下のように [ no ] で打ち消してICMPメッセージの制限を無効にする事もできます。

 Cisco(config)# no ip icmp rate-limit unreachable DF




 ◆ ICMPのフィルタリング設定について

 Path MTU Discoveryが失敗するのは、一般的にICMPのフィルタリング設定が原因とされています。
 システム管理者は、ICMPフィルタリングをACLなどで実装する時、特定のICMPのメッセージタイプ
 だけのブロックでなく、全てのICMPタイプをブロック(deny icmp any any)する傾向があります。
 ICMPのフィルタリング設定を実装する場合は、Cisco機器では以下のACL101で実装しているように
 最低限 [ code3=unreachable ] [ code11=time-exceed ] は、許可することが推奨とされています。


 Cisco(config)# access-list 101 permit icmp any any unreachable
 Cisco(config)# access-list 101 permit icmp any any time-exceeded
 Cisco(config)# access-list 101 deny icmp any any
 Cisco(config)# access-list 101 permit ip any any





← Path MTU Discovery 1 PPTP / L2F / L2TP →

ネットワークエンジニアとして

Copyright (C) 2002-2019 ネットワークエンジニアとして All Rights Reserved.