主 题:[blog] 代理软件 tun 模式的简单原理
发 布 者:lxz07
标签分类: 技术
时 间:2026-08-24 19:02:28
内容预览:博客地址 https://blog.0031400.xyz/posts/tun_proxy原文代理软件为了处理本机全部流量,大多时候会使用 tun 设备,也就是 linux 的 /dev/net/tun 以及 windows 的 wintun.dll ,然后设置默认路由到这个 tun 设备,于是就可以从 tun 设备中读取到包。环路但是代理软件内部也会进行网络请求,那么代理软件是怎么防止环路的呢?一个简单的方法是使用 setsockopt api ,在 linux 和 windows 都有对应api过程先分析 tcp启动一个tun接口,我们命名为 tun0,设置 ip 地址为 tun_ip ,比如 10.66.0.1 ,我们需要一个 tun_next_ip ,比如 10.66.0.2 ,作为临时中介 iptun_ip 监听一个随机 tcp 服务端口 listen_port设置系统默认路由 到 wintun设置一个 关于 tcp 四元组 和 nat_port 的nat map 和 对应的reverse map使用 curl https://www.baidu.com ,系统会发出一个 tun_ip:随机端口A -%26gt%3b www.baidu.com:443为了方便,用 www.baidu.com 代替请求的ip地址由于设置默认路由到 tun 设备,tun设备可以 read 到 tcp ip 包,从里面可以得到 tcp 的 源ip 目的ip 源端口 目的端口。如果源ip:port 不是 tun_ip:lisnte_port 那么就 申请一个新的nat_port ,并且和 四元组 对应。覆写 ip 报文的源ip 为 tun_next_ip ,源 port 为 nat_port ,目的ip 为 run_ip ,目的 port 为 listen_port 并且写入回 tun 设备此时 之
直达链接: https://www.nodeseek.com/post-891823-1
 
 
Back to Top