iT邦幫忙

0

tun2proxy -SOCKS5等代理轉換為TUN三層口

  • 分享至 

  • xImage
  •  

博客

https://songxwn.com/tun2proxy/

介绍

tun2proxy 是一个基于 smoltcp 在 Linux 上 通过HTTP 和 SOCKS 代理的创建隧道接口的项目,使用Rust 语言开发。

功能

  • HTTP 代理支持(无身份验证、基本身份验证和摘要身份验证)
  • SOCKS4 和 SOCKS5 支持(无身份验证、用户名/密码身份验证)
  • SOCKS4a和SOCKS5h支持(通过虚拟DNS功能)
  • 用于路由所有流量的自动化配置
  • IPv4 和 IPv6 支持
  • SOCKS5 UDP 支持
  • 本机支持通过 TCP 代理 DNS

项目地址:https://github.com/blechschmidt/tun2proxy

安装使用

手动编译

git clone https://github.com/blechschmidt/tun2proxy.git

# 克隆项目

cd tun2proxy

cargo build --release

# 编译 (需要提前安装cargo工具)

cd ./target/release

# 进入输出目录

下载二进制包

官方发布地址:https://github.com/blechschmidt/tun2proxy/releases

PS:选好对应CPU和系统

本站编译好的:https://songxwn.com/file/tun2proxy (Linux X86-64)

使用-手动配置路由和接口

ip tuntap add name tun163 mode tun user $USER

# 提前创建好tun三层虚拟口

sudo ip link set tun163 up

# 配置状态为UP


./tun2proxy --tun tun163 --proxy "socks5://username:passwd@1.1.1.1:9527"

# 前台运行,将socks5 转换为三层接口。格式为proto://[username[:password]@]host:port

ip route add 128.0.0.0/1 dev tun163

# 手动配置路由指向,也可以配置策略路由等操作。


PS:IP命令配置的都是临时的,重启失效。

使用-自动化配置

./tun2proxy --setup auto --proxy "socks5://1.2.3.4:1080"


# 自动将所有流量路由到指定的代理。

命令说明

Tunnel interface to proxy.

Usage: tun2proxy [OPTIONS] --proxy <URL>

Options:
  -t, --tun <name>         Name of the tun interface [default: tun0]
      --tun-fd <fd>        File descriptor of the tun interface
      --tun-mtu <mtu>      MTU of the tun interface (only with tunnel file descriptor) [default: 1500]
  -p, --proxy <URL>        Proxy URL in the form proto://[username[:password]@]host:port
  -d, --dns <strategy>     DNS handling strategy [default: virtual] [possible values: virtual, over-tcp, direct]
      --dns-addr <IP>      DNS resolver address [default: 8.8.8.8]
  -6, --ipv6-enabled       IPv6 enabled
  -s, --setup <method>     Routing and system setup [default: none] [possible values: none, auto]
  -b, --bypass <IP|CIDR>   IPs and CIDRs used in routing setup which should bypass the tunnel
  -v, --verbosity <level>  Verbosity level [default: info] [possible values: off, error, warn, info, debug, trace]
  -h, --help               Print help
  -V, --version            Print version

DNS解析

当 DNS 解析由机器上的服务或本地网络中的服务器执行时,DNS 解析将不会通过隧道接口执行,因为指向 localhost 或本地网络的路由比Tun 通道更细。 在这种情况下,建议更新文件以使用通过隧道接口路由的名称服务器地址。当虚拟 DNS 正常工作时,你会看到通过以下方式解析后的主机名连接日志信息,

Tun和Tap

Tun虚拟设备和物理网卡的区别是Tun虚拟设备是IP层设备,从/dev/net/tun字符设备上读取的是IP数据包,写入的也只能是IP数据包,因此不能进行二层操作,如发送ARP请求和以太网广播。与之相对的是,Tap虚拟设备是以太网设备,处理的是二层以太网数据帧,从/dev/net/tun字符设备上读取的是以太网数据帧,写入的也只能是以太网数据帧。从这点来看,Tap虚拟设备和真实的物理网卡的能力更接近。


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言