你每天用VPN,但你想过吗——OpenVPN、WireGuard 这种纯用户态程序,凭什么能接管整个机器的数据包?答案藏在 Linux 用了 20 多年的一张"假网卡"里。
本期内容:
- TUN/TAP 到底是什么——内核里一张"看起来像网卡,但背后通向用户态"的虚拟接口
- TUN(L3 IP 包)vs TAP(L2 以太帧)的本质区别和选型建议
- 字符设备 /dev/net/tun + ioctl TUNSETIFF 凭空造网卡的源码原理
- drivers/net/tun.c 双重身份机制:file_operations + net_device_ops 共享 tun_struct
- 数据通路完整时间线:tun_net_xmit → ptr_ring → read(fd) → 加密 → eth0
- 反向通路:write(fd) → netif_rx → 协议栈以为收到新包
- 为什么单核 OpenVPN 极限只有 200~400 Mbps,WireGuard 内核版凭什么接近线速
- TUN 支持多队列、NAPI、XDP/eBPF——一个 1999 年的驱动如何跟上 2020 年代高性能网络
- 致敬 TUN/TAP 原作者 Maxim Krasnyansky、OpenVPN 作者 James Yonan、WireGuard 作者 Jason Donenfeld、Linux 创始人 Linus Torvalds
适合人群:
- 想搞懂 VPN/SDN 原理的后端、网络、SRE 工程师
- 想看 Linux 网络栈"骗过协议栈"巧妙设计的内核爱好者
- 正在调优 OpenVPN/WireGuard/Tailscale 性能的运维工程师
- 准备虚拟网络/容器网络面试的同学
#Linux #内核 #VPN #WireGuard #OpenVPN #网络