ログにipfw: pullup failedが出力される理由

3、4年使っているNECのルータ(Aterm)が壊れました。H/Wなんていつか壊れるものですが、ちょっとショックです。
仕方がないので、以前ちょっとだけ使っていたリンクシス(今はCiscoに吸収されてます)のルータを引っ張り出してきました。

これ↓
BEFSR41C-JP V3

今はもう売っていませんが、SNMPが使えたり、VPNが使えたりと5千円弱の価格では想像できないくらい高機能です。無線LANが付いてないところが惜しいです。

で、ゼロからセットアップしていたのですが、Ciscoルータみたいに当然コンフィグ流し込んで完了〜!とはいかず、地味に苦労しました。
まず、なんとなくおかしいなぁと思い始めたきっかけが、ニコ動とかtwitter.comとかradiko.jpへの接続ができない or 異常に遅いんです。我が家は最近、フレッツ光プレミアムから光ネクストに回線変更したんですが、それから何となくおかしい感じもしていました。

ipfwのログ

そしてさらに我が家のFreeBSDサーバのmessagesに変なログ。

ipfw: pullup failed

ググってみるとipfwのマニュアルが出てきました。

+o フラグメント化されたデータグラムが無条件で破棄される状況があります。
TCP パケットは、最低 20 バイトの TCP ヘッダを含まない場合、破棄されま
す。 UDP パケットは、完全な 8 バイトの UDP ヘッダを含まない場合、破棄
されます。 ICMP パケットは、4 バイトの ICMP ヘッダ、すなわち ICMP タ
イプとコードとチェックサムを含まない場合、破棄されます。これらのパ
ケットは、単に ``pullup failed'' としてログされます。何故なら、パケッ
ト中に有意なログエントリを生成するだけの有用なデータが含まれないかも
しれないためです。

フラグメントされているパケットでTCPUDPとして成り立っていないデータを受け取るとipfwから出てくるメッセージらしいのです。

クライアントPCからWiresharkでキャプチャしてみてみると、確かにフラグメントされてます。

原因はMTU

で、思い当たったのがMTU。光プレミアムから光ネクストへの変更でMTUが変わっている可能性があります。さっそく調べてみると、NTT公式でこんなページがありました。

Q.フレッツ 光ネクストを利用する際のMTU値は?
A.フレッツ 光ネクストのMTU値は「1,454バイト」です。
MTU値については、パソコン等のMTU値を1,454バイト以下に設定する必要があります。MTU値を1,454バイト以下に設定されていない場合はWebサイトが閲覧できなくなることがあります。
(参考:フレッツ・光プレミアムのMTU値は1,438バイト、Bフレッツフレッツ・ADSLのMTU値は1,454バイトとなります)
http://www.nttwest-fc.com/faq/faqdet.php?faq_code=1511

ということで、ルータでMTUの設定を固定にしてやればうまく接続できるようになりました。ちゃんちゃん。

ちなみに、MTUを変えてからスピード測定サイトでスループットを測ってみると、激速になりました。光ネクストは200Mbps対応なので、1Gbps対応のルータを使えばさらに速くなるはず。

今のままでは無線も使えないし週末はルータ買いに行くかね。。。あー最近出費が酷い・・・。