借助IPv6实现伊朗Ubuntu服务器到英国Ubuntu服务器的全流量转发配置求助
借助IPv6实现伊朗Ubuntu服务器到英国Ubuntu服务器的全流量转发配置求助
Hey there! 看了你的需求,你已经通过Hurricane Electric Tunnel Broker给两台Ubuntu服务器都配置了IPv6,现在想把伊朗服务器的所有流量通过IPv6隧道转发到英国的V2Ray服务器,绕过网络过滤还提升访问速度对吧?我来一步步帮你搞定这个配置:
第一步:确认两台服务器的IPv6连通性
先确保两台服务器的IPv6都能正常工作,这是后续配置的基础:
- 在伊朗和英国服务器上分别执行
ping6 ipv6.google.com,如果能收到响应,说明IPv6连通正常 - 记下英国服务器的IPv6公网地址(就是Tunnel Broker分配给你的那个,格式类似
2001:db8::1),还有伊朗服务器自身的IPv6地址备用
第二步:开启伊朗服务器的IPv6转发功能
要让伊朗服务器能转发流量,得先开启系统的IPv6转发:
- 编辑sysctl配置文件:
sudo nano /etc/sysctl.conf - 找到或添加以下两行,取消注释(如果原来有注释的话):
net.ipv6.conf.all.forwarding=1 net.ipv6.conf.default.forwarding=1 - 让配置立即生效:
sudo sysctl -p
第三步:配置英国服务器的V2Ray监听IPv6
假设你已经在英国服务器安装了V2Ray,现在需要修改配置让它监听IPv6地址:
- 打开V2Ray的配置文件(通常路径是
/etc/v2ray/config.json):sudo nano /etc/v2ray/config.json - 修改
inbounds部分,确保它监听所有IPv6地址,示例配置如下(根据你实际用的协议调整,这里以vmess为例):"inbounds": [ { "port": 10086, // 自定义的端口,记得后续开放防火墙 "listen": "[::]", // 监听所有IPv6地址 "protocol": "vmess", "settings": { "clients": [ { "id": "你的UUID字符串", // 提前生成好,两台服务器要一致 "alterId": 0 // 新版本V2Ray建议设为0 } ] }, "streamSettings": { "network": "tcp" // tcp协议稳定性高,适合全流量转发 } } ] - 重启V2Ray服务让配置生效:
sudo systemctl restart v2ray - 开放英国服务器的IPv6防火墙端口:
- 如果用ip6tables:
sudo ip6tables -A INPUT -p tcp --dport 10086 -j ACCEPT - 如果用ufw(更简单):
sudo ufw allow 10086/tcp proto ipv6
- 如果用ip6tables:
第四步:在伊朗服务器配置V2Ray透明代理(全流量转发)
这一步是核心,要让伊朗服务器的所有流量都通过V2Ray转发到英国服务器:
- 先安装V2Ray(如果还没装),然后修改配置文件
/etc/v2ray/config.json,示例配置如下:"inbounds": [ // 本地socks/http代理(可选,方便测试) { "port": 1080, "listen": "127.0.0.1", "protocol": "socks", "settings": { "auth": "noauth", "udp": true } }, { "port": 1081, "listen": "127.0.0.1", "protocol": "http" }, // 透明代理需要的tproxy inbound { "port": 12345, "listen": "::", "protocol": "dokodemo-door", "settings": { "network": "tcp,udp", "followRedirect": true }, "streamSettings": { "sockopt": { "tproxy": "tproxy" } } } ], "outbounds": [ // 指向英国服务器的V2Ray节点 { "protocol": "vmess", "settings": { "vnext": [ { "address": "英国服务器的IPv6地址", // 替换成你之前记下的地址 "port": 10086, "users": [ { "id": "和英国服务器一致的UUID", "alterId": 0 } ] } ] }, "streamSettings": { "network": "tcp" } }, // 直接连接的出口(可选,用于例外规则) { "protocol": "freedom", "tag": "direct" } ], "routing": { "domainStrategy": "IPOnDemand", "rules": [ // 让所有IPv4和IPv6流量都走V2Ray { "type": "field", "ip": ["0.0.0.0/0", "::/0"], "outboundTag": "vmess" } ] } - 配置IPv6的tproxy规则,让所有流量被V2Ray捕获:
# 创建专门的路由表用于转发 sudo ip -6 route add local ::/0 dev lo table 100 # 添加规则,标记过的流量跳转到这个路由表 sudo ip -6 rule add fwmark 1 table 100 # 用ip6tables标记所有tcp/udp流量并转发到V2Ray的tproxy端口 sudo ip6tables -t mangle -A PREROUTING -p tcp --syn -j TPROXY --on-port 12345 --tproxy-mark 0x1/0x1 sudo ip6tables -t mangle -A PREROUTING -p udp -j TPROXY --on-port 12345 --tproxy-mark 0x1/0x1 - 重启伊朗服务器的V2Ray服务:
sudo systemctl restart v2ray
第五步:验证配置是否生效
- 在伊朗服务器执行以下命令,查看返回的IP是否是英国服务器的IPv6地址:
curl -6 https://ifconfig.co - 测试访问一些原本被过滤的网站,确认可以正常打开,同时测速验证速度是否符合预期
一些注意事项
- 确保英国服务器的防火墙不仅开放了V2Ray的IPv6端口,还允许IPv6出站流量(默认一般允许,但可以检查ufw的状态:
sudo ufw status) - 如果服务器重启后规则失效,可以用
netfilter-persistent保存ip6tables规则:sudo apt install netfilter-persistent sudo netfilter-persistent save - 如果有本地服务不需要转发,可以在V2Ray的
routing规则里添加例外,比如指定某个IP段走direct标签
备注:内容来源于stack exchange,提问作者MHmansouri




