0x00 前言
本文汇总下笔者在研究Clash(ClashMeta)等一些windows上的透明代理项目的一些技术思路总结,基于wintun OR windivert
0x01 配置&&功能
进程过滤
Rules 规则可支持按照PROCESS-NAME 源进程名、PROCESS-PATH 源进程路径等走对应的规则,比如
# clash 开 tun 模式代理,根据进程名匹配规则排除游戏代理 Netch.exe
- PROCESS-NAME,Netch.exe,DIRECT
PROCESS-NAME 源进程名
PROCESS-NAME 规则用于根据发送数据包的进程名称路由数据包
#目前, 仅支持 macOS、Linux、FreeBSD 和 Windows
PROCESS-NAME,nc,DIRECT 将任何来自进程 nc 的数据包路由到 DIRECT
PROCESS-PATH 源进程路径
PROCESS-PATH 规则用于根据发送数据包的进程路径路由数据包
#目前, 仅支持 macOS、Linux、FreeBSD 和 Windows
PROCESS-PATH,/usr/local/bin/nc,DIRECT 将任何来自路径为 /usr/local/bin/nc 的进程的数据包路由到 DIRECT
转发栈对比
Clash可选四种模式:
- system:system 模式使用系统协议栈, 可以提供更稳定全面的 tun 体验, 且占用相对其他堆栈更低
- gvisor:通过在用户空间中实现网络协议栈, 可以提供更高的安全性和隔离性, 同时可以避免操作系统内核和用户空间之间的切换, 从而在特定情况下具有更好的网络处理性能
- mixed:混合堆栈, tcp 使用 system 栈, udp 使用 gvisor 栈, 使用体验可能相对更好
- lwip:lwip 即 lightweight IP, 是一款专为嵌入式系统设计的 TCP/IP 协议栈, 采用了单线程的事件驱动模型, 性能表现可能不如 system/gvisor 协议栈(需要启用
CGO
)
0x02 参考
FEATURED TAGS
Latex
gRPC
负载均衡
OpenSSH
Authentication
Consul
Etcd
Kubernetes
性能优化
Python
分布式锁
WebConsole
后台开发
Golang
OpenSource
Nginx
Vault
网络安全
Perl
分布式理论
Raft
正则表达式
Redis
分布式
限流
go-redis
微服务
反向代理
ReverseProxy
Cache
缓存
连接池
OpenTracing
GOMAXPROCS
GoMicro
微服务框架
日志
Pool
Kratos
Hystrix
熔断
并发
Pipeline
证书
Prometheus
Metrics
PromQL
Breaker
定时器
Timer
Timeout
Kafka
Xorm
MySQL
Fasthttp
bytebufferpool
任务队列
队列
异步队列
GOIM
Pprof
errgroup
consistent-hash
Zinx
网络框架
设计模式
HTTP
Gateway
Queue
Docker
网关
Statefulset
NFS
Machinery
Teleport
Zero Trust
Oxy
存储
Confd
热更新
OAuth
SAML
OpenID
Openssl
AES
微服务网关
IM
KMS
安全
数据结构
hashtable
Sort
Asynq
基数树
Radix
Crontab
热重启
系统编程
sarama
Go-Zero
RDP
VNC
协程池
UDP
hashmap
网络编程
自适应技术
环形队列
Ring Buffer
Circular Buffer
InnoDB
timewheel
GroupCache
Jaeger
GOSSIP
CAP
Bash
websocket
事务
GC
TLS
singleflight
闭包
Helm
network
iptables
MITM
HTTPS
Tap
Tun
路由
wireguard
gvisor
Git
NAT
协议栈
Envoy
FRP
DPI
gopacket
Cgroup
Namespace
DNS
eBPF
GoZero
Gost
Clash
gopsutil
HIDS
ELKEID
XDP
TC