You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

借助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转发:

  1. 编辑sysctl配置文件:
    sudo nano /etc/sysctl.conf
    
  2. 找到或添加以下两行,取消注释(如果原来有注释的话):
    net.ipv6.conf.all.forwarding=1
    net.ipv6.conf.default.forwarding=1
    
  3. 让配置立即生效:
    sudo sysctl -p
    

第三步:配置英国服务器的V2Ray监听IPv6

假设你已经在英国服务器安装了V2Ray,现在需要修改配置让它监听IPv6地址:

  1. 打开V2Ray的配置文件(通常路径是 /etc/v2ray/config.json):
    sudo nano /etc/v2ray/config.json
    
  2. 修改inbounds部分,确保它监听所有IPv6地址,示例配置如下(根据你实际用的协议调整,这里以vmess为例):
    "inbounds": [
      {
        "port": 10086, // 自定义的端口,记得后续开放防火墙
        "listen": "[::]", // 监听所有IPv6地址
        "protocol": "vmess",
        "settings": {
          "clients": [
            {
              "id": "你的UUID字符串", // 提前生成好,两台服务器要一致
              "alterId": 0 // 新版本V2Ray建议设为0
            }
          ]
        },
        "streamSettings": {
          "network": "tcp" // tcp协议稳定性高,适合全流量转发
        }
      }
    ]
    
  3. 重启V2Ray服务让配置生效:
    sudo systemctl restart v2ray
    
  4. 开放英国服务器的IPv6防火墙端口:
    • 如果用ip6tables:
      sudo ip6tables -A INPUT -p tcp --dport 10086 -j ACCEPT
      
    • 如果用ufw(更简单):
      sudo ufw allow 10086/tcp proto ipv6
      

第四步:在伊朗服务器配置V2Ray透明代理(全流量转发)

这一步是核心,要让伊朗服务器的所有流量都通过V2Ray转发到英国服务器:

  1. 先安装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"
        }
      ]
    }
    
  2. 配置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
    
  3. 重启伊朗服务器的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

火山引擎 最新活动