Socks和HTTP代理的隧道(TUN)接口内网穿透
|
admin
2024年3月28日 22:28
本文热度 521
|
这是一个用于Linux、Android、macOS、iOS和Windows上的HTTP和SOCKS代理的隧道接口。HTTP代理支持(未经身份验证、基本身份验证和摘要身份验证)
SOCKS4和SOCKS5支持(未经身份验证,用户名密码身份验证)
SOCKS4a和SOCKS5h支持(通过虚拟DNS功能)
路由所有流量的最小配置设置
IPv4和IPv6支持
某些用例的GFW规避机制
SOCKS5 UDP支持
本机支持通过TCP代理DNS
如何构建源码?
1,二进制安装,直接从releases下载,然后配置PATH路径即可。
2,从源码构建,cargo install tun2proxy。
1,自动配置
使用--setup,您可以让tun2proxy将您的系统配置为通过指定的代理自动路由所有流量。这需要以root身份运行该工具,并将大致指向描述手动设置的部分中概述的步骤,但使用绑定挂载来覆盖/etc/resolv.conf文件除外。你应该想下面这样运行工具:
sudo ./target/release/tun2proxy --setup --proxy "socks5://1.2.3.4:1080"
除了SOCKS5之外,还支持SOCKS4和HTTP。
请注意,如果您的代理是非全局IP地址(例如,因为代理是由本地运行的某个隧道工具提供的),则您还需要提供实际传输流量的服务器的公共IP地址。在这种情况下,如果您希望使用自动设置功能,该工具将告诉您通过--bypass<IP>指定地址。
2,手动配置
标准设置将通过隧道接口路由来自系统的所有流量,其配置如下:# The proxy type can be either SOCKS4, SOCKS5 or HTTP.
PROXY_TYPE=SOCKS5
PROXY_IP=1.2.3.4
PROXY_PORT=1080
BYPASS_IP=123.45.67.89
# Create a tunnel interface named tun0 which you can bind to,
# so we don't need to run tun2proxy as root.
sudo ip tuntap add name tun0 mode tun
sudo ip link set tun0 up
# To prevent a routing loop, we add a route to the proxy server that behaves
# like the default route.
sudo ip route add "$BYPASS_IP" $(ip route | grep '^default' | cut -d ' ' -f 2-)
# Route all your traffic through tun0 without interfering with the default route.
sudo ip route add 128.0.0.0/1 dev tun0
sudo ip route add 0.0.0.0/1 dev tun0
# If you wish to also route IPv6 traffic through the proxy, these two commands will do.
sudo ip route add ::/1 dev tun0
sudo ip route add 8000::/1 dev tun0
# Make sure that DNS queries are routed through the tunnel.
sudo sh -c "echo nameserver 198.18.0.1 > /etc/resolv.conf"
./target/release/tun2proxy --tun tun0 --proxy "$PROXY_TYPE://$PROXY_IP:$PROXY_PORT"
此工具实现了虚拟DNS功能,交换机通常使用的--DNS virtual。当检测到DNS数据包到端口53时,会选择198.18.0/15的IP地址并将其映射到查询名称。指向该范围中某个IP地址的连接将为代理提供映射的查询名称,而不是IP地址。由于许多代理不支持UDP,因此在大多数情况下,这可以实现开箱即用的体验,而无需依赖第三方解析器或应用程序。根据您的使用情况,您可能希望使用--dns direct禁用此功能。在这种情况下,您可能需要一个额外的工具,如dnsproxy,该工具被配置为侦听本地UDP端口,并通过TCP与第三方上游DNS服务器通信。当您终止此程序并希望消除以上几个命令造成的影响时,可以执行以下命令,路由所使用的隧道设备将被删除。
该文章在 2024/3/28 22:28:55 编辑过