平时我们经常会说“开 VPN”“开代理”“开 Clash”“开 TUN”,但这些概念实际上位于完全不同的网络层。
如果只是记住软件怎么点,一旦遇到 DNS 错误、系统代理失效、IPv6 异常、某个网站无法访问,往往就不知道问题究竟发生在哪里。
理解代理最好的方式,不是从 Clash 开始,而是从一次最普通的网页访问开始。
一次普通的网页访问发生了什么
假设在浏览器中输入:
https://chatgpt.com一个高度简化的访问过程是:
输入 chatgpt.com
↓
DNS 查询域名对应的 IP
↓
得到目标服务器 IP
↓
Mac 建立网络连接
↓
Wi-Fi
↓
路由器
↓
ISP
↓
Internet
↓
目标服务器例如:
Mac
→ Wi-Fi Router
→ ISP
→ Internet
→ ChatGPT其中 ISP 是:
Internet Service Provider也就是互联网服务提供商。
家庭宽带、移动网络最终都需要通过 ISP 接入互联网。
DNS:互联网的通讯录
DNS 全称:
Domain Name System计算机最终依赖 IP 地址通信,但人更习惯使用:
google.com
github.com
chatgpt.com因此需要 DNS 把:
chatgpt.com转换成某个 IP:
chatgpt.com
↓
104.x.x.x可以把 DNS 理解成手机通讯录:
张三
↓
138xxxxxxxx域名是人容易记住的名字,IP 才是真正用于网络路由的地址。
DNS 因此是整个互联网访问链路中非常靠前的一环。
如果 DNS 已经出现问题,即使后面的代理服务器完全正常,网站仍然可能无法访问。
IP 地址是什么
互联网中的设备需要地址。
IPv4 地址看起来类似:
8.8.8.8
192.168.1.1
104.18.32.47IPv4 使用 32 bit。
由于 IPv4 地址数量有限,后来又设计了 IPv6。
IPv6 看起来类似:
2606:4700:4700::1111现代设备通常同时支持 IPv4 和 IPv6。
因此访问网站时可能存在两条不同的网络路径:
IPv4以及:
IPv6这也解释了为什么有时一个网站会出现:
IPv4 正常
IPv6 超时最终表现为网页加载很慢甚至失败。
VPN 改变了什么
正常访问:
Mac
→ Router
→ ISP
→ Website使用 VPN 之后:
Mac
→ Router
→ ISP
→ VPN Server
→ Website最关键的变化就是:
VPN Server变成了新的互联网出口。
例如人在亚洲,连接日本 VPN:
Mac
↓
本地 ISP
↓
日本 VPN Server
↓
ChatGPT目标网站看到的主要出口 IP 通常会变成日本 VPN 服务器的公网 IP。
需要注意的是:
VPN 并不会绕过 ISP。
物理网络仍然是:
Mac
→ Router
→ ISP只是 ISP 后面的目标不再直接是网站,而是 VPN Server。
VPN Tunnel:VPN 隧道
VPN 通常会在:
Mac
↔
VPN Server之间建立加密隧道。
可以理解成:
原始网络数据
↓
加密
↓
封装进入 VPN Tunnel
↓
ISP
↓
VPN Server
↓
解密
↓
Internet因此 ISP 通常能够知道:
你正在连接某个 VPN Server但不能像普通直连那样直接看到每一条目标连接。
当然,具体可见范围还取决于:
- VPN 协议
- DNS 配置
- TLS
- IPv6
- 是否存在 DNS Leak
- 操作系统实现
DNS Leak 是什么
理想情况下:
DNS
↓
VPN Tunnel
↓
远端 DNS但如果配置不正确,可能出现:
网页流量
→ VPN
DNS 查询
→ 本地 ISP例如:
chatgpt.com 的网页连接
→ VPN Server
chatgpt.com 的 DNS 查询
→ ISP DNS这种现象叫:
DNS Leak即 DNS 泄漏。
Proxy:代理是什么
代理和 VPN 的思想有相似之处:
你
→ 中间服务器
→ 网站正常:
Mac
→ Website代理:
Mac
→ Proxy Server
→ Website代理服务器代替客户端建立后续连接。
因此目标网站主要看到的是:
Proxy Server IPClash Verge 是什么
Clash Verge 本身并不是远端代理服务器。
更准确地说,它是一个本地代理和流量调度工具。
核心逻辑类似:
网络连接进入 Clash
↓
识别目标
↓
匹配规则
↓
决定 DIRECT 或 Proxy
↓
选择节点
↓
转发例如:
baidu.com
→ DIRECT
chatgpt.com
→ Proxy
youtube.com
→ Proxy
192.168.1.1
→ DIRECT现代 Clash Verge Rev 通常使用 Mihomo 作为核心网络引擎。
可以粗略理解为:
Clash Verge
=
控制面板
Mihomo
=
网络处理引擎节点是什么
Clash 中常见:
香港 01
日本 02
美国 LA
新加坡 03这些通常代表一个代理出口。
例如:
Mac
→ 日本节点
→ Internet节点背后可能使用不同的代理协议,比如:
Shadowsocks
VMess
VLESS
Trojan
Hysteria2
TUIC节点回答的是:
连接哪台服务器协议回答的是:
用什么方式连接这台服务器DIRECT 和 Proxy
Clash 最核心的两个结果之一是:
DIRECT意思是:
不经过代理服务器例如:
淘宝
↓
DIRECT
↓
本地 ISP而:
Proxy意味着:
通过代理节点访问例如:
ChatGPT
↓
Clash
↓
日本节点
↓
ChatGPT为什么需要分流
如果所有流量都走海外代理:
淘宝
→ 日本
→ 中国大陆显然非常绕。
所以 Clash 的优势之一就是能够按照规则分流。
例如:
国内网站
→ DIRECT
海外网站
→ Proxy
局域网
→ DIRECT这也是 Rule 模式存在的意义。
Rule、Global 和 Direct
Clash 常见三个运行模式。
Rule
根据规则判断。
Google
→ Proxy
ChatGPT
→ Proxy
淘宝
→ DIRECT这是最适合日常使用的模式。
Rule规则:根据规则列表中的正则表达式,判断当前访问网站是否符合某一条规则,如果符合这一条规则,那么根据规则走代理还是直连还是某个自动测速代理组
Global
所有网络连接都走同一个代理策略。
所有流量
↓
ProxyGlobal 的价值除了使用本身,还在于故障排查。
例如:
Rule 模式:
ChatGPT 打不开
Global 模式:
ChatGPT 可以打开那么说明:
节点大概率正常
TUN 大概率正常问题更可能在:
RuleDirect
所有流量直接连接:
所有流量
↓
DIRECTProxy Group:策略组
很多配置中会看到:
节点选择
AI
Google
Streaming
自动选择这些通常不是服务器,而是:
Proxy Group例如:
AI
├── Japan 01
├── US 01
├── Singapore 01
└── Hong Kong 01规则可能写:
chatgpt.com
→ AI而 AI 当前选择:
US 01因此最终路径:
chatgpt.com
↓
AI
↓
US 01
↓
Internet这使配置更加灵活。
Proxy Group代理策略组:将多个具有相同特征或目的的代理节点(服务器)组合在一起的集合
自动测速策略组:(在 Clash 等工具中通常被称为 url-test 组)是网络代理工具中一种纯自动化的节点调度机制。简单来说,它就像一个**“全自动网络测速裁判”**。你只需要把一堆代理节点(一个代理组)丢给它,它就会在后台悄悄地帮你给所有节点考试,谁延迟最低,它就自动把你的网络流量分给谁,只需要设置测速间隔和最小容忍延迟,全程不需要你手动去测速和切换。缺点就是经常变ip,容易触发风控
System Proxy:系统代理
这是理解 Clash 的关键。
Clash 启动以后,可以在本机监听一个代理端口,例如:
127.0.0.1:7890其中:
127.0.0.1代表:
localhost也就是当前电脑自己。
而:
7890是端口。
Port:端口
可以把 IP 理解成:
一栋大楼的地址端口就是:
楼里面的房间号例如:
127.0.0.1:7890意思是:
本机
↓
7890 端口不同软件可以监听不同端口:
SSH → 22
HTTP → 80
HTTPS → 443
MySQL → 3306
Clash → 7890System Proxy 怎么工作
打开 System Proxy 后,macOS 会告诉支持系统代理的应用:
访问互联网时
请先把流量交给:
127.0.0.1:7890于是:
Chrome
↓
System Proxy
↓
Clash
↓
Proxy Server
↓
Website问题是:
应用需要支持并遵守系统代理。
一些软件可能不会使用 macOS System Proxy。
例如某些:
- 游戏
- CLI 工具
- Docker
- 虚拟机
- 特殊网络程序
- UDP 应用
它们可能直接绕过 System Proxy。
HTTP、HTTPS、TCP 和 UDP
这几个概念经常被混在一起,但它们属于不同层。
简化模型:
应用层
HTTP / HTTPS / DNS / SSH / 游戏协议
↓
传输层
TCP / UDP
↓
网络层
IP
↓
网卡
Wi-Fi / Ethernet / TUNHTTP/HTTPS 描述的是:
应用如何交流TCP/UDP 描述的是:
数据如何运输HTTP
HTTP 是 Web 通信协议。
例如浏览器请求:
GET /
Host: example.com服务器:
200 OKHTTPS
HTTPS 可以简单理解成:
HTTP
+
TLS Encryption即:
HTTP
↓
TLS
↓
TCP
↓
IPTCP
TCP 强调:
可靠传输特点包括:
- 建立连接
- 数据编号
- 保证顺序
- 丢包重传
- 拥塞控制
适合:
网页
文件
SSH
邮件
APIUDP
UDP 更简单。
它强调:
低延迟
低开销但本身不保证:
一定到达
顺序正确
自动重传常见:
DNS
实时语音
游戏
视频
QUICHTTP/3 和 QUIC
传统 HTTPS 常见:
HTTP/1.1 或 HTTP/2
↓
TLS
↓
TCP而 HTTP/3:
HTTP/3
↓
QUIC
↓
UDP这也是为什么现代网络代理越来越需要完整支持 UDP。
即使是网页,也不再意味着一定只使用 TCP。
TUN:虚拟网卡模式
TUN 最大的区别是:
它不是要求应用主动使用代理。
而是从更底层接管流量。
原本:
Application
↓
TCP / UDP
↓
IP
↓
Wi-Fi打开 TUN 后:
Application
↓
TCP / UDP
↓
IP
↓
TUN
↓
Clash
↓
真实网卡TUN 可以理解成:
软件创建出来的一张虚拟网卡应用甚至不需要知道 Clash 存在。
System Proxy 和 TUN 的核心区别
| System Proxy | TUN |
|---|---|
| 更靠近应用层 | 更靠近网络层 |
| 应用主动使用代理 | 系统层接管 |
| HTTP/HTTPS/SOCKS 常见 | 可统一处理 TCP/UDP |
| 应用可能绕过 | 接管范围更大 |
| 结构简单 | 路由和 DNS 更复杂 |
| 兼容性较直观 | 更适合全局代理和游戏 |
所以准确来说,不是:
System Proxy 只能 HTTP而是:
System Proxy 依赖应用支持代理协议而 TUN:
从 IP 层接管流量SOCKS5
SOCKS 是一种更通用的代理协议。
例如:
Application
↓
SOCKS5
↓
Clash
↓
Internet应用可以告诉 SOCKS5 代理:
请帮我连接 example.com:443相比 HTTP Proxy,SOCKS 可以处理更广泛的 TCP 网络连接。
Clash 中经常存在:
HTTP Port
SOCKS Port
Mixed PortMixed Port
例如:
mixed-port: 7890表示这个端口可以同时接收多种代理请求。
于是:
HTTP Proxy ─┐
├→ 7890
SOCKS5 ─────┘DNS 在 Clash 中为什么复杂
普通系统:
域名
↓
DNS
↓
真实 IP但是代理软件不仅需要知道:
IP 是多少还希望知道:
这个 IP 原来属于哪个域名因为规则可能写的是:
DOMAIN-SUFFIX,openai.com,Proxy如果域名太早转换成 IP,代理可能只看到:
104.x.x.x而不知道这是:
chatgpt.com因此 Clash 有自己的 DNS 处理机制。
Fake-IP
Fake-IP 是 Clash 常见的 DNS 工作模式之一。
假设应用查询:
chatgpt.comClash 不立即返回真正地址,而返回一个内部假 IP,例如:
198.18.1.23Clash 内部记录:
198.18.1.23
=
chatgpt.com之后应用连接:
198.18.1.23TUN 捕获以后 Clash 就知道:
这个连接原来属于 chatgpt.com于是可以准确进行域名分流。
Fake-IP Filter
某些应用、局域网设备或者特殊协议不能很好兼容 Fake-IP。
因此可以把部分域名排除。
这就是:
fake-ip-filter它不是:
屏蔽域名而是:
这些域名不要使用 Fake-IPSniffing:流量嗅探
有时 Clash 只看到一个 IP。
例如:
104.x.x.x但通过 TLS SNI、HTTP Host 等信息,Clash 可能判断:
这个连接实际上是 chatgpt.com这种机制叫:
Sniffing即协议嗅探或域名嗅探。
它主要用于帮助代理恢复域名信息。
Routing:路由
路由本质是在回答:
这个数据包应该从哪里出去?Mac 可能同时有:
Wi-Fi
Ethernet
VPN
TUN操作系统维护:
Routing Table例如:
192.168.1.0/24
→ Wi-Fi
Internet
→ TUN
Proxy Server
→ Wi-Fi最后一条非常重要。
如果代理服务器自己的连接也重新进入 TUN:
Clash
↓
TUN
↓
Clash
↓
TUN就可能形成循环。
所以 VPN/TUN 系统必须正确处理绕过规则。
CIDR
CIDR:
Classless Inter-Domain Routing本质是:
描述一整段 IP 地址范围的方法例如:
192.168.1.0/24通常代表:
192.168.1.0
到
192.168.1.255共 256 个地址。
CIDR 中 /24 是什么意思
IPv4 总共有:
32 bit/24 表示:
前 24 bit 固定剩余:
8 bit可以变化。
因此:
2^8
=
256个地址。
常见:
10.0.0.0/8
192.168.0.0/16
192.168.1.0/24
192.168.1.1/32规律:
/ 后面的数字越大
范围越小/32 就只代表一个 IPv4 地址。
CIDR 在代理中的使用
例如:
192.168.0.0/16
→ DIRECT代表:
192.168.x.x这一大段局域网 IP 不要走代理。
这样访问:
路由器
NAS
打印机
智能家居仍然留在本地网络。
Firewall:防火墙
防火墙可以理解成:
网络门卫它会根据规则判断:
谁可以进
谁可以出
哪些端口允许
哪些协议允许例如服务器:
TCP 80
→ Allow
TCP 443
→ Allow
TCP 3306
→ Deny这意味着:
HTTP
HTTPS可以从公网访问。
但数据库端口:
3306不能直接暴露。
Inbound 和 Outbound
Inbound:
Internet
→ 本机Outbound:
本机
→ Internet家用网络一般:
Outbound 比较宽松
Inbound 比较严格Stateful Firewall
现代防火墙通常记得连接状态。
比如:
Mac
→ Google这是本机主动建立的连接。
Google 返回数据:
Google
→ Mac虽然方向属于入站,但防火墙知道:
这是之前连接的返回数据因此允许。
这就是:
Stateful FirewallNetwork Stack:网络协议栈
网络栈不是某个单独软件。
它是操作系统处理网络通信的一整套分层机制。
可以粗略表示:
Application
↓
HTTP
↓
TLS
↓
TCP
↓
IP
↓
Ethernet / Wi-Fi
↓
Network Interface发送数据时是一层层封装。
接收时则反过来:
Wi-Fi
↓
IP
↓
TCP
↓
TLS
↓
HTTP
↓
Browser为什么叫 Stack
因为网络协议是一层叠一层的。
类似快递:
网页内容
=
商品
TLS
=
加密包装
TCP
=
快递箱
IP
=
收件地址
Wi-Fi
=
运输车辆应用通常不需要自己实现 TCP、IP 或网卡控制。
只需要调用操作系统提供的网络 API。
下面的大量工作都由系统网络栈完成。
CDN
CDN 全称:
Content Delivery Network中文:
内容分发网络核心思想:
把网站内容缓存到离用户更近的服务器。
假设网站源服务器在美国。
没有 CDN:
东京用户
→ 美国
台湾用户
→ 美国
欧洲用户
→ 美国有 CDN:
东京用户
→ 东京 Edge
台湾用户
→ 亚洲 Edge
欧洲用户
→ 欧洲 EdgeCloudflare
Cloudflare 是大型互联网基础设施服务商。
它提供:
- CDN
- DNS
- Reverse Proxy
- TLS
- DDoS Protection
- WAF
- Bot Protection
- Load Balancing
- Edge Computing
当网站使用 Cloudflare 时:
User
↓
Cloudflare
↓
Origin Server用户通常不会直接连接网站真实源站。
Origin 和 Edge
Origin Server:
网站真正的源服务器Edge Server:
CDN 靠近用户的边缘节点例如:
User
↓
Tokyo Edge
↓
US Origin如果内容已经缓存:
User
↓
Tokyo Edge就结束了,不一定需要再次访问 Origin。
Forward Proxy 和 Reverse Proxy
Clash 这种代理更接近:
Forward Proxy它站在用户侧:
User
↓
Proxy
↓
Website代理代表用户访问网站。
Cloudflare 更接近:
Reverse Proxy它站在网站侧:
User
↓
Cloudflare
↓
Origin Server可以这样记:
Forward Proxy
隐藏/代理客户端
Reverse Proxy
隐藏/代理服务器DDoS
DDoS:
Distributed Denial of Service攻击者通过大量设备同时制造流量。
例如:
Server Capacity
=
10,000 requests/s攻击者发送:
5,000,000 requests/s可能导致:
带宽耗尽
连接数耗尽
CPU 满载Cloudflare 这样的全球网络可以在流量抵达 Origin 之前过滤大量异常请求。
WAF
WAF:
Web Application Firewall它比普通网络层 Firewall 更理解 HTTP/Web 流量。
例如可以判断:
某个 URL 是否异常
某个请求是否像 SQL Injection
某个 Bot 是否恶意
某个 API 是否被暴力请求所以:
Firewall和:
WAF不是完全一样的东西。
软路由
普通家用路由器其实也是一台小型计算机:
CPU
RAM
Network Interface
Operating System
Routing Software所谓软路由通常是:
使用通用计算机硬件运行路由系统。
例如:
Intel N100 Mini PC
+
4 x 2.5GbE
+
OpenWrt就可以作为家庭主路由。
常见软路由系统包括:
OpenWrt
pfSense
OPNsense
RouterOS软路由能做什么
它可以完成普通路由器的工作:
Routing
NAT
DHCP
DNS
Firewall同时还能运行更复杂功能:
VPN
Proxy
Clash/Mihomo
QoS
VLAN
Ad Blocking
IDS/IPS
Multi-WANDHCP
DHCP 用于自动给局域网设备分配网络参数。
例如:
Mac
→ 192.168.1.20
iPhone
→ 192.168.1.21
Apple TV
→ 192.168.1.22DHCP 还可以告诉设备:
Gateway 是谁
DNS 是谁
Subnet Mask 是多少如果没有 DHCP,就需要手动配置大量参数。
NAT
家庭里可能有:
Mac
iPhone
TV
NAS
PS5它们使用私有 IP:
192.168.1.x但整个家庭公网可能只有一个 IPv4 地址。
NAT 负责:
多个内网设备
↓
一个公网 IP例如:
192.168.1.20:50100
192.168.1.21:50101通过 NAT 映射到公网连接。
Gateway
Gateway 是:
设备不知道目标在哪时,把数据交给谁例如:
Mac
192.168.1.20
Router
192.168.1.1那么:
192.168.1.1通常就是 Mac 的 Default Gateway。
Mac 访问互联网时:
Mac
↓
192.168.1.1
↓
Internet为什么有人在软路由上运行 Clash
如果 Clash 只运行在 Mac:
Mac
→ Clash
→ Proxy只有 Mac 获得代理能力。
但是如果运行在软路由:
Mac ─────┐
iPhone ──┤
TV ──────┤
PS5 ─────┼→ Soft Router → Clash → Internet
NAS ─────┘那么整个网络都可以统一分流。
例如:
ChatGPT
→ US Proxy
YouTube
→ Japan Proxy
Netflix
→ Singapore Proxy
国内网站
→ DIRECT
LAN
→ DIRECT客户端不需要安装代理软件。
主路由和旁路由
主路由承担:
默认网关
NAT
DHCP
Internet 出口例如:
ISP
↓
Main Router
↓
LAN旁路由则是额外加入网络,用于:
代理
DNS
过滤
特殊路由例如:
Main Router
↓
LAN
├── Normal Device
├── Normal Device
└── Side Router
↓
Proxy某些设备可以把旁路由作为 Gateway,从而获得额外网络能力。
一次完整访问到底会经过什么
把前面的概念全部放在一起。
假设:
- Mac 使用 TUN
- Clash 开启 Rule
- ChatGPT 走 Proxy
- 家里有软路由
- 网站使用 Cloudflare
可能得到:
Browser
↓
HTTPS
↓
HTTP/3 / HTTP/2
↓
TCP / UDP
↓
IP
↓
macOS Network Stack
↓
TUN
↓
Clash / Mihomo
↓
Rule Matching
↓
Proxy Node
↓
Physical Wi-Fi
↓
Soft Router
↓
Firewall
↓
NAT
↓
ISP
↓
Internet
↓
Proxy Server
↓
Cloudflare Edge
↓
Origin ServerDNS 可能在其中由:
Clash DNS
DoH
DoT
System DNS
Remote DNS中的某种方式完成。
为什么一个网站打不开可能非常复杂
因为任何一层都可能失败。
例如:
DNS 错误可能导致:
域名无法解析Rule 错误:
ChatGPT
→ DIRECT而本来应该:
→ ProxyIPv6 路由错误:
IPv4 正常
IPv6 超时Fake-IP 错误:
某应用不兼容Proxy 节点故障:
节点 TimeoutFirewall:
阻止端口Cloudflare:
拒绝当前出口 IP目标 Origin:
服务本身故障所以网络排错真正要问的不是:
“Clash 为什么坏了?”而应该逐层判断:
DNS 正常吗?
请求进入 Clash 了吗?
匹配到了哪条 Rule?
是 DIRECT 还是 Proxy?
Proxy Group 最终选择哪个节点?
IPv4 和 IPv6 都正常吗?
TCP 和 UDP 都正常吗?
节点能到达目标吗?
Cloudflare 有没有拒绝请求?面试复习重点
如果这篇文章用于 Software Engineer、Backend、Cloud、DevOps 或 System Design 面试,不需要把 Clash 的每个按钮背下来,更重要的是理解底层网络原理。
1. DNS 在建立连接之前解决什么问题?
核心回答:
DNS 将域名解析成 IP 地址,使客户端能够找到目标网络地址。
例如:
api.example.com
↓ DNS
203.0.113.10还可以进一步提到:
- DNS 结果可能被缓存。
- 一个域名可以对应多个 IP。
- CDN 常通过 DNS 或 Anycast 将用户引导至合适节点。
- DNS 本身并不负责传输网页内容。
2. TCP 和 UDP 的主要区别是什么?
TCP:
Connection-oriented
Reliable
Ordered
Retransmission
Congestion ControlUDP:
Connectionless
Lower overhead
No built-in delivery guarantee
No built-in ordering guarantee典型例子:
TCP
→ HTTP/1.1
→ HTTP/2
→ SSH
→ Database connections
UDP
→ DNS
→ Games
→ VoIP
→ QUIC / HTTP/3面试中最好不要简单回答:
TCP 慢
UDP 快因为这过于粗略。
更准确的说法是:
TCP 提供可靠、有序的字节流,因此协议开销和状态管理更多;UDP 提供更轻量的数据报传输,由上层协议决定是否需要可靠性和重传。
3. HTTP、HTTPS、TCP 是什么关系?
经典 HTTPS:
HTTP
↓
TLS
↓
TCP
↓
IPHTTP 是应用层协议。
TLS 提供加密、完整性校验和服务器身份验证。
TCP 提供可靠传输。
IP 负责网络寻址和路由。
但是 HTTP/3 不再使用 TCP:
HTTP/3
↓
QUIC
↓
UDP
↓
IP这也是很常见的面试延伸问题。
4. Forward Proxy 和 Reverse Proxy 有什么区别?
Forward Proxy:
Client
↓
Forward Proxy
↓
Internet代理客户端。
例如:
Clash
Corporate ProxyReverse Proxy:
Internet
↓
Reverse Proxy
↓
Application Servers代理服务器端。
例如:
Nginx
Cloudflare
AWS Application Load Balancer一句话回答:
Forward proxy represents clients, while reverse proxy represents servers.
5. VPN 和 Proxy 有什么区别?
Proxy 通常代理选定应用或连接。
VPN 通常工作得更靠近网络层,通过虚拟接口和加密 Tunnel 接管更广范围的 IP 流量。
简化:
Proxy
Application
→ Proxy
→ ServerVPN
Application
→ Network Stack
→ VPN Tunnel
→ VPN Server
→ Internet但不要说:
VPN 一定代理所有流量
Proxy 一定只代理浏览器实际行为取决于:
Routing
Split Tunneling
Application configuration
Proxy protocol6. System Proxy 和 TUN 最大区别是什么?
System Proxy:
应用知道代理存在,并主动连接代理端口。
TUN:
操作系统通过虚拟网络接口将 IP 流量导入代理程序,应用通常不知道代理存在。
因此 TUN 更适合:
- 非 HTTP 应用
- UDP
- 游戏
- 全系统代理
- 不支持 Proxy 设置的软件
7. NAT 是什么?为什么家里需要 NAT?
典型家庭网络:
Mac 192.168.1.10
iPhone 192.168.1.11
PS5 192.168.1.12
↓
Router
↓
One Public IPv4NAT 负责在:
Private Address
↔
Public Address之间进行地址和连接映射。
它使大量内网设备可以共享有限的公网 IPv4 地址。
8. Default Gateway 是什么?
当目标地址不属于本地子网时,设备通常将数据包发送给:
Default Gateway例如:
Mac
192.168.1.20
Gateway
192.168.1.1访问:
8.8.8.8时:
Mac
→ 192.168.1.1
→ ISP
→ Internet9. CIDR /24 是什么意思?
IPv4:
32 bits/24 表示:
前 24 bits 是网络前缀
剩余 8 bits 可以变化因此:
2^8 = 256例如:
192.168.1.0/24包含:
192.168.1.0
...
192.168.1.255面试中经常进一步问:
/16 有多少地址?答案:
2^(32 - 16)
=
65,53610. CDN 为什么能提高性能?
因为 CDN 将内容放在:
Edge Server而不是每次都请求:
Origin Server因此可以降低:
- RTT
- 延迟
- 跨洲传输
- Origin Server 负载
同时还可以提供:
- TLS termination
- DDoS protection
- Caching
- Compression
- Load balancing
11. Firewall 和 WAF 有什么区别?
普通 Firewall 更关注:
IP
Port
TCP / UDP
Connection StateWAF 更关注:
HTTP
URL
Header
Cookie
Request Body
Web attack pattern例如:
Firewall
→ 是否允许访问 TCP 443?
WAF
→ TCP 443 已经允许,但这个 HTTP 请求是不是 SQL Injection?12. 浏览器输入 URL 后发生了什么?
这是经典面试题。
可以按照下面顺序回答:
URL parsing
↓
DNS lookup
↓
Routing
↓
TCP connection or QUIC connection
↓
TLS handshake
↓
HTTP request
↓
CDN / Reverse Proxy / Load Balancer
↓
Application Server
↓
Database / Cache / Other Services
↓
HTTP Response
↓
Browser Rendering如果需要展开浏览器端,还可以继续:
HTML parsing
↓
DOM
↓
CSSOM
↓
Render Tree
↓
Layout
↓
Paint
↓
Composite常见误区
误区 1:VPN 可以绕过 ISP
错误:
Mac
→ VPN
→ Internet好像 ISP 消失了。
实际:
Mac
→ Router
→ ISP
→ VPN Server
→ InternetVPN 依然依赖 ISP 才能到达 VPN Server。
误区 2:开了 VPN,ISP 什么都看不到
也不准确。
ISP 通常仍然可以看到:
- 你的公网连接
- VPN Server 的 IP
- 连接时间
- 数据量
- 部分网络元数据
但 VPN Tunnel 可以隐藏其中更具体的内部流量内容和目的地信息。
误区 3:HTTPS 等于匿名
HTTPS 解决的是:
Encryption
Integrity
Authentication不是:
Anonymity目标网站仍然可以知道:
你的出口 IP
Cookie
Account
Browser information误区 4:System Proxy 等于所有网络流量都走代理
不一定。
System Proxy 依赖应用是否支持对应的 Proxy 设置。
某些应用可以直接:
Application
→ Network Stack
→ Internet绕过 System Proxy。
误区 5:TUN 就等于 VPN
它们技术上有相似之处,因为都可能使用:
Virtual Network Interface但 TUN 本身只是:
一种虚拟网络接口机制。
VPN 还包含:
Tunnel
Encryption
Authentication
Remote Endpoint所以:
TUN
≠
VPN更准确地说:
VPN 软件经常使用 TUN 来实现虚拟网络接口。
误区 6:HTTP 就是 TCP
不对。
它们属于不同层:
HTTP
↓
TCPHTTP 是应用层协议。
TCP 是传输层协议。
而 HTTP/3:
HTTP/3
↓
QUIC
↓
UDP说明 HTTP 并不天然绑定 TCP。
误区 7:UDP 就是不可靠,所以不好
“不可靠”只代表 UDP 本身不提供:
Retransmission
Ordering
Delivery Guarantee不代表基于 UDP 的应用不能可靠。
例如 QUIC:
QUIC
↓
UDP自己在用户态实现了:
Reliability
Congestion Control
Encryption
Streams误区 8:DNS 只是查一次 IP 就结束了
实际上还有:
Browser DNS Cache
OS DNS Cache
Local Resolver
Router
ISP Resolver
Recursive Resolver
Authoritative DNS
TTL并且现代应用可能使用:
DoH
DoT
Application-specific DNS所以 DNS 问题通常比“域名变 IP”复杂得多。
误区 9:CDN 就是存图片的服务器
现代 CDN 不只是缓存静态资源。
还可能处理:
TLS
HTTP/3
Dynamic acceleration
DDoS mitigation
WAF
Bot protection
Load balancing
Edge functionsCloudflare 就是典型例子。
误区 10:Cloudflare 就是 DNS
Cloudflare 确实提供 DNS,但它的业务远远不止 DNS。
它还可以作为:
CDN
Reverse Proxy
WAF
DDoS Protection
Edge Network误区 11:防火墙就是杀毒软件
两者不是一个概念。
Antivirus 更关注:
恶意文件
恶意程序
本机行为Firewall 更关注:
网络连接
IP
Port
Protocol
Connection State现代安全软件可能把两者整合在一起,但底层职责不同。
误区 12:NAT 就是 Firewall
NAT 的主要任务是地址转换。
Firewall 的主要任务是:
Allow / Deny家用路由器经常同时执行:
NAT + Stateful Firewall所以二者看起来像是一回事,但概念不同。
误区 13:使用代理以后 DNS 就一定也经过代理
不一定。
可能出现:
Website Traffic
→ Proxy
DNS
→ ISP这就是 DNS Leak 的典型来源之一。
误区 14:访问网站只建立一个网络连接
现代网页通常会访问很多域名:
HTML
JavaScript
CSS
Images
API
Authentication
Analytics
CDN
WebSocket所以:
主域名能访问不代表:
整个 Web App 一定正常这也是为什么某些网站会:
页面打开
但登录失败或者:
页面框架出现
但内容一直加载FAQ
Q1:为什么开了 Clash,但浏览器还是不能访问某些网站?
首先需要区分:
Clash 正在运行和:
流量真的进入 Clash不是同一件事。
可能的问题包括:
- System Proxy 没有生效
- 应用绕过 System Proxy
- TUN 没有正确建立
- Rule 匹配成 DIRECT
- DNS 错误
- IPv6 路由异常
- Proxy Node 无法访问目标网站
- 出口 IP 被目标服务限制
Q2:为什么 Global 模式能打开网站,Rule 模式打不开?
如果:
Global
→ Works
Rule
→ Fails通常说明:
网络主链路大概率正常更应该检查:
Rule Matching
Proxy Group
DIRECT
Domain Rules
IP RulesQ3:为什么 Google 能打开,但 ChatGPT 打不开?
这不能证明代理一定没有问题。
不同网站可能:
- 使用不同 CDN
- 使用不同 IP
- 使用不同域名
- 使用不同协议
- 对代理出口 IP 有不同风控
- 使用不同 IPv4 / IPv6 路径
现代 ChatGPT 这样的 Web App 还会同时请求多个后台服务。
其中任何关键请求失败,都可能导致整个页面无法正常工作。
Q4:为什么 TUN 比 System Proxy 更容易“全局生效”?
因为 System Proxy 工作得更高层:
Application
→ Proxy API应用需要配合。
TUN 更接近:
IP Layer操作系统直接把流量导入虚拟网络接口,因此不要求每个应用分别支持 HTTP/SOCKS Proxy。
Q5:为什么 TUN 反而更容易出现复杂问题?
因为 TUN 会涉及更多系统级组件:
Routing Table
Virtual Interface
DNS
IPv4
IPv6
TCP
UDP
Firewall
Bypass Rules功能更强,意味着配置空间也更复杂。
Q6:Fake-IP 是不是把我带到一个假的网站?
不是。
Fake-IP 只是 Clash 在本机内部用于映射域名的虚拟地址。
例如:
198.18.1.10
↔
chatgpt.com最终 Clash 仍然会连接真正的目标服务器或代理服务器。
Q7:为什么需要 Sniffing?DNS 不是已经知道域名了吗?
有些连接到达 Clash 时可能只剩:
IP Address而没有清晰的域名信息。
Sniffing 可以尝试从:
TLS SNI
HTTP Host等信息恢复域名,以便进行:
Domain-based RoutingQ8:Cloudflare 为什么会出现在访问很多完全不同的网站时?
因为不同网站都可以使用 Cloudflare。
比如:
site-a.com
site-b.com
site-c.com真实公司完全不同,但都可能:
User
→ Cloudflare
→ Their Origin因此看到 Cloudflare IP 并不表示这些网站属于 Cloudflare。
Q9:如果网站用了 CDN,我连接的还是网站自己的服务器吗?
不一定。
如果 CDN 已经缓存资源:
User
→ Edge请求可能根本不会到 Origin。
如果是动态请求:
User
→ Edge
→ OriginCDN 再把请求转发到源服务器。
Q10:软路由为什么可以让全家设备都使用代理?
因为家庭设备通常都会经过:
Default Gateway如果软路由就是 Gateway:
Mac ─┐
TV ──┤
PS5 ─┼→ Soft Router
Phone ┘那么软路由就有机会统一执行:
Routing
Firewall
NAT
DNS
Proxy无需每台设备安装独立代理客户端。
Q11:旁路由和主路由最大的区别是什么?
主路由一般是整个网络的:
Default Gateway
DHCP Server
NAT Device
Internet Gateway旁路由通常负责某些特殊流量。
例如:
Selected Device
→ Side Router
→ Proxy它不一定负责整个家庭网络。
Q12:为什么访问 192.168.1.1 通常不应该走代理?
因为:
192.168.1.1通常属于本地 LAN。
如果送到海外 Proxy:
Mac
→ Japan Proxy
→ 192.168.1.1日本 Proxy 根本访问不到你家里的路由器。
因此局域网地址通常需要:
DIRECTQ13:127.0.0.1 和 192.168.1.1 有什么区别?
127.0.0.1:
当前电脑自己即:
localhost192.168.1.1:
局域网里的另一台设备通常是 Router。
所以:
127.0.0.1:7890意味着:
当前电脑自己的 7890 端口。
Q14:443 是 HTTPS,为什么代理还能用 443?
端口号只是一个约定和寻址信息,并不是强制规定某个端口只能运行一种协议。
通常:
443
→ HTTPS但程序理论上可以在任何允许的端口监听自己的协议。
Q15:为什么服务器需要 Firewall,但已经有 Cloudflare 了?
Cloudflare 是网站前面的安全层,不应该成为唯一安全边界。
理想情况下 Origin Server 仍然应该:
- 使用 Firewall
- 限制开放端口
- 限制管理接口
- 限制数据库访问
- 进行身份验证
- 定期更新软件
这属于:
Defense in Depth也就是纵深防御。
Q16:如果让我排查“网站打不开”,最合理的顺序是什么?
可以按照层级排查:
1. Domain 是否正确?
↓
2. DNS 能否解析?
↓
3. IP 是否可达?
↓
4. Routing 是否正确?
↓
5. Firewall 是否阻止?
↓
6. TCP / UDP 是否建立?
↓
7. TLS 是否成功?
↓
8. HTTP 是否返回?
↓
9. Proxy Rule 是否正确?
↓
10. CDN / Origin 是否正常?如果涉及 Clash:
Connections
↓
Rule
↓
Proxy Group
↓
Node
↓
DNS
↓
IPv4 / IPv6
↓
Logs这比直接:
重装 Clash有效得多。
用一张图总结整个体系
┌──────────────────────────────┐
│ Application │
│ Chrome / App / Game / SSH │
└───────────────┬──────────────┘
↓
┌──────────────────────────────┐
│ Application Protocol │
│ HTTP / HTTPS / DNS / SSH │
└───────────────┬──────────────┘
↓
┌──────────────────────────────┐
│ Transport │
│ TCP / UDP / QUIC │
└───────────────┬──────────────┘
↓
┌──────────────────────────────┐
│ Network │
│ IP / IPv4 / IPv6 │
└───────────────┬──────────────┘
↓
System Proxy / TUN
↓
Clash / Mihomo
↓
Rule / Proxy Group
↙ ↘
DIRECT Proxy
↓ ↓
Router Proxy Server
↓ ↓
Firewall / NAT │
↓ │
ISP ───────────────┘
↓
Internet
↓
Cloudflare / CDN
↓
Origin Server最后总结
可以把这些概念压缩成下面几句话:
DNS 负责把域名变成 IP。
HTTP/HTTPS 描述 Web 应用如何通信。
TCP/UDP 负责运输数据。
IP 负责寻址和路由。
Network Stack 是操作系统处理这些协议的完整体系。
System Proxy 要求应用主动使用代理。
TUN 从更底层的 IP 网络流量进行接管。
Clash/Mihomo 根据规则决定 DIRECT 或 Proxy。
Proxy Server 充当客户端的互联网出口。
VPN 则通常将更大范围的 IP 流量封装进加密 Tunnel。
CIDR 用于描述一整段 IP 地址。
Firewall 根据规则控制网络连接是否允许通过。
NAT 让多个局域网设备共享公网 IPv4。
Gateway 是设备离开当前网络时的默认出口。
Soft Router 是使用通用硬件和路由软件构建的可编程路由器。
CDN 把内容放到靠近用户的 Edge Server。
Cloudflare 同时提供 CDN、Reverse Proxy、安全、DNS 和 DDoS 防护等网络基础设施。
最终,一次现代互联网访问很可能并不是简单的:
电脑
→ 网站而是:
Application
→ Network Stack
→ TUN / Proxy
→ Router
→ ISP
→ Proxy/VPN
→ CDN
→ Reverse Proxy
→ Origin理解这些层以后,代理软件不再只是一个“开关”。
它实际上是在控制:
DNS
路由
协议
出口
规则
网络接口而网络排错的本质,也就是找到数据究竟在哪一层没有按照预期继续向前。