パンダのメモ帳

技術系のネタをゆるゆると

CentOS 5.5 で MTU の値を変更する

CentOS 5.5 で MTU(Maximum Transmission Unit)を変更する方法について

一時的、または即座に変更したい場合

次のコマンドを実行する。

[root@localhost ~]# ifconfig <インターフェース名> mtu <MTU値>

eth0 のMTU値を 1454 に変更したい場合は次の通り。

[root@localhost ~]# ifconfig eth0 mtu 1454

これで即座にMTU値が変更されるが、OSまたはネットワークの再起動を行った場合、デフォルト値に戻ってしまう。恒久的に変更したい場合は次の手順を踏む必要がある。

恒久的に変更したい場合

ネットワークインターフェースの設定ファイル(初期化スクリプト)に次の1行を加える。ただし、この方法では即座に反映されるわけではないので、すぐに変更したい場合は前述の ifconfig コマンドによる方法と併用する必要がある。

MTU=<MTU値>

eth0 のMTU値を 1454 に変更したい場合は次の通り。

MTU=1454

設定ファイルの場所は

/etc/sysconfig/network-scripts/ifcfg-<インターフェース名>

なので、eth0 の場合は

/etc/sysconfig/network-scripts/ifcfg-eth0

となる。

なぜMTU値を変更するのか?

CentOS 5.5 の場合、MTU値のデフォルトは 1500。この値はイーサネットに最適な値とされており、最近のブロードバンド環境においてもこの値であまり問題ないとされている。……が、先日 Postfix で特定のホストからのメールのみ受信できないという問題が発生した。ログを確認すると次のようなエラーメッセージが確認された。

timeout after DATA from foo.example.com[xxx.xx.xx.xxx]

調べてみると、メールのヘッダ+本文が一定のサイズ以上になった場合に同メッセージを吐いて受信に失敗している模様。そこでぐぐってみると以下のようなスレッドを発見した。

スレッドを追ってみると、どうやらMTU値が適正に設定されていないのでは?ということでさらに調べてみると次のページを発見。

利用しているネットワークがBフレッツの場合、どうやらMTU値は 1454 に設定するべし、ということらしい。そこで今回紹介した手順でMTU値を変更してみたところ、無事にメールが受信できたというわけだ。
同じような問題に困っているネットワーク管理者の人はぜひ試してみて欲しい。