tun2proxy -SOCKS5等代理转换为TUN口
本文最后更新于 2024年3月26日 下午
介绍
tun2proxy 是一个基于 smoltcp 在 Linux 上 通过HTTP 和 SOCKS 代理的创建隧道接口的项目,使用Rust 语言开发。
功能
- HTTP 代理支持(无身份验证、基本身份验证和摘要身份验证)
- SOCKS4 和 SOCKS5 支持(无身份验证、用户名/密码身份验证)
- SOCKS4a和SOCKS5h支持(通过虚拟DNS功能)
- 用于路由所有流量的自动化配置
- IPv4 和 IPv6 支持
- SOCKS5 UDP 支持
- 本机支持通过 TCP 代理 DNS
项目地址:https://github.com/blechschmidt/tun2proxy
安装使用
手动编译
1 |
|
下载二进制包
官方发布地址:https://github.com/blechschmidt/tun2proxy/releases
PS:选好对应CPU和系统
本站编译好的:https://songxwn.com/file/tun2proxy (Linux X86-64)
使用-手动配置路由和接口
1 |
|
PS:IP命令配置的都是临时的,重启失效。
使用-自动化配置
1 |
|
命令说明
1 |
|
DNS解析
当 DNS 解析由机器上的服务或本地网络中的服务器执行时,DNS 解析将不会通过隧道接口执行,因为指向 localhost 或本地网络的路由比Tun 通道更细。 在这种情况下,建议更新文件以使用通过隧道接口路由的名称服务器地址。当虚拟 DNS 正常工作时,你会看到通过以下方式解析后的主机名连接日志信息,
Tun和Tap
Tun虚拟设备和物理网卡的区别是Tun虚拟设备是IP层设备,从/dev/net/tun字符设备上读取的是IP数据包,写入的也只能是IP数据包,因此不能进行二层操作,如发送ARP请求和以太网广播。与之相对的是,Tap虚拟设备是以太网设备,处理的是二层以太网数据帧,从/dev/net/tun字符设备上读取的是以太网数据帧,写入的也只能是以太网数据帧。从这点来看,Tap虚拟设备和真实的物理网卡的能力更接近。