Windows TIPS
[Network]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

ネットワークのMTUサイズを変更する

解説をスキップして操作方法を読む

デジタルアドバンテージ 打越 浩幸
2006/10/07
   
ネットワークで送信可能なパケットの最大サイズをMTUという。IPパケットのサイズがMTUサイズを超えるとパケットの分割処理が行われる。これをIPフラグメンテーションという。
フラグメントしたIPパケットはファイアウォールでブロックされることがある。その結果、サイトによってWebページが見られなくなったり、接続不能になったりするトラブルが生じる可能性がある。
このような場合は、ネットワーク・インターフェイスのMTUを変更して、フラグメントが起こらないようにすればよい。
 
解説

 TIPS「pingでMTUサイズを調査する」では、MTUのサイズとは何か、pingコマンドを使ってネットワークのMTUサイズを調査する方法について説明した。MTUサイズとは、ネットワーク上で送信可能なパケットの最大サイズのことであり、具体的には、IPフラグメントなしに送信できるパケットの最大サイズのことである。例えばイーサネットの最大フレーム(パケット)サイズ(MTU)は1500bytesなので、フラグメントを起こさずに送信できるIPパケットの最大サイズは1500bytesとなる(これはIPヘッダを含むサイズ。実際に送信可能なIPパケットのデータ部分のサイズはもっと小さくなる)。

 このMTUサイズを超える大きなIPパケットを送信したい場合は、1つのIPパケットを複数のIPパケットに分割する「IPフラグメンテーション」が行われる。だがフラグメンテーションは、ネットワークの攻撃に利用されることもあるので(フラグメントが必要な大きなサイズのパケットを送りつけ、受信側のネットワーク処理部分に負荷をかける攻撃)、フラグメント化されたIPパケットの受信を禁止されている組織も少なくない(そのようなIPパケットを受信しても、ファイアウォールで破棄する)。その結果、サイトによっては、例えばWebページがうまく表示されなくなったり、データ転送やメールの送受信がうまくできなくなったりすることがある。

 このような事態を防ぐため、MTUがイーサネットの標準サイズでないネットワークを利用している場合は、ネットワーク・インターフェイスのMTUサイズを変更して、フラグメントなしで通信できるようにする必要がある。例えばBフレッツのようなPPPoEネットワークを利用している場合、PPPoEのヘッダの分だけ、イーサネットのMTUよりも小さくなるので、それを補正する。具体的には、MTUを1500(イーサネットのデフォルト値)ではなく、1454にする(実際には、さらにその先のネットワークでMTUが制限されている場合があるかもしれないので、必要ならば前出のTIPSの方法でMTUサイズを算出し、それに合わせること)。

 もっともすべての環境でこのような設定変更が必要になるわけではない。例えば、Windows OSを利用しているコンピュータから直接PPPoEでインターネットに接続している場合、接続ツールの初期設定や、ネットワーク接続時の自動ネゴシエーションで、最適なMTU値がそのネットワーク・インターフェイスに設定されるからだ(MTUは、インターフェイスごとに設定する)。

 だが、ブロードバンド・ルータを介してインターネットに接続している場合(特に固定IPアドレスのサービスを利用し、NATNAPTなしで運用している場合)、コンピュータ自身には(PPPoEのための設定作業を)何も行わないので、MTUはデフォルトの1500のままとなる。コンピュータから見れば単にイーサネットで相互に接続しているのと何も違いはないからだ。その結果、コンピュータはMTUが1500だと想定してパケットを送信するが、ブロードバンド・ルータがインターネットへパケットをフォワードする場合には、実際のMTUに合わせてフラグメンテーションが行われてしまう。このような、意図しないフラグメンテーションが行われるのを防ぐためには、ブロードバンド・ルータに接続しているインターフェイス(Windows OSでいえば「ローカル接続」などと名付けられているインターフェイスのこと)のMTUを最初から1454に制限しておけばよい(ルータに接続していないネットワーク・インターフェイスでは特にMTUを制限する必要はない)。

 Windows OSでMTUサイズを変更するには、該当するネットワーク・インターフェイスに対するレジストリを操作する必要がある。対象となるレジストリは、以下の情報などを参照していただきたい。Windows 2000、Windows XP、Windows Server 2003のいずれでも同じレジストリを操作する。

操作方法

 ネットワーク・インターフェイスのMTUを(イーサネットのデフォルトの1500から)1454などに変更するには、以下のレジストリを変更する。

項目 内容
キー HKEY_LOCAL_MACHINEの \SYSTEM\CurrentControlSet\Services\Tcpip\Parametersの下にある \Interfaces\interfaceGUID
値の名前 MTU(デフォルトでは存在していないので、新規作成する)
REG_DWORD
値の内容 設定したいMTUサイズ値(例えば1545にする)。 (値が存在しないときの)デフォルト値は0xFFFFFFFFFであり、これはネットワーク媒体ごとのデフォルト値を利用することを意味する。例えばイーサネットなら1500(0x000005DC)となる

MTUサイズの設定

MTUサイズはネットワーク・インターフェイスごとに設定する。そのため、レジストリのキーもインターフェイスごとに分かれているので、関係ないインターフェイスのレジストリを変更しないように注意する。「interfaceGUID」は、実際にはインターフェイスを表すGUID文字列である。

 MTUサイズはネットワーク・インターフェイスごとに設定する。そのため、レジストリのキーもインターフェイスごとに分かれている。表中の「interfaceGUID」は、実際にはネットワークを識別するためのGUID文字列であり、システムごとに異なっているので、実際のシステムで確認の上、正しいインターフェイスでのみ変更する。

MTUサイズの変更
インターフェイスごとのレジストリ・キーの下に、MTUというエントリを新規作成し、値を設定する。
  システムに装着されているネットワーク・インターフェイス(仮想インターフェイスやループバック・インターフェイスなども含む)ごとにサブ・キーが存在する。
  MTU設定の対象となるインターフェイス。
  変更対象のインターフェイスは、このIPアドレス情報などを参考にして見つける。
  DWORD型のMTUという名前の値を作成する。
  新しいMTUサイズ値。この例では1454にしている。
  追加した、メモ用の文字列。何をどのように変更したのかを、元のキーのそばに書いておくと後で便利である(もちろんこれは必須ではないし、システムがこの情報を利用することもない。単に管理者用のメモに過ぎない)。

 以上の値を設定後、システムを再起動すれば、MTUサイズが変更されているはずである。TIPS「pingでMTUサイズを調査する」の方法で、MTUサイズを確認しておこう(pingする相手は、MTUを変更したインターフェイスが接続されているルータにすること)。End of Article

関連記事(Windows Server Insider)
Windows TIPS:pingでMTUサイズを調査する
Windows TIPS:Windows OSのTCP/IP設定をリセットする
基礎から学ぶWindowsネットワーク第10回「IPパケットの構造とIPフラグメンテーション」
 
関連リンク
ネットワークの設定は正しいか?(@IT/Master of IP Network)
Windows XP/Windows Server 2003 TCP/IP 実装詳細(マイクロソフトTechnet)
Windows 2000 TCP/IP 実装詳細(マイクロソフトTechnet)
Windows NT および Windows 2000 での TCP/IP および NBT の設定(マイクロソフト サポート技術情報)
 
この記事と関連性の高い別のWindows TIPS
pingでMTUサイズを調査する
Windows XPのファイアウォール機能を活用する
pingでネットワークの速度を調査する
Windows OSのTCP/IP設定をリセットする
ネットワークのルーティングは双方向で設定する
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「Windows TIPS」

TechTargetジャパン

Windows Server Insider フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH