找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2544

积分

0

好友

350

主题
发表于 3 天前 | 查看: 8| 回复: 0

(给和我一样被网络问题折磨过的人)

今天调试项目的时候,又一次被网络问题搞崩了。

AI一会儿让我开TUN,一会儿让我改规则,有时候TUN一开,原来能用的反而不能用了,整个过程充满“玄学感”。后来我意识到一件事:不是网络玄学,是我没真正搞懂它。

所以干脆系统学了一遍,下面用大白话把我理解到的东西完整讲一遍。

一、不开TUN:我们平时说的「普通代理」到底在干嘛?

先从最常见的情况说起。

1️⃣ 梯子、节点、Clash都是啥?

当你花钱买了一个梯子之后,通常会看到:

  • 🇺🇸 美国节点
  • 🇯🇵 日本节点
  • 🇸🇬 新加坡节点

这些节点,本质就是“在国外的一台台服务器”。

而像Clash、Clash Verge、Clash Meta这些软件,本质作用只有一个:帮你管理这些国外服务器,并决定什么时候用哪一台。

2️⃣ 开启「系统代理」后,浏览器访问Google发生了什么?

假设你在Clash里开启了系统代理,然后在浏览器里输入:

https://www.google.com

真实流程是这样的:

  1. 浏览器发起请求
  2. 发现系统开启了代理
  3. 把“访问Google的请求”交给Clash处理
  4. Clash根据你设定的规则选择一个节点(比如日本)
  5. 请求被转发到“日本的那台服务器”
  6. 日本服务器代替你去访问Google
  7. Google将页面内容返回给日本服务器
  8. 日本服务器 → Clash → 你的浏览器
  9. 浏览器渲染页面,你看到Google首页

关键点在于:你看到的Google首页,并不是你这台电脑直接访问到的,而是“日本那台服务器替你访问并转发回来的结果”。

3️⃣ 一个关键点:节点能看到我访问的内容吗?

分情况看:

  • 如果是HTTPS(绝大多数网站):浏览器 ↔ Google网站之间是端到端加密的。节点服务器只能像邮差一样转发加密的数据包,但无法解密,看不懂具体内容。
  • 节点最多能知道:你访问了哪个域名、数据量大小、连接时间。

所以不必过度恐慌“节点能看到我浏览的页面内容吗?”这个问题。在正常的HTTPS加密通信下,它们是看不到的。

二、普通系统代理的一个巨大缺点

看到这里,一切都显得很美好,直到你发现一个尴尬的事实:浏览器能科学上网,但很多桌面App、Node.js程序、命令行工具(如curl)却不行。

这是为什么?

核心原因在于:系统代理,本质只是一个“接口规范”或“建议”,而非强制规则

可以这样理解:

  • 浏览器 👉 听话的好学生,主动实现了系统代理这个接口。
  • 大多数桌面App / Node程序 👉 我行我素,根本没实现这个接口。

所以:

  • 浏览器会主动去问系统:「我这个请求要不要走代理?」
  • 大多数App则直接说:「我按IP直接连,不问任何人。」

这就是为什么你会遇到:浏览器能上Google,但Node请求外网API超时,某些特定App死活连不上其海外服务的根本原因。

三、那如果我想「所有程序都能走代理」怎么办?

答案就是:开启TUN模式

四、TUN模式:为什么它这么“猛”,也这么容易出问题?

用一句话理解TUN:TUN = 在操作系统底层,插入了一张“虚拟网卡”

当开启TUN后,数据流变成了这样:

所有网络程序 → 操作系统网络栈 → 虚拟网卡(TUN驱动接管) → Clash → 节点 / 直连

这时候,无论是浏览器、Node.js应用、桌面App、Docker容器还是curl命令,一个都跑不掉。它们的网络流量在IP层就被TUN虚拟网卡截获了,谁都没资格说「我不想走代理」。

这也是为什么:

  • TUN一开,Node / App / 命令行突然全能科学上网了。
  • 但同时,副作用也来了:原来能访问的内网服务(如localhost:8080192.168.1.x)可能不行了,局域网传输异常,甚至偶发上传/下载卡死,网络行为变得“不可预测”。

👉 结论:TUN模式能力很强(全局强制代理),但因其工作在更底层网络/系统,副作用和复杂性也最大,容易引发“玄学”问题。

五、Clash里的「规则 / 全局 / 直连」到底是什么意思?

这个地方,很多人是凭感觉在点的。我们来理清楚:

  1. 规则(Rule)模式

    • 做什么:严格按你配置的规则列表来决策。
    • 例如DOMAIN-SUFFIX,google.com,Proxy(Google走代理),GEOIP,CN,DIRECT(国内IP直连)。
    • 特点:最智能、最节省流量、对国内服务最友好。这是最推荐、最理性的长期使用模式。
  2. 全局(Global)模式

    • 做什么:不管访问什么目标,全部流量都走代理。
    • 适合场景:临时排查问题,快速确认“某个连不上的问题是不是网络导致的”。
    • 特点:简单粗暴,但访问国内网站也会绕道国外,速度慢、浪费流量。不适合长期使用。
  3. 直连(Direct)模式

    • 做什么:所有流量完全不走代理,直接连接。
    • 可以理解为:👉 「我现在暂时关掉梯子,用本地网络」

六、一句话把所有内容串起来

以后你只需要记住这几句话,就能理清思路:

  • 系统代理:浏览器愿意听,其他程序不一定听。
  • TUN模式:在系统底层拦截,谁都得听,但容易“误伤”。
  • 不开TUN:稳定、可控、适合大多数开发和日常浏览场景。
  • 开TUN:省心(全局代理)但容易制造新的“玄学问题”。
  • 规则模式:长期最优解,智能分流,兼顾速度与功能。

七、写在最后

以前我也觉得,网络问题就是玄学,全靠重启和运气。但现在我发现,根本问题在于我们不知道“控制权在哪一层”。

一旦你清楚了:是应用程序自己在决定、是操作系统代理接口在决定、还是更底层的IP协议栈在决定,那么很多曾经“莫名其妙”的网络故障,都会变成可解释、可定位、可解决的技术问题。




上一篇:基于Sliver C2框架的实战:从源码二次开发到Web化指挥中心
下一篇:基于小脚丫FPGA与高速DAC的实验室级信号源DIY实战
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-24 04:07 , Processed in 0.442534 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表