CentOS 5.5 で MTU の値を変更する
CentOS 5.5 で MTU(Maximum Transmission Unit)を変更する方法について
MTUとは?
一時的、または即座に変更したい場合
次のコマンドを実行する。
[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値を変更してみたところ、無事にメールが受信できたというわけだ。
同じような問題に困っているネットワーク管理者の人はぜひ試してみて欲しい。