TCP/IP フィンガープリンティングを回避する方法

TCP/IP フィンガープリンティングを回避する方法

次のような設定になっています:

 +-----------+   SSH Tunnels Over Socks5 Proxy    +--------------+
 |           |                                    |              |
 | Linux PC  +------------------------------------+ Proxy Server |
 |           |                                    |              |
 +-----------+                                    +--------------+
                                                          |
                                                          | SSH Tunnels
                                             +-------------------------+
                                             |                         |
                                             |                         |
                                       +-----------+             +-----------+
                                       |           |             |           |
                                       |   PI A    |             |   PI B    |
                                       |           |             |           |
                                       +-----------+             +-----------+
                                             |                          |
                                             |  WAN / Internet          |  WAN / Internet
                                             |                          |
                                             v                          v

まず最初に:私はOSフィンガープリンティングを阻止しようとしているわけではないここまたは SuperUser の他の質問で。私はチェーン/スタック全体に Linux を使用しており、そのように識別されることを気にしません。

背景: 検閲のため、私は別の国でインターネットにアクセスしています。私は 2 台の同一の Raspberry PI (モデル 3B+、クローン SD カード、それぞれの LAN で動作するように IP のみを変更) を 2 台の別々の居住地 (異なる ISP) に所有しています。私はそれらを互いに独立して使用し、インターネットにアクセスするための居住地プロキシとして機能しています。

トラフィックは、SSH トンネル経由で PI にルーティングされます。これらの SSH トンネル自体は、プロキシ サーバー (両方の PI で同じ) を介して暗号化された Socks5 トンネルにトンネリングされ、国内の検閲や IP ブロックから隠されます。

今のところはうまくいっています。

問題: テストを実行するとhttps://browserleaks.com/ipそしてhttps://doileak.com「PI A」と「PI B」では結果が異なります。

「PI A」の場合、MTU 1500 と接続タイプ「イーサネットまたはモデム」が取得されますが、「PI B」の場合、MTU 1440 と接続タイプ「汎用トンネルまたは VPN」が取得されます。

プロキシであるという事実を隠すために、両方を「イーサネットまたはモデム」の接続タイプとして識別したいと考えています。私の調査によると、これらのテストは p0f による TCP/IP フィンガープリントを使用しているようです。

両方の PI のインターフェースは MTU 1500 に設定されており、iptables 構成も同一です。これらは同じハードウェアを備えており、「PI B」の SD カードは基本的に「PI A」のクローンです。両方の PI は、イーサネット経由でそれぞれのルーターに直接接続されています。また、Linux PC とプロキシ サーバーの MTU は 1500 に設定されています (ただし、私の記憶が間違っていなければ、違いはありません)。

PI が同じように設定されているという事実を考えると、何が欠けているのでしょうか?

追記:タイトルはおそらく理想的ではないと思いますが、問題を数語で説明する方法がわかりません。

答え1

PI AとPI Bで設定された1500のMTUは、イーサネットパケットのデフォルトのMTUです。このMTUはのみ最初のルーター(所有するインターネット ルーター)と PI の間。

PI が接続されているルータ (ルータ A) は、次のルータ (ルータ B) に接続されます。次に、ルータ B は別のルータ (ルータ C) に接続されます。以下同様に続きます。このルートは、宛先 (たとえば、browserleaks.com のサーバー) で終了します。このルートは、地理的な場所によって異なり、多少ランダムです。また、時間の経過とともに変化します。

ルータAとルータB間のMTUはおそらく1500以上ですが、これは保証されません。1500より小さい場合は、パケットは分割されます。ここまた、browserleaks.com では小さい MTU が表示されます。

結論:

browserleaks.comはサポートされている最大MTUを表示します全ルートクライアントからサーバーへ。

PI A と PI B は異なるルートを取る可能性が高いため、異なる MTU を取得するのは正常です。

異なるルートを使用していることを確認するには、次のコマンドを実行します (Linux PC で):

traceroute browserleaks.com

これにより、ユーザーとサーバー (およびサーバー) 間のすべてのルーターが一覧表示されます。各 PI に対して 1 回実行します。

また、IPv6 ではパケットを分割できないことに注意してください。

関連情報