BLOGTIMES
2016/01/31

ping で MTU を調べる

  networking  rfc 
このエントリーをはてなブックマークに追加

ルータや VPN で繋がれたネットワーク間の MTU を調べる場合には ping コマンドを使ってパケットの大きさを変えて試すのが手っ取り早かったりするのですが、windows の ping と linux の ping は仕様が異なっているのでそれぞれの違いをメモ。

MTU を調べるためには転送時にパケットが分割(フラグメント化)されてしまうと、正しい値が計測できません。このため、途中のルータにフラグメント化させないために IPヘッダにある DF (Don't Fragment) bit*1 を立てたパケットを飛ばすことが必要になります。このオプションの指定が linux と windows で異なるのです。

linux の場合

以下が linxu の ping の例です。 -M do の部分が DF 指定の部分になります。
DF なのに do とはちょっと変な感じですがこれで間違いありません。-M dont とするとフラグメント化されてしまいます。

$ ping -s 9000 -M do -c 1 10.0.0.1 PING 10.0.0.1 (10.0.0.1) 9000(9028) bytes of data. ping: local error: Message too long, mtu=1500 --- 10.0.0.1 ping statistics --- 1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

windows の場合

以下が windows の ping の例です。 -f の部分が DF 指定の部分になります。linux の ping を知っていると -f は flood ping*2 のことなのでちょっとギョッとしますが、windows では安全なオプションです。

C:\Windows\System32>ping -f -l 9000 -n 1 10.0.0.1 10.0.0.1 に ping を送信しています 9000 バイトのデータ: パケットの断片化が必要ですが、DF が設定されています。 10.0.0.1 の ping 統計: パケット数: 送信 = 1、受信 = 0、損失 = 1 (100% の損失)

トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/8240
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form

コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。

OpenID を使ってログインすることができます。

Identity URL: Yahoo! JAPAN IDでログイン