ノート PC をルーターに仕立てるのは、間違った問題を解く定番のやり方です。転送は、宛先が自分ではないパケットをマシンが受け渡せるように存在するもので、同じマシン上のブラウザがどれだけ速くページを読み込むかには何の意見も持ちません。二つの経路が似て見えるのは、どちらも一つのトンネルにトラフィックを流すからにすぎません。一度切り分ければ、転送を有効にする話やファイアウォールを開ける話の多くが、手元にない構成を説明していると分かります。

机の前からは同じに見える二つのパケット経路

ノート PC のブラウザは自分でリクエストを作ります。ホストがトンネルの経路を選び、クライアントのプロセスがパケットを包んで相手に送り、応答がアプリケーションに戻ります。この流れのどこにも転送の判断は挟まりません。このマシンが会話の送信元でもあり宛先でもあるからです。

次に、意図的に設定した Ethernet セグメントへ別の機器を置き、ノート PC をその既定ゲートウェイにします。その機器がリクエストを起こし、ノート PC は別の宛先を持つパケットを受け取り、カーネルが先へ渡すかどうかを決めなければなりません。これが転送の役割で、クライアントの役割には決して要らなかった前提が付いてきます。許可された通過経路、両側のルート、そして変換が設計の一部なら今も機能する戻り経路です。

RoleWho originates the trafficWhat has to be true
Client onlyThe laptop itselfTunnel route, working resolver, supported profile
GatewayAnother deviceForwarding enabled, permitted transit, routes both ways, return-path decision

ip_forward が実際に変えるもの

カーネルの IPv4 sysctl の文書は、ip_forward をホストがインターフェース間でパケットを転送できるようにするスイッチとして説明しています。ホスト自身が作ったトラフィックのための近道ではなく、このパラメータをどう読んでもローカルのブラウザは速くなりません。むしろ転送は、以前より少ない仕事しかしていなかったマシンに状態とポリシーを足します。

同じ文書は、値を変えると他の IPv4 パラメータがホストやルーターの既定値に戻ると警告しています。つまりこのスイッチは試験ではなく設定上の出来事です。調整した設定が足元で巻き戻ることがあり、その変更が、誰も結び付けようと思わない回帰の原因になり得ます。また、スイッチはゲートウェイの役割を持つ人が一度だけ意図的に設定すべきだという意味でもあります。速度低下の調査中にこれを切り替えるのは、副作用が症状と取り違えられると保証されている唯一の場面です。

同じ問いではない三つのファイアウォールの問い

VPN の待ち受けを許可すること、ノート PC が動かすサービスを許可すること、トラフィックがノート PC を通ることを許可することは、三つの別々の許可です。一つ目は相手がデーモンに届くことを許し、二つ目はローカルの何かを露出させ、三つ目はマシンを他人の通過点に変えます。それぞれ範囲が違い、最後のものは普通の外向きアプリが必要とする応答よりはるかに広いものです。

特定のフローが遮断されているときは、ルールを編集する前にその送信元、宛先、方向、ポリシーの持ち主を名指ししてください。そのフローに狭いルールを置くのは修正です。トンネルのインターフェースですべてを受け入れるのは、たまたま修正を含むポリシー変更です。その後で動くブラウザはフローが動くことを示すだけで、広いルールが必要だったことの証拠にはなりません。

経路が正しくなってから測る

同じ宛先、同じ作業量、比較できる条件で測り、一度に一つの変数だけを変えます。転送の変更、ファイアウォールの拡大、コピーした暗号設定をまとめて試すと、数字は出ても説明は出ません。三つのうちどれが結果を動かしたのかを何も語らないからです。

経路とリゾルバの失敗は性能の話から完全に外してください。解決に時間がかかる名前はスループットの問題ではなく、一定のサイズで止まる転送はふつう速度制限ではなく MTU の話です。数字を比べる前に、この三つのどれを実際に見たのかを書き留めてください。そうしないと次の読み手は、間違ったものを測る計測と、誰も正当化できない変更を引き継ぎます。

クライアントのラベルではなく、手元にある構成を説明する

接続を共有するノート PC、ルーティングされたコンテナネットワークを載せるノート PC、仮想マシンのトラフィックを運ぶノート PC は、ソフトウェアが何と名乗っていてもゲートウェイです。クライアントという言葉はトンネルがどう設定されているかを述べるもので、パケットが他人に渡るかどうかではありません。

運用手順で役割を明示してください。何がトラフィックを生み、何がマシンを通らなければならず、今の作業がそのどちらについてなのかを書きます。対応するプランに属するときだけゲートウェイの役割を有効にし、必要になったことのない構成に説明のない速度調整として適用しないでください。

関連記事