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

首先:我并不是想破解操作系统指纹识别技术这里或者在 SuperUser 上的其他问题中。我在整个链/堆栈中使用 Linux,并不介意被这样识别。

背景: 由于审查制度,我在另一个国家/地区访问互联网。我在两个不同的住宅地点(不同的 ISP)拥有两台相同的 Raspberry PI(型号 3B+、克隆的 SD 卡,仅修改了 IP 以在各自的 LAN 中工作)。我彼此独立地使用它们,它们充当住宅代理来访问互联网。

流量通过 SSH 隧道路由到 PI。这些 SSH 隧道本身通过代理服务器通过加密的 Socks5 隧道传输(两个 PI 都一样),以隐藏它们免受本地国内审查/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 上的数据包不能被拆分。

相关内容