v2ray 配置 SOCKS5:本地入站 vs 远程上游,两套 config.json+curl 验证

更新于 2026-10-24 · xn--kbtz2zn3ab56c.shop

简答:照着教程填了 1080 仍连不上,通常是把本地 SOCKS5 入站、远程 SOCKS5 出站或 HTTP 代理混在了一起。先确认应用连接的是 V2Ray 的本地 socks 入站,再按实际核心版本检查配置,最后用 curl 和日志验证出口。

定义:V2Ray 的 SOCKS5 配置,是用 socks 入站接收本机应用请求,再通过 freedom、VMess 或远程 SOCKS5 出站转发流量。

先判断你要配置哪一种 SOCKS5

照着教程填了 1080 仍连不上,通常不是端口数字本身有问题,而是把 本地 SOCKS5 入站、远程 SOCKS5 出站或 HTTP 代理混在了一起。本站是第三方使用指南站,不代表任何核心或客户端的官方页面;下面示例按 V2Ray v4 JSON 配置组织,实际字段应以你正在运行的核心为准。

目标写在哪应用端连接哪里关键判断
让本机应用使用 SOCKS5inbounds127.0.0.1:本地端口应用连接的是 V2Ray 本地入口
通过 VMess 远程出口转发outbounds 的 protocol: vmess仍连接本地 SOCKS5 入口远端地址、端口、UUID 和传输参数必须匹配
连接已有远程 SOCKS5outbounds 的 protocol: socks仍连接本地 SOCKS5 入口上游地址、端口和账号密码必须正确

V2Ray 的配置结构以入站和出站为主:入站接收前一个节点或本机应用的请求,出站连接下一个节点或目标地址。V2Fly 的入门文档也用本地 socks 入站配合远程 VMess 出站说明这条数据流,可查看 V2Fly VMess 配置说明。

最快可用:本地 SOCKS5 入站+直连出口

如果只是先确认本机应用能否连接 V2Ray,使用下面的最小 v4 JSON 配置。它只监听回环地址,不向局域网开放,适合先排除端口、协议和浏览器填写错误。

{
  "log": {
    "loglevel": "warning"
  },
  "inbounds": [
    {
      "port": 1080,
      "listen": "127.0.0.1",
      "tag": "socks-in",
      "protocol": "socks",
      "settings": {
        "auth": "noauth",
        "udp": false
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "tag": "direct",
      "settings": {}
    }
  ]
}
  • port 是 V2Ray 本地监听端口,1080 只是示例,不能推断其他实例也使用该端口。
  • listen: 127.0.0.1 只接受本机连接;不要为了省事改成 0.0.0.0。
  • protocol: socks 表示入站协议是 SOCKS,不是 HTTP。
  • auth: noauth 表示不使用账号密码,只适合与本机回环监听配合。
  • udp: false 先关闭 UDP,便于优先确认网页等 TCP 请求。

V2Fly 的官方示例配置同样使用本地 127.0.0.1 监听和 socks 入站,并说明监听所有接口会扩大暴露范围,可参考 V2Fly 官方示例配置文件。

如果需要 SOCKS5 用户名密码,把入站设置改为下面的结构;此时应用端也必须填写相同账号和密码:

"settings": {
  "auth": "password",
  "accounts": [
    {
      "user": "USERNAME",
      "pass": "PASSWORD"
    }
  ],
  "udp": false
}

不同核心对认证字段的细节可能存在差异。若你运行的是 Xray,应按其 SOCKS 入站文档核对字段;Xray 文档明确列出 noauth、password、用户账号和 UDP 设置,可查看 Xray SOCKS 入站配置说明。

本地 SOCKS5 入站+VMess 远程出口

已有 VMess 服务器信息时,最常见的结构是:浏览器或应用连接本机 SOCKS5,V2Ray 再通过 VMess 出站连接远端。下面示例沿用本地 1080 端口,远端参数全部使用占位符,不能直接当作真实节点信息。

{
  "log": {
    "loglevel": "warning"
  },
  "inbounds": [
    {
      "port": 1080,
      "listen": "127.0.0.1",
      "tag": "socks-in",
      "protocol": "socks",
      "settings": {
        "auth": "noauth",
        "udp": false
      }
    }
  ],
  "outbounds": [
    {
      "tag": "vmess-out",
      "protocol": "vmess",
      "settings": {
        "vnext": [
          {
            "address": "SERVER_ADDRESS",
            "port": SERVER_PORT,
            "users": [
              {
                "id": "UUID",
                "alterId": 0,
                "security": "auto"
              }
            ]
          }
        ]
      }
    }
  ]
}

需要替换的项目包括远端服务器地址、端口、UUID,以及服务端要求的用户参数。若服务端使用 TLS、WebSocket、gRPC 或其他传输方式,还必须补充与服务端一致的 streamSettings;只改 UUID 或端口不能替代传输层配置。V2Fly 的 VMess 示例展示了客户端 socks 入站与 VMess 出站的基本结构,可参考 V2Fly VMess 基础配置。

如果日志出现用户校验失败、连接被拒绝或远端握手失败,优先核对 UUID、服务器端口、系统时间、防火墙和传输参数。V2Fly 文档列出的排查方向也包括客户端入站端口、远端地址、服务器入站端口和防火墙。

连接远程 SOCKS5 上游的配置

如果你已经有一个远程 SOCKS5 服务,而不是 VMess 服务,出站应写成 protocol: socks。本机应用仍然连接 V2Ray 的本地 socks 入站,V2Ray 再连接远程上游。

{
  "log": {
    "loglevel": "warning"
  },
  "inbounds": [
    {
      "port": 1080,
      "listen": "127.0.0.1",
      "tag": "socks-in",
      "protocol": "socks",
      "settings": {
        "auth": "noauth",
        "udp": false
      }
    }
  ],
  "outbounds": [
    {
      "tag": "socks-upstream",
      "protocol": "socks",
      "settings": {
        "servers": [
          {
            "address": "UPSTREAM_ADDRESS",
            "port": UPSTREAM_PORT,
            "users": [
              {
                "user": "USERNAME",
                "pass": "PASSWORD"
              }
            ]
          }
        ]
      }
    }
  ]
}

远程上游不需要认证时,可以删除 users 数组;需要认证时,用户名和密码必须由有权管理该服务的人提供。SOCKS5 协议本身不负责加密传输,账号、密码和流量不应直接暴露在不可信的公网链路中。Xray 官方文档明确提醒 SOCKS 不适合直接通过公网传输;更稳妥的做法是仅在可信网络或已有加密隧道中使用,并限制监听地址和防火墙来源,可参考 Xray SOCKS 安全说明。

远程 SOCKS5 与本地 SOCKS5 是两个不同角色:本地应用填写的是 V2Ray 的入站端口,远程地址和远程认证只写在 V2Ray 的出站配置里,不能把远程服务器地址直接填进浏览器的本地代理栏。

应用端填写速查卡:地址、端口和认证

场景代理类型地址端口认证
本地无认证 SOCKS5SOCKS5127.0.0.1配置中的 inbounds.port关闭
本地账号密码 SOCKS5SOCKS5127.0.0.1配置中的本地端口填写入站账号密码
v2rayN 图形客户端以设置页显示为准通常是本机回环地址查看本地 SOCKS 或混合监听端口按界面和配置决定
远程 SOCKS5 上游应用仍选本地 SOCKS5填写本地地址填写本地入站端口应用认证与本地入站一致

v2rayN 对自定义配置未必能自动识别本地 SOCKS 端口,官方界面说明要求用户手工填写或查看配置中的实际端口;基础设置中的“本地混合监听端口”也可能同时关联 SOCKS5 和 HTTP。因此不要把某个经验端口当成固定值,7890、7897、1080 或 10808 都不能脱离设置页和配置文件单独判断。可查看 v2rayN 官方界面与本地端口说明。

curl 验证 SOCKS5 时不要写成 HTTP 代理:

curl --socks5-hostname 127.0.0.1:1080 https://example.com

带认证时可使用:

curl --proxy socks5h://USERNAME:[email protected]:1080 https://example.com

其中 socks5h 表示让域名解析交给 SOCKS5 端处理。用户名或密码包含特殊字符时,应先进行 URL 编码。浏览器则选择 SOCKS5,填写本机地址和实际端口,不要把 SOCKS5 端口填到 HTTP 代理栏。

配置检查:按二进制版本和配置格式选择命令

下面的命令必须根据“二进制版本”和“配置格式”一起判断。本文示例是 v4 JSON,不要因为安装的是较新的 V2Ray 二进制就直接把 v4 配置改写成 v5 格式。

二进制与配置组合检查命令判定标准
V2Ray v4 二进制+v4 JSONv2ray -test -config config.json命令无报错并以退出码 0 结束
V2Ray v5 二进制+v4 JSONv2ray test -c config.json命令无报错并以退出码 0 结束
V2Ray v5 二进制+v5 JSONv2ray test -c config.json -format jsonv5命令无报错并以退出码 0 结束
Xray 二进制+对应 JSONxray run -test -c config.json命令无配置加载错误并以退出码 0 结束

不要把“Configuration OK”“Test succeeded”等提示文字当作跨版本固定输出;不同核心和构建版本的提示可能不同,最稳妥的判断是命令没有报错且退出码为 0。V2Ray 项目曾同时维护 v4 与 v5 配置格式,v5 配置示例和测试输出也使用过 jsonv5 参数,可参考 V2Fly 配置测试示例。

如果命令报错,先确认当前目录、配置文件路径、二进制名称和配置格式;再检查 JSON 括号、逗号、字段拼写,以及是否把 Xray 字段写进 V2Ray 配置。检查通过后再启动服务,不要用“网页打不开”反推配置文件一定正确。

端口、日志和系统排错步骤

  1. 确认端口是否监听。Windows 执行 netstat -ano | findstr :1080;Linux 执行 sudo ss -lntup | grep ':1080';macOS 执行 lsof -nP -iTCP:1080 -sTCP:LISTEN。把 1080 替换成配置或客户端设置页中的实际端口。
  2. 确认监听地址。127.0.0.1 只能本机访问;如果改成 0.0.0.0,必须限制防火墙来源并启用认证,避免形成未授权的开放代理。
  3. 确认端口没有被旧进程占用。Windows 根据 PID 查看进程;Linux 和 macOS 根据命令输出确认监听程序。不要直接结束不明系统进程,优先停止旧客户端或换用空闲端口。
  4. 临时打开日志。将日志级别改为 debug,必要时配置 access 和 error 日志路径,重启后查看是否出现入站连接、目标地址、VMess 握手或远程 SOCKS 出站错误。排查结束后恢复较低日志级别。
  5. 查看服务状态。Linux 使用 systemd 时可执行 sudo systemctl restart v2ray,再执行 sudo journalctl -u v2ray -n 100 --no-pager。实际 unit 名称可能不同,应以本机安装方式为准。V2Ray 安装文档也列出了 systemd 服务文件和重启操作,可参考 V2Ray 安装与服务管理说明。
  6. 验证是否真的经过代理。先执行 curl 测试,再对比启用代理前后的出口 IP;同时查看连接日志中是否命中了预期的入站和出站。只看网页能否打开,不能证明请求一定走了目标出口。

Windows 还要检查防火墙是否允许当前程序在对应网络配置文件下运行;macOS 需要检查系统是否阻止应用或网络扩展;Linux 则要确认配置文件、日志目录和 systemd 服务用户具有读取或写入权限。

UDP、DNS、IPv4 和 IPv6 的常见误区

  • UDP 不是打开一个开关就结束。SOCKS 入站的 udp 只表示是否接收 UDP 请求,应用、出站协议、系统防火墙和远程服务也必须支持 UDP。
  • ip 字段只在 UDP 场景重点关注。它用于告诉核心本机可被客户端用于 UDP 关联的地址;如果机器位于 NAT 后方、拥有多个地址,错误的地址可能导致 UDP 失败。普通 TCP 网页测试可以先不依赖该字段。
  • DNS 解析位置会影响结果。curl --socks5-hostname 会让域名交给 SOCKS5 端处理;普通 --socks5 的解析行为可能不同。出现“IP 能通、域名不通”时,单独检查 DNS 和 IPv4/IPv6。
  • 不要把 HTTP 和 SOCKS5 混用。应用必须支持并选择 SOCKS5;如果只支持 HTTP,就需要配置独立的 HTTP 入站,而不能直接填写 SOCKS5 端口。
  • 公网监听要单独评估。SOCKS 入站不提供传输加密,优先使用回环地址;确需局域网使用时,限制来源、启用认证并只开放必要端口。

若问题集中在 VMess 握手,应核对远程服务器地址、端口、UUID、用户参数、传输方式和系统时间;若问题集中在远程 SOCKS5,应核对上游地址、端口、认证和是否允许当前来源连接。

常见问题

v2ray 的 SOCKS5 默认端口是 1080 吗?

不是固定值。1080 是常见示例端口,实际端口由 config.json 或客户端设置决定。v2rayN 使用自定义配置时还可能要求手工填写本地 SOCKS 端口,因此应以实际设置页和监听结果为准。

7890、7897 或 10808 能直接当作 V2Ray 的 SOCKS5 端口吗?

不能。端口数字本身无法判断核心和协议,7890、7897、10808 也不能直接视为 V2Ray 的固定默认值。请查看 V2Ray 配置中的 inbounds.port,或查看 v2rayN 的本地 SOCKS 设置。

本地 SOCKS5 配置好了,但浏览器仍打不开网页怎么办?

先确认浏览器选择的是 SOCKS5 而非 HTTP,再核对地址、端口和认证。随后用 curl --socks5-hostname 测试,检查端口监听、核心日志、远程出站参数以及 DNS、IPv4 和 IPv6。

V2Ray v4 和 v5 的配置检查命令一样吗?

不一样。v4 二进制检查 v4 JSON 可用 v2ray -test -config config.json;v5 二进制读取 v4 JSON 可用 v2ray test -c config.json,读取 v5 JSON 可使用 -format jsonv5。Xray 则使用 xray run -test -c config.json。最终以本机二进制的帮助信息和退出码为准。

远程 SOCKS5 需要用户名密码时怎么配置?

在 socks 出站的 servers 项目中加入 users 数组,并填写 user 与 pass;远程服务不需要认证时删除 users。应用端连接的是本地入站,不能把远程账号密码误填到其他协议的代理栏。

SOCKS5 的 UDP 为什么打开后仍然不可用?

udp: true 只表示入站接收 UDP 请求,还需要应用、出站协议、系统网络、NAT 和远程服务共同支持。若机器位于 NAT 后方或有多个地址,还要核对 socks 入站 settings 中的 ip 字段。

相关阅读

参考资料

  1. V2Fly VMess 基础配置(guide.v2fly.org)
  2. V2Fly 官方示例配置文件
  3. Xray 官方 SOCKS 入站配置说明
  4. v2rayN 官方界面与本地端口说明
  5. V2Fly 配置测试示例
  6. V2Ray 安装与服务管理说明