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

V2Ray结合Squid代理实现伊朗VPS突破网络审查配置故障排查求助

V2Ray结合Squid代理实现伊朗VPS突破网络审查配置故障排查求助

看起来你已经搭好了基础架构,但配置里有几个关键问题导致服务无法正常工作,咱们一步步来排查和修正:


一、先确认VPS2上的Squid配置是否正确

Squid是整个链路的中转核心,必须确保它能正常接收VPS1的请求并完成代理:

  • 开启Squid的基本认证:编辑Squid配置文件(通常是/etc/squid/squid.conf),添加以下内容:
    # 启用基本认证
    auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
    auth_param basic realm Squid Proxy Cache
    acl authenticated proxy_auth REQUIRED
    
    # 允许伊朗VPS1的IP访问(替换成你的VPS1真实IP)
    acl vps1_src src 你的VPS1_IP/32
    http_access allow authenticated vps1_src
    http_access deny all
    
  • 生成认证密码文件:用htpasswd工具创建账号密码(如果没有htpasswd,先装httpd-tools):
    yum install httpd-tools -y
    htpasswd -c /etc/squid/passwd username
    
    执行后输入你设置的密码,然后重启Squid:systemctl restart squid
  • 测试Squid连通性:在VPS1上执行命令测试:
    curl -x http://username:password@你的VPS2_IP:3128 https://google.com
    
    如果能返回谷歌页面内容,说明Squid配置没问题。

二、修正V2Ray的核心配置(你当前的配置有2个致命问题)

问题1:没有对外开放的用户接入端口

你当前的V2Ray配置里,inbounds只有供API使用的dokodemo-door,没有对外开放的、用户可以连接的V2Ray端口,用户根本没法连进来!

问题2:VMESS流量无法通过Squid代理

Squid默认只支持HTTP/HTTPS流量转发,VMESS是私有TCP协议,不能让VMESS outbound走Squid,这会直接导致流量传输失败。

修正后的V2Ray配置

{
  "log": {
    "loglevel": "warning",
    "access": "./access.log"
  },
  "api": {
    "services": [
      "HandlerService",
      "LoggerService",
      "StatsService"
    ],
    "tag": "api"
  },
  "inbounds": [
    // 添加用户可以连接的VMESS inbound(替换成你自己的端口和UUID)
    {
      "listen": "0.0.0.0",
      "port": 443, // 建议用443端口,更容易绕过审查
      "protocol": "vmess",
      "settings": {
        "clients": [
          {
            "id": "你的用户UUID", // 给客户端用的UUID,自己生成一个
            "alterId": 64
          }
        ]
      },
      "tag": "user-inbound"
    },
    {
      "listen": "127.0.0.1",
      "port": 62789,
      "protocol": "dokodemo-door",
      "settings": {
        "address": "127.0.0.1"
      },
      "tag": "api"
    }
  ],
  "outbounds": [
    // 把Squid作为核心出站代理,所有用户流量走这里
    {
      "protocol": "http",
      "settings": {
        "servers": [
          {
            "address": "你的VPS2_IP",
            "port": 3128,
            "users": [
              {
                "user": "username",
                "pass": "password"
              }
            ]
          }
        ]
      },
      "tag": "HTTP"
    },
    {
      "protocol": "freedom",
      "settings": {}
    },
    {
      "protocol": "blackhole",
      "settings": {},
      "tag": "blocked"
    }
  ],
  "policy": {
    "levels": {
      "0": {
        "statsUserUplink": true,
        "statsUserDownlink": true
      }
    },
    "system": {
      "statsInboundDownlink": true,
      "statsInboundUplink": true
    }
  },
  "routing": {
    "rules": [
      {
        "inboundTag": [
          "api"
        ],
        "outboundTag": "api",
        "type": "field"
      },
      {
        "ip": [
          "geoip:private"
        ],
        "outboundTag": "blocked",
        "type": "field"
      },
      {
        "outboundTag": "blocked",
        "protocol": [
          "bittorrent"
        ],
        "type": "field"
      },
      // 强制用户流量走Squid代理
      {
        "inboundTag": [
          "user-inbound"
        ],
        "outboundTag": "HTTP",
        "type": "field"
      }
    ]
  },
  "stats": {}
}

三、检查两台VPS的防火墙设置

  • VPS1(伊朗):开放你设置的V2Ray端口(比如443):
    firewall-cmd --add-port=443/tcp --permanent
    firewall-cmd --reload
    
  • VPS2(国外):开放Squid的3128端口,同时确保服务商的安全组(比如DigitalOcean、阿里云的防火墙规则)允许VPS1的IP访问这个端口:
    firewall-cmd --add-port=3128/tcp --permanent
    firewall-cmd --reload
    

四、测试服务

  1. 在VPS1上重启V2Ray:systemctl restart v2ray
  2. 查看V2Ray日志排查错误:journalctl -u v2ray -f
  3. 用本地V2Ray客户端连接VPS1的IP和443端口,配置好对应的UUID和alterId,测试访问外网。

如果还是有问题,可以把V2Ray的日志级别改成info,看具体的流量转发错误信息,再针对性调整。

备注:内容来源于stack exchange,提问作者Omid.akz

火山引擎 最新活动