惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hacker News: Ask HN
Hacker News: Ask HN
月光博客
月光博客
Martin Fowler
Martin Fowler
人人都是产品经理
人人都是产品经理
有赞技术团队
有赞技术团队
Hugging Face - Blog
Hugging Face - Blog
T
Tailwind CSS Blog
爱范儿
爱范儿
博客园_首页
Last Week in AI
Last Week in AI
N
Netflix TechBlog - Medium
NISL@THU
NISL@THU
H
Help Net Security
A
Arctic Wolf
K
Kaspersky official blog
Y
Y Combinator Blog
G
GRAHAM CLULEY
T
Threatpost
I
Intezer
Attack and Defense Labs
Attack and Defense Labs
Jina AI
Jina AI
Recent Announcements
Recent Announcements
D
Docker
博客园 - 聂微东
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
www.infosecurity-magazine.com
www.infosecurity-magazine.com
GbyAI
GbyAI
The Hacker News
The Hacker News
C
Cyber Attacks, Cyber Crime and Cyber Security
Help Net Security
Help Net Security
Microsoft Azure Blog
Microsoft Azure Blog
G
Google Developers Blog
F
Fortinet All Blogs
S
Security Affairs
Security Archives - TechRepublic
Security Archives - TechRepublic
量子位
AWS News Blog
AWS News Blog
Google DeepMind News
Google DeepMind News
罗磊的独立博客
V
Vulnerabilities – Threatpost
阮一峰的网络日志
阮一峰的网络日志
T
Tor Project blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
H
Hacker News: Front Page
Security Latest
Security Latest
The Cloudflare Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
M
MIT News - Artificial intelligence
B
Blog
云风的 BLOG
云风的 BLOG

博客园 - freephp

马斯克都在用的"第一性原理":为什么90%的程序员在"卷框架",而高手只看一件事? 一个复杂的问题是如何被化解的 为什么很多技术人越努力,越没价值? 睡前讲一段docker编译镜像的故事 换一个思维解决问题:希望在转角 企业级LLM已经到了next level:LangChain + DeepSeek = 王炸 发展的眼光看问题 最长有效括号子串问题 人人都需要重视的Prompt Engineering 坚持写作和坚持思考是同样重要的 关注一波AWS Aurora AWS学习笔记之Lambda执行权限引发的思考 体验国产系统Deepin:很爽 细聊滑动窗口 需要怎么才能过好这一生 数据结构学习之树结构 从《一兆游戏》学到的知识点 我的日常AI使用 移位操作搞定两数之商 Git常用命令整理
开了 TUN 模式还是直连?90% 的人都踩过这个坑
freephp · 2026-04-12 · via 博客园 - freephp

网络问题是做技术绕不开的三座大山之一,而且往往排第一。所以遇到tun模式失效,我们该怎么火速解决呢?


先说结论

根本原因只有一个:代理客户端没有系统级权限,TUN 虚拟网卡压根没创建成功。

解决方法也只有一个:安装服务模式(Service Mode)

设置 → 服务模式 → 安装 → 重启客户端 → 重新开启 TUN

就这一步。下面的内容是帮你搞清楚为什么,以及怎么确认问题真的修好了。


你以为开了 TUN,其实没有

很多人的状态是这样的:

  • 全局模式 ✅ 打开了
  • TUN 模式 ✅ 打开了
  • 终端跑一下 curl ipinfo.io,IP 还是国内的

直觉反应是配置有问题,或者客户端 bug。

其实不是。UI 上的开关只是个开关,背后的 TUN 网卡根本没建起来。


怎么确认 TUN 没生效

第一招:看路由表

netstat -rn | grep default

有问题的输出长这样:

default   192.168.3.1   UGScg   en0
default   fe80::%utun0  UGcIg   utun0
default   fe80::%utun1  UGcIg   utun1

看到没有——IPv4 的 default 路由指向的是 en0,也就是你的物理网卡。utun 接口全部是 fe80:: 开头的 IPv6 地址,跟代理一点关系没有。

正常接管后应该是这样:

default   198.18.0.1   UGScg   utunX   ← IPv4 走 TUN 虚拟网卡
default   192.168.3.1  UGScg   en0

第二招:看有没有 198.18 地址

ifconfig | grep -B1 "198.18"

没有任何输出 = TUN 网卡不存在。

代理客户端正常创建 TUN 网卡后,会有一个 utun 接口持有 198.18.0.1 这个地址。如果找不到,说明客户端根本没有成功创建这张虚拟网卡。

那些 utun0utun1utun2……全是 macOS 系统自己的,跟你的代理客户端无关。


为什么会这样

macOS 管得很严。

向系统路由表写条目、创建虚拟网卡,都需要管理员级别的系统权限。

普通应用进程没有这个权限。客户端 UI 可以显示"TUN 已开启",但实际的系统操作全部失败了——静默失败,没有任何报错提示。


解决方法:装服务模式

服务模式会把客户端的核心组件注册为系统服务,以足够高的权限运行,才能真正操作路由表和网卡。

步骤:

  1. 打开 *** Verge
  2. 进「设置」
  3. 找「服务模式(Service Mode)」,点安装
  4. 系统会弹出授权窗口,输入管理员密码
  5. 安装完成后,完全退出客户端(Cmd+Q,不是关窗口)
  6. 重新启动,开启 TUN

装完之后验证一下:

# 看 TUN 网卡有没有建起来
ifconfig | grep -B1 "198.18"

# 看 IPv4 默认路由是不是走 utun 了
netstat -rn | grep "^default.*utun"

# 最终验证
curl ipinfo.io

如果 ifconfig 里出现了 inet 198.18.0.1 的 utun 接口,路由表里 IPv4 default 指向 utun,就说明完全修好了。


还有几个附带问题

TUN 配置不对

服务模式装好了,也别忘了检查 TUN 的配置文件,有两个字段最容易漏:

tun:
  enable: true
  stack: system
  auto-route: true              # 漏了这个,路由表不会写入
  auto-detect-interface: true   # 漏了这个,网卡出口识别不了
  inet4-address: 198.18.0.1/16
  dns-hijack:
    - any:53

auto-route: true 是最常见的漏填项。没有它,即使 TUN 网卡创建成功,IPv4 流量也不会走进去。

DNS 泄漏

流量走了 TUN,但 DNS 查询没被接管,一样会暴露真实位置:

scutil --dns | grep nameserver

正常情况下应该能看到 198.18.0.2(*** 的虚拟 DNS 地址),如果还是运营商的 DNS 就说明 DNS 没被劫持,需要检查 dns-hijack 配置。

终端环境变量干扰

有时候终端里设了代理相关的环境变量,会干扰测试结果:

env | grep -i proxy

如果有输出,先清掉再测:

unset ALL_PROXY HTTP_PROXY HTTPS_PROXY
curl ipinfo.io

一句话总结

TUN 模式不生效,99% 是没装服务模式。装好、重启、重开 TUN,三步搞定。配置文件记得加 auto-route: true