如何避免 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

首先:我並不是想擊敗所討論的作業系統指紋識別這裡或有關超級用戶的其他問題。我在整個鏈/堆疊中使用 Linux,並且不介意被識別為 Linux。

背景: 由於審查制度,我在另一個國家訪問互聯網。我在兩個不同的住宅地點(不同的 ISP)有兩個相同的 Raspberry PI(型號 3B+,克隆的 SD 卡,僅修改了 IP 以在各自的 LAN 中工作)。我獨立使用它們,它們作為訪問互聯網的住宅代理。

流量透過 SSH 隧道透過 PI 進行路由。這些 SSH 隧道本身透過代理伺服器(對於兩個 PI 來說都是相同的)透過加密的 Socks5 隧道進行隧道傳輸,以隱藏它們免受本地國內審查/IP 封鎖。

到目前為止這有效。

問題: 當我運行測試時https://browserleaks.com/iphttps://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 的設定相同,我錯過了什麼?

PS:標題可能不太理想,但我不知道如何用幾句話來描述問題

答案1

PI A 和 PI B 中配置的 MTU 1500 是乙太網路封包的預設 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 運行一次。

另請注意,在 IPv6 上封包無法拆分。

相關內容