0031400 (@lxz07)代理软件 tun 模式的简单原理 中发帖

博客地址 0031400's blog 
原文
代理软件为了处理本机全部流量,大多时候会使用 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 ,作为临时中介 ip
tun_ip 监听一个随机 tcp 服务端口 listen_port
设置系统默认路由 到 wintun ...