news 2026/8/27 15:07:44

http-proxy-ipv6-pool 部署完整指南:如何在 Vultr 服务器路由整段 /64 IPv6 子网

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
http-proxy-ipv6-pool 部署完整指南:如何在 Vultr 服务器路由整段 /64 IPv6 子网

http-proxy-ipv6-pool 部署完整指南:如何在 Vultr 服务器路由整段 /64 IPv6 子网

【免费下载链接】http-proxy-ipv6-poolMake every request from a separate IPv6 address.项目地址: https://gitcode.com/gh_mirrors/ht/http-proxy-ipv6-pool

http-proxy-ipv6-pool是一个用 Rust 编写的 HTTP 代理工具,它的核心功能是:让每一个请求都从一段 IPv6 子网里随机选取的不同地址发出。在 Vultr 等提供整段 /64 IPv6 子网的服务器上部署后,每次经过代理127.0.0.1:51080的访问,出口 IPv6 地址都会随机变化——非常适合需要多出口地址的爬虫、接口测试、反爬验证等场景。

为什么需要 IPv6 地址池代理?

普通代理所有请求共用同一个出口 IP,很容易被目标网站识别和限制。而IPv6 代理的思路完全不同:

对比项传统代理http-proxy-ipv6-pool
出口地址固定 1 个每请求随机 1 个
地址池大小依赖购买/64 子网约 2⁶⁴ 个地址
被封风险单点易封地址随机轮换,天然分散

一个/64子网包含约 1.8 × 10¹⁹ 个地址,理论上几乎不可能用完,这就是"整段子网即地址池"的由来。

工作原理:三个关键点

阅读 src/proxy.rs 可以很快看懂它的实现逻辑:

  1. 随机地址生成get_rand_ipv6()函数保留子网前缀,随机填充主机部分,从 /64 网段中生成一个随机 IPv6 地址;
  2. 本地绑定发送:普通 HTTP 请求通过 hyper 的HttpConnector::set_local_address()绑定该随机地址再发起连接;
  3. CONNECT 隧道:对于 HTTPS 请求,走tunnel()逻辑,新建一个 v6 socket 绑定随机地址后与目标建连,双向转发数据。

命令行入口在 src/main.rs,支持两个核心参数:

参数说明默认值
-b / --bind代理监听地址0.0.0.0:51080
-i / --ipv6-subnet你的 IPv6 子网2001:19f0:6001:48e4::/64

部署前提:准备 Vultr 服务器

⚠️前提条件:你需要一台路由了整段 IPv6 子网(而非单个 IPv6 地址)的 VPS。Vultr 在创建实例时勾选 "Route entire IPv6 subnet" 即可获得。

其他准备:

  • 🐧 Ubuntu / Debian 系统
  • 🦀 Rust 工具链(用于编译源码)
  • 🔌 服务器可正常访问外网

第一步:确认你的 IPv6 子网前缀

登录服务器后,执行ip a查看网卡信息:

$ ip a 2: enp1s0: <BROADCAST,MULTICAST,ALLMULTI,UP,LOWER_UP> mtu 1500 inet6 2001:19f0:6001:48e4:5400:3ff:fefa:a71d/64 scope global dynamic

注意/64前缀:2001:19f0:6001:48e4::/64就是你的 IPv6 子网,后面所有配置都会用到它。同时记下接口名(例如enp1s0)。

第二步:添加本地路由(关键!)

云厂商通常只给你分配一个"动态地址",子网内的其他地址默认无法直接绑定使用。必须手动告诉内核"这个 /64 网段都由本机接口处理":

ip route add local 2001:19f0:6001:48e4::/64 dev enp1s0

⚠️ 将命令中的子网和接口名替换为你自己的值。重启后该路由会丢失,需要写入/etc/network/interfaces或 systemd 单元持久化。

第三步:开启 ip_nonlocal_bind 内核参数

Linux 默认不允许进程绑定"不属于本机"的 IP 地址。打开ip_nonlocal_bind开关:

sysctl net.ipv6.ip_nonlocal_bind=1

如需开机生效,将以下内容追加到/etc/sysctl.conf

net.ipv6.ip_nonlocal_bind = 1

第四步:配置 NDP 代理(ndppd)

即使内核允许绑定随机地址,外部流量也找不到这些地址(邻居发现协议没有响应)。安装ndppd充当 NDP 代理,替子网内所有地址应答:

apt install ndppd

编辑/etc/ndppd.conf,按你的子网修改:

route-ttl 30000 proxy eth0 { router no timeout 500 ttl 30000 rule 2001:19f0:6001:48e4::/64 { static } }

注意:proxy eth0中的接口名换成你的实际外网接口(上面示例中的eth0,实际可能是enp1s0)。

启动服务:

systemctl enable --now ndppd

第五步:用 curl 验证基础环境

在启动代理之前,先用curl --interface手动绑定两个不同地址测试,确认整段子网已可直连:

$ curl --interface 2001:19f0:6001:48e4::1 ipv6.ip.sb 2001:19f0:6001:48e4::1 $ curl --interface 2001:19f0:6001:48e4::2 ipv6.ip.sb 2001:19f0:6001:48e4::2

✅ 如果两次返回的地址与绑定的地址一致,说明路由、ip_nonlocal_bind、ndppd 三项配置全部正确。

第六步:编译并启动 http-proxy-ipv6-pool

获取源码并编译:

git clone https://gitcode.com/gh_mirrors/ht/http-proxy-ipv6-pool cd http-proxy-ipv6-pool cargo build --release

带参数启动,-i指定你的子网,-b指定监听地址:

./target/release/http-proxy-ipv6-pool -b 0.0.0.0:51080 -i 2001:19f0:6001:48e4::/64

每个请求都会在终端打印一行日志,例如:

ipv6.ip.sb via 2001:19f0:6001:48e4:971e:f12c:e2e7:d92a

这正是随机地址轮换在工作。

第七步:最终验证——每请求一个新地址

循环请求ipv6.ip.sb(它会把你的出口 IPv6 地址回显出来):

$ while true; do curl -x http://127.0.0.1:51080 ipv6.ip.sb; done 2001:19f0:6001:48e4:971e:f12c:e2e7:d92a 2001:19f0:6001:48e4:6d1c:90fe:ee79:1123 2001:19f0:6001:48e4:f7b9:b506:99d7:1be9 2001:19f0:6001:48e4:a06a:393b:e82f:bffc 2001:19f0:6001:48e4:245f:8272:2dfb:72ce

🎉 每次请求的出口地址都不同——恭喜,IPv6 地址池代理部署成功!任何支持 HTTP 代理的工具(curl、scrapy、requests 等)指向127.0.0.1:51080即可享受随机出口。

常见问题排查(FAQ)

Q1:curl 测试某个子网地址超时?依次检查:①ip route show是否有 local 路由;②net.ipv6.ip_nonlocal_bind是否为 1;③ ndppd 是否在运行(systemctl status ndppd)。

Q2:重启服务器后失效?local 路由和 sysctl 需要持久化:路由写入网络配置或 systemd 服务,内核参数写入/etc/sysctl.confsysctl -p

Q3:代理只监听本机还是允许远程访问?默认绑定0.0.0.0:51080对所有网卡开放。若只想本机使用,建议改为-b 127.0.0.1:51080并在防火墙限制该端口。

Q4:为什么 HTTPS 也走随机地址?代理对CONNECT方法单独处理(见 src/proxy.rs 中的process_connect),为每个隧道新建绑定了随机 IPv6 的 socket,因此 HTTPS 流量的源地址同样是随机的。

写在最后

整套方案的核心就三件事:本地路由 + ip_nonlocal_bind + ndppd,再让 http-proxy-ipv6-pool 在你的 /64 子网上随机取址发请求。配置一次之后,你就拥有了一台出口地址近乎无限的 IPv6 代理服务器。项目基于 Rust + Tokio + hyper 编写(见 Cargo.toml),单二进制、零依赖,非常适合长期运行在 VPS 上。

【免费下载链接】http-proxy-ipv6-poolMake every request from a separate IPv6 address.项目地址: https://gitcode.com/gh_mirrors/ht/http-proxy-ipv6-pool

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/27 15:06:30

如何优雅处理Go程序信号:goc2p信号捕获与资源清理完全指南

如何优雅处理Go程序信号&#xff1a;goc2p信号捕获与资源清理完全指南 【免费下载链接】goc2p 项目地址: https://gitcode.com/gh_mirrors/go/goc2p 你是否按过 CtrlC 后&#xff0c;Go 程序瞬间退出&#xff0c;留下未关闭的文件、未写完的数据&#xff1f;本文基于 g…

作者头像 李华
网站建设 2026/8/27 15:06:12

SmoothNLP部署指南:Docker+Java+XGBoost从零搭建本地NLP微服务

SmoothNLP部署指南&#xff1a;DockerJavaXGBoost从零搭建本地NLP微服务 【免费下载链接】SmoothNLP 专注于可解释的NLP技术 An NLP Toolset With A Focus on Explainable Inference 项目地址: https://gitcode.com/gh_mirrors/smo/SmoothNLP SmoothNLP 是一款专注于可解…

作者头像 李华
网站建设 2026/8/27 15:02:28

Wordle AI小型挑战:轻量级大模型推理与多轮对话评测实践

这次我们来看一个非常轻量但很有意思的项目&#xff1a;Wordle but small AI mini challenges。名字里的 Wordle 指的是经典的猜词游戏&#xff0c;后半句可以理解成“专门给 AI 准备的一批小型挑战”。如果你平时总在跑大模型、跑 ComfyUI、跑图像生成&#xff0c;这个项目反而…

作者头像 李华