技术方案:IPv6-only VPS 借用双栈服务器 IPv4 出口 (Tinyproxy 篇)
- 场景背景
客户端:IPv6-only VPS(无公网 IPv4,无法直接访问仅支持 IPv4 的网站,如 GitHub、部分 API 等)。
服务端:双栈 VPS(同时拥有公网 IPv4 和 IPv6)。
目标:在双栈机上搭建代理,让 IPv6-only 机子通过 IPv6 隧道连接,并由双栈机代理发出 IPv4 请求。 双栈服务器端配置 (Server Side)
安装与环境准备:apt update && apt install tinyproxy -y # 准备日志目录 mkdir -p /var/log/tinyproxy chown -R tinyproxy:tinyproxy /var/log/tinyproxy核心配置文件
/etc/tinyproxy/tinyproxy.conf:
(注意:如果使用宝塔面板,请将端口改为 18888 避开冲突,并在面板放行该端口的 IPv6 入站连接)# 用户和组保持默认 User tinyproxy Group tinyproxy # 监听端口 Port 18888 # 关键:不要写 Listen 0.0.0.0,也不要写 BindIPv6。 # 直接写这一行,它会同时监听 IPv4 和 IPv6 的所有网卡。 Listen :: # 超时设置 Timeout 600 LogLevel Info # 日志路径(确保目录存在并有权限) LogFile "/var/log/tinyproxy/tinyproxy.log" PidFile "/run/tinyproxy/tinyproxy.pid" # 性能控制 MaxClients 100 MinSpareServers 5 MaxSpareServers 20 StartServers 10 MaxRequestsPerChild 0 # 隐私与安全 ViaProxyName "tinyproxy" DisableViaHeader Yes ConnectPort 443 ConnectPort 80 # --- 权限控制 (Allow 列表) --- Allow 127.0.0.1 Allow ::1 # 1. 允许你的 IPv6-only VPS (精确地址) Allow 240a:aaaa:c11:700::4:2d64 # 2. 建议同时允许该地址所属的整个段 (防止临时 IPv6 变动导致 403) Allow 240a:95d:c11:700::/64 # 如果还是报 403,测试时可以临时把下面这行的 # 删掉放开全网(测完务必加回去) # Allow ::/0启动服务
systemctl restart tinyproxy systemctl enable tinyproxyIPv6-only VPS 端配置 (Client Side)
设置系统环境变量:
由于 IPv6 地址包含冒号,在代理字符串中必须使用方括号 [] 括起来。# 1. 临时生效测试 export http_proxy="http://[双栈服务器IPv6]:18888" export https_proxy="http://[双栈服务器IPv6]:18888" export all_proxy="http://[双栈服务器IPv6]:18888" #例如 export https_proxy="http://[1997:22e0:ffa9:qqd3:433e:8ff4:3443:3t34]:18888" # 2. 验证 IPv4 访问(如果返回双栈机的 IPv4 地址则成功) curl -s https://icanhazip.com # 3. 永久生效(写入配置文件) echo 'export http_proxy="http://[双栈服务器IPv6]:18888"' >> ~/.bashrc echo 'export https_proxy="http://[双栈服务器IPv6]:18888"' >> ~/.bashrc echo 'export all_proxy="http://[双栈服务器IPv6]:18888"' >> ~/.bashrc source ~/.bashrc让 Apt 包管理器也走代理(可选):
cat <<EOF > /etc/apt/apt.conf.d/80proxy Acquire::http::Proxy "http://[双栈服务器IPv6]:18888/"; Acquire::https::Proxy "http://[双栈服务器IPv6]:18888/"; EOF技术方案:SSH 加密隧道 (解决拦截/连接重置)
适用场景:当你发现 Tinyproxy 下载某些资源(如 Telegram 安装包、YouTube 视频)报错 Connection reset by peer 时,说明明文 HTTP 代理特征被识别拦截。此时需使用 SSH 加密的 SOCKS5 隧道。将SSH Socks5加密隧道纳入IPv6-only代理方案,可通过本地1080端口实现加密转发,有效绕过DPI检测,适用于敏感或大数据流量场景。在IPv6-only VPS上执行ssh -D 127.0.0.1:1080 -N -f root@[双栈机IPv6]即可建立隧道,并可通过netstat验证。通过在敏感应用中指定该加密代理,可与Tinyproxy基础代理实现分工明确的混合配置。
1.建立加密隧道 (在 IPv6-only VPS 执行)
执行以下命令,将流量封装在 SSH 隧道中发往双栈服务器:# 参数说明: # -D 127.0.0.1:1080 在本地开启 1080 端口作为 SOCKS5 入口 # -N 不执行远程命令(仅转发流量) # -f 后台运行 ssh -D 127.0.0.1:1080 -N -f root@your_ipv6_addressyour_ipv6_address是你的双栈vps的ipv6地址,首次连接需输入 yes 并填写双栈机的 root 密码。
验证隧道状态
确认本地 1080 端口是否已经处于监听状态root@dxipv6243-431269011855:~# netstat -lnpt | grep 1080 tcp 0 0 127.0.0.1:1080 0.0.0.0:* LISTEN 128519/ssh如上,看到 127.0.0.1:1080 LISTEN 即为成功
为什么这种方式更稳?
全流量加密:Tinyproxy 的 CONNECT 请求包含明文域名,容易被 DPI(深度包检测)拦截;SSH 隧道全程加密,中间设备只知道你在访问双栈服务器,无法识别具体内容。
无需额外服务端:只要双栈机开启了 SSH 服务(默认都有),就不需要像 sing-box 那样安装复杂的第三方服务端。
独立性:它与 Tinyproxy 互不冲突,可以根据需求灵活切换。
总结
最稳妥、最高效的配置方案是:将 Tinyproxy 设为系统默认(处理基础联网),将 SSH 隧道设为“增强开关”(处理下载和加密需求)。
编写配置文件
执行 nano ~/.bashrc,在文件末尾添加以下内容:# --- 默认代理 (Tinyproxy) --- # 这一行保证你平时执行 apt update 或安装软件时默认能上网 export http_proxy="http://[2400:e3e0:f5a9:afd3:4aee:8574:32f3:3434]:18888" export https_proxy="http://[2400:e3e0:f5a9:afd3:4aee:8574:32f3:3434]:18888" # --- 快捷指令 (命令别名) --- # 1. 开启 SSH 隧道后台运行 (如果断了或重启后,输入这个命令) alias ssh-on='ssh -D 127.0.0.1:1080 -N -f root@2400:e3e0:f5a9:afd3:4aee:8574:32f3:3434 && echo "SSH 隧道已在后台建立 (1080)"' # 2. 切换到加密模式 (下载 Telegram/YouTube 前输入这个) alias proxy-on='export all_proxy="socks5h://127.0.0.1:1080" && export http_proxy="socks5h://127.0.0.1:1080" && export https_proxy="socks5h://127.0.0.1:1080" && echo "模式已切换:当前走 SSH 加密隧道"' # 3. 切回普通模式 (下载完后输入这个,恢复给 wget/apt 使用) alias proxy-off='export http_proxy="http://[2400:e3e0:f5a9:afd3:4aee:8574:32f3:3434]:18888" && export https_proxy="http://[2400:e3e0:f5a9:afd3:4aee:8574:32f3:3434]:18888" && unset all_proxy && echo "模式已切换:当前走 Tinyproxy 普通代理"'2.立即生效:输入
source ~/.bashrc日常装软件(如 apt update)什么都不用操作,因为配置文件里默认写了 Tinyproxy,直接运行命令即可
要下载 Telegram 安装包(会报 Reset 的资源),先开隧道(如果刚重启完):输入 ssh-on,按提示输入双栈机密码。再切模式:输入 proxy-on。最后下载:curl -k -O -L https://xxx.exe
下完了,想换回普通上网
输入 proxy-off
评论区: