這是一個用于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 編輯過