柳嘉希

UNSW 信息技术硕士 · 寻找软件开发机会

全栈与后端开发 · API 集成 · 自动化 · AI Agent 学习与实践

从 DNS 到 Clash TUN:理解代理、VPN、CDN、软路由与网络栈

平时我们经常会说“开 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.47

IPv4 使用 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 IP

Clash 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

所有网络连接都走同一个代理策略。

所有流量
↓
Proxy

Global 的价值除了使用本身,还在于故障排查。

例如:

Rule 模式:
ChatGPT 打不开
 
Global 模式:
ChatGPT 可以打开

那么说明:

节点大概率正常
TUN 大概率正常

问题更可能在:

Rule

Direct

所有流量直接连接:

所有流量
↓
DIRECT

Proxy 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     → 7890

System 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 / TUN

HTTP/HTTPS 描述的是:

应用如何交流

TCP/UDP 描述的是:

数据如何运输

HTTP

HTTP 是 Web 通信协议。

例如浏览器请求:

GET /
Host: example.com

服务器:

200 OK

HTTPS

HTTPS 可以简单理解成:

HTTP
+
TLS Encryption

即:

HTTP
↓
TLS
↓
TCP
↓
IP

TCP

TCP 强调:

可靠传输

特点包括:

  • 建立连接
  • 数据编号
  • 保证顺序
  • 丢包重传
  • 拥塞控制

适合:

网页
文件
SSH
邮件
API

UDP

UDP 更简单。

它强调:

低延迟
低开销

但本身不保证:

一定到达
顺序正确
自动重传

常见:

DNS
实时语音
游戏
视频
QUIC

HTTP/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 Port

Mixed 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.com

Clash 不立即返回真正地址,而返回一个内部假 IP,例如:

198.18.1.23

Clash 内部记录:

198.18.1.23
=
chatgpt.com

之后应用连接:

198.18.1.23

TUN 捕获以后 Clash 就知道:

这个连接原来属于 chatgpt.com

于是可以准确进行域名分流。


Fake-IP Filter

某些应用、局域网设备或者特殊协议不能很好兼容 Fake-IP。

因此可以把部分域名排除。

这就是:

fake-ip-filter

它不是:

屏蔽域名

而是:

这些域名不要使用 Fake-IP

Sniffing:流量嗅探

有时 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 Firewall

Network 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
 
欧洲用户
→ 欧洲 Edge

Cloudflare

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-WAN

DHCP

DHCP 用于自动给局域网设备分配网络参数。

例如:

Mac
→ 192.168.1.20
 
iPhone
→ 192.168.1.21
 
Apple TV
→ 192.168.1.22

DHCP 还可以告诉设备:

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 Server

DNS 可能在其中由:

Clash DNS
DoH
DoT
System DNS
Remote DNS

中的某种方式完成。


为什么一个网站打不开可能非常复杂

因为任何一层都可能失败。

例如:

DNS 错误

可能导致:

域名无法解析

Rule 错误:

ChatGPT
→ DIRECT

而本来应该:

→ Proxy

IPv6 路由错误:

IPv4 正常
IPv6 超时

Fake-IP 错误:

某应用不兼容

Proxy 节点故障:

节点 Timeout

Firewall:

阻止端口

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 Control

UDP:

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
↓
IP

HTTP 是应用层协议。

TLS 提供加密、完整性校验和服务器身份验证。

TCP 提供可靠传输。

IP 负责网络寻址和路由。

但是 HTTP/3 不再使用 TCP:

HTTP/3
↓
QUIC
↓
UDP
↓
IP

这也是很常见的面试延伸问题。


4. Forward Proxy 和 Reverse Proxy 有什么区别?

Forward Proxy:

Client
↓
Forward Proxy
↓
Internet

代理客户端。

例如:

Clash
Corporate Proxy

Reverse 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
→ Server
VPN
Application
→ Network Stack
→ VPN Tunnel
→ VPN Server
→ Internet

但不要说:

VPN 一定代理所有流量
Proxy 一定只代理浏览器

实际行为取决于:

Routing
Split Tunneling
Application configuration
Proxy protocol

6. 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 IPv4

NAT 负责在:

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
→ Internet

9. 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,536

10. 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 State

WAF 更关注:

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
→ Internet

VPN 依然依赖 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
↓
TCP

HTTP 是应用层协议。

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 functions

Cloudflare 就是典型例子。


误区 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 Rules

Q3:为什么 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 Routing

Q8: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
→ Origin

CDN 再把请求转发到源服务器。


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 根本访问不到你家里的路由器。

因此局域网地址通常需要:

DIRECT

Q13:127.0.0.1 和 192.168.1.1 有什么区别?

127.0.0.1:

当前电脑自己

即:

localhost

192.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
路由
协议
出口
规则
网络接口

而网络排错的本质,也就是找到数据究竟在哪一层没有按照预期继续向前。