この警告が伝えるのは、ピア間のオプションの比較であり、両者間の経路の測定ではない。人々はこれを「MTU が間違っている」と読み、行が消えるまで数値を変えてしまう。これは設定の比較をネットワーク測定として扱うことであり、ログを静かにする代わりにトンネルを悪化させることが多い。最初に決めるべきは、その二つの問題のどちらが実際に起きているかである。

答えを決めるのは、ピアが何を比較するのか、その値が旧式かどうか、警告以外にどんな症状があるのかという三つの条件である。

警告が比較するのはオプションであり、パケットではない

OpenVPN のピアはハンドシェイク中にオプション文字列を交換し、オプション整合性チェックの一部として比較する。一方が link-mtu や tun-mtu を他方と異なって報告すると、不一致が両方の値とともに記録される。この交換は大きなパケットを送って結果を見るものではないため、警告が示すのは容量ではなく設定である。トンネルはフルサイズの通信を運びながら警告を出し続けることも、大きなパケットで失敗して何も出さないこともある。

警告はローカル値とリモート値の両方を含めて残す。証拠になるのはその組であり、記憶している単一の数値ではない。

link-mtu が非推奨である理由

OpenVPN 2.6 は、可変ヘッダーとネゴシエーションされる暗号により固定のリンク値が信頼できなくなったため、link-mtu を非推奨にした。このオプションはプロトコルがもはや保証しないパケット配置を前提にしており、link-mtu を文字通り含む古いプロファイルは、現在のコードが満たせない意図を記述している。その数値を新しいプロファイルにコピーすると、古い前提が広がる。これは推奨ではなく、古いプロファイルの履歴の一部として読むべきである。

整合性チェックには tun-mtu に紐づく任意の OCC 値もあり、これはネットワークが運ぶものを変えずに比較対象を変える。設定しても大きなパケットが入るようにはならない。

経路を試す前にプロファイルを直す

意図しない不一致はプロファイルの所有者を通じて直し、サーバー側の変更がすべてのクライアントに影響することを覚えておく。編集するのはインスタンスが実際に読み込むプロファイルであり、ダウンロードフォルダーにある書き出しではない。そのうえでテスト用クライアントを一つ再接続し、どの警告が残るかを記録する。メッセージが消えるのではなく形を変えるなら、思っているのとは別のオプションを比較している。

共有サーバーでは、一つの拠点に合う値が別の拠点を壊すことがあるため、グローバル値を動かす前にクライアント一覧を確認する必要がある。

次に、実際に起きている症状を試す

大きな転送が止まる一方で小さなリクエストが通るなら、制御された宛先に対してパケットサイズを測定する。分割禁止ビットを立ててペイロードサイズを増やすプローブは、単に成功する ping よりはるかに確実に経路の使用可能な MTU を見つける。テストには失敗しているアプリケーションも含めるべきで、ICMP のタイムアウトはフィルタリングを反映していることがあり、小さな ping の成功はフルサイズのアプリケーションパケットについて何も語らない。

mssfix はトンネル内の TCP セッションに対して通知される MSS を制限するが、これは TCP には効くものの内部の UDP ワークロードには何もしない。フラグメンテーションとオフロードの設定には独自の互換条件がある。ログの一行を静めるために複数を同時に変えるのではなく、実証された問題に対して一つの仕組みを選ぶ。

実効値を結果と一緒に残す

実際の転送結果のそばに、元の値と修正後の実効値を記録する。この組が、古いプロファイルのオプションと、独立して存在する経路 MTU 問題を切り分ける。これがなければ、次の読み手は消えた警告を見てネットワークが変わったと推測する。

整合性チェックを抑止しても何も解決しない。観測を取り除き、両方の設定をそのまま残すだけである。

関連記事