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

推荐订阅源

N
News and Events Feed by Topic
GbyAI
GbyAI
博客园 - Franky
宝玉的分享
宝玉的分享
Blog — PlanetScale
Blog — PlanetScale
Google DeepMind News
Google DeepMind News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
人人都是产品经理
人人都是产品经理
Microsoft Azure Blog
Microsoft Azure Blog
The Register - Security
The Register - Security
腾讯CDC
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
I
InfoQ
The Cloudflare Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Engineering at Meta
Engineering at Meta
MongoDB | Blog
MongoDB | Blog
有赞技术团队
有赞技术团队
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
F
Full Disclosure
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Vercel News
Vercel News
博客园 - 【当耐特】
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Schneier on Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Project Zero
Project Zero
量子位
M
MIT News - Artificial intelligence
Stack Overflow Blog
Stack Overflow Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
美团技术团队
Attack and Defense Labs
Attack and Defense Labs
C
Cybersecurity and Infrastructure Security Agency CISA
T
The Blog of Author Tim Ferriss
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Troy Hunt's Blog
Google Online Security Blog
Google Online Security Blog
罗磊的独立博客
P
Proofpoint News Feed
Schneier on Security
Schneier on Security
Spread Privacy
Spread Privacy
S
SegmentFault 最新的问题
L
LINUX DO - 最新话题
Simon Willison's Weblog
Simon Willison's Weblog
爱范儿
爱范儿
博客园 - 聂微东
A
About on SuperTechFans
PCI Perspectives
PCI Perspectives
D
Docker

yyhhyyyyyy

Surge for Mac 配置教程:自用配置详解与 iOS 版差异 Surge for iOS 配置教程:自用配置文件逐段详解(General / 策略组 / 规则) Mac小企鹅输入法+雾凇拼音配置指南:从安装到同步 Winodws 双网卡实现内外网分流 VSCode 配置Ruff Cursor修改垂直布局 Clash Party/Clash Verge Rev/Sparkle 覆写与扩展脚本指南 解决 WSL2 与 Tunnel 模式网络冲突:MTU 设置妙招 Mihomo 配置教程:从零写一份完整配置文件(DNS / TUN / 分流规则详解) 解决MoviePy保存视频时的视频质量降低问题 Tailscale+Headscale+自建Derp踩坑记录 解决Moviepy剪辑视频画面卡帧,但有声的问题 Surge Or Mihomo通过WireGuard回家 重装系统 -- Windows11 Win10/11配置fnm:解决PowerShell脚本运行受限问题 Ai 原画系统 基于社交媒体大数据的智慧政务系统 Miniconda安装教程 Doker-compose 网络互通 建立菲律宾台风损害模型
TUN 模式详解:System / gVisor / Mixed 三种堆栈的区别与选择
yyhhyyyyyy · 2024-08-21 · via yyhhyyyyyy

1. 起源

TUN 模式(即 Tunnel 模式)是 Mihomo、Clash、sing-box 等代理工具中常用的透明代理方式。配置文件中的 tun 字段实际上就是 tunnel 的缩写。自从了解到 TUN 模式的优势后,它已经成为许多人替代传统 system proxy 的首选。然而,TUN 模式有三种不同的网络堆栈实现,每种都有其特点和适用场景。

2. TUN (Tunnel) 模式概述

TUN 模式在网络层(第三层)接收流量,主要处理的是 TCP 和 UDP 协议的数据(虽然 ICMP 也是第三层协议,但通常不会去实现对它的处理)。接收到这些流量后,需要对可能被分割的数据包进行重组,以恢复完整的数据。

3. 三种网络堆栈

3.1 System

  • 解释:使用操作系统内核(kernelspace)创建 TCP 连接。
  • 优点:效率最高,直接利用系统内核的网络栈。
  • 缺点:兼容性可能受限于特定操作系统。

3.2 gVisor

  • 解释:在用户空间(userspace)实现的轻量级 IP 协议栈(lwIP)。
  • 优点:兼容性最佳,可在各种环境中运行。
  • 缺点:效率相对较低,因为在用户空间运行。

举个例子,在ios设备上用sing-box的tunnel模式,堆栈选择system不能在ios上正常启动,但是使用gVisor即可正常启动。这个实际上就是兼容性问题了。

3.3 mixed

  • 解释:TCP 使用 system 模式,UDP 使用 gVisor 模式。
  • 优点:平衡了效率和兼容性。
  • 缺点:实现复杂度增加,可能在某些特殊情况下表现不一致。

4.如何选择

个人建议,不管在什么环境下,TUN 模式的堆栈都按照 system>mixed>gvisor 这个顺序进行尝试。

这样能保证性能最优,使用起来效果最佳。

也推荐大家结合我的 Mihomo 配置文件 进行使用,其中包含了 TUN 模式的完整配置示例。

5.鸣谢

Sukka