V2Ray 运行日志怎么看:access 与 error 日志常见报错含义对照

解释 loglevel 各级别的用途,逐条拆解连接超时、握手失败、DNS 解析失败等常见日志行的含义,并给出从日志反推问题环节的定位方法。

本文速览

日志排查先确认运行内核,再区分访问记录与诊断信息。本文适合遇到 v2rayN 网页打不开、v2rayNG 连接超时或 v2flyNG 解析失败的用户:从一次可复现请求出发,按本地入站、路由出站、DNS、TCP 与 TLS 分层定位,避免看到一条 error 就反复更换整份订阅。

1. access 与 error 日志分别记录什么

v2rayN 是客户端界面,V2Ray 与 Xray 是处理连接的内核;日志的格式取决于实际启动的内核及版本。v2rayNG 使用 Xray 内核,v2flyNG 使用 v2fly 内核。开始排查前,先从启动输出记录内核名称与版本,不要只记录客户端名称。

记录类型主要内容不能据此证明的事情
access连接来源、目标地址,以及部分格式中的入站与出站标签。出现 accepted 不等于目标网页已成功返回。
error内核启动、连接建立、解析和传输过程中的诊断信息。文件名叫 error,不代表里面每一行都是错误级别。
客户端运行输出可能合并内核标准输出、客户端事件与订阅请求信息。订阅更新失败不一定是代理出站连接失败。

例如访问日志出现 accepted tcp:example.com:443,通常说明本地入站已经接收了这条请求。后续仍可能发生节点拨号超时、TLS 验证失败或远端关闭连接。日志中若带有 [入站标签 -> 出站标签],可以用来核对路由分流,但标签名称由当前配置决定。

2. loglevel 选什么:日常 warning,复现时临时 debug

V2Ray 与 Xray 常见日志等级为 debug、info、warning、error、none。从 debug 到 error,输出范围逐步收窄;none 用于关闭这类诊断输出。访问日志有独立的输出配置,不能仅凭 loglevel 判断 access 是否启用。

在 v2rayN 的「设置」→「参数设置」中查找当前版本提供的日志级别选项,保存后重启内核。不同界面的分组名称可能变化,应以当前界面为准。使用 v2rayNG 或 v2flyNG 时,同样先在设置中查找日志相关选项,再打开日志查看界面;不要把订阅列表当作内核运行日志。

下面是内核配置中的 log 字段示例,不是可直接启动的完整配置。仅用于说明字段关系;客户端管理的配置应优先通过界面修改,手工改动生成文件可能在下次启动时被覆盖。

{
  "log": {
    "access": "C:/Temp/v2ray-logs/access.log",
    "error": "C:/Temp/v2ray-logs/error.log",
    "loglevel": "debug"
  }
}

示例使用 Windows 绝对路径。先创建 C:\Temp\v2ray-logs,确认启动内核的账户有写入权限。启用文件输出后,部分内容可能不再显示在原来的控制台窗口,应同时检查目标文件。完成一次复现后恢复 warning,避免日志持续增长。

3. 连接超时与连接被拒绝:先确认失败的地址

下面各卡列出的是常见日志中的错误片段,不是固定的完整日志模板。模块前缀、包路径与包装层数会随内核版本变化。读取时先找最内层原因,再向外确认它对应的是节点服务器、DNS 服务器,还是目标网站。

报错:dial tcp …: i/o timeout

原因:向日志中指定的地址建立 TCP 连接时,未在期限内完成。

解法:先核对失败地址是否为节点端点,再检查节点端口、当前网络和服务端入站;若地址属于目标网站,应转查远端出口到目标的连通性。

报错:connect: connection refused

原因:连接收到明确拒绝,常见于目标端口没有服务监听,或网络设备主动拒绝。

解法:核对错误中的 IP 与端口;若是 127.0.0.1:10808,先确认本地内核已启动且监听端口一致,而不是先换远端节点。

报错:context deadline exceeded

原因:某个操作超过了截止时间,单凭这一句不能确定是 DNS、拨号还是握手阶段。

解法:保留前后相关日志,查找同一连接的模块名称与更内层错误,再定位具体阶段。

Windows 可能把拒绝连接显示成包含 connectex 的系统错误,而不是上面的英文短句;排查原则相同。超时说明等待没有完成,拒绝说明收到否定响应,两者都不能直接推导出 VMess 或 VLESS 配置一定有问题。

10808
本文本地代理测试端口,须与实际监听一致
443
HTTPS 常用端口,不代表所有节点端口
53
传统 DNS 常用端口,加密 DNS 另计

判断:错误地址比“超时”两个字更有用

先把错误地址归类为本地监听、节点端点或目标服务,再只检查这一段链路。节点使用其他端口时,应以订阅配置为准,不要统一改成 443。

4. TLS 握手失败:证书、域名与系统时间分别检查

TLS 握手发生在建立底层连接之后,但握手失败的原因不止证书。把 TCP 通了理解成节点完全可用,会漏掉 SNI、传输路径和服务端参数不一致的问题。使用 VLESS 的节点也不必然使用同一种安全层,必须先确认配置实际采用的是 TLS、REALITY 还是其他组合。

报错:x509: certificate has expired or is not yet valid

原因:证书有效期与当前系统时间不匹配,可能是本机时间错误,也可能是服务端证书到期。

解法:先校准系统日期、时区和时间同步;时间正常后,交由服务提供方检查证书续期与完整证书链。

报错:x509: certificate signed by unknown authority

原因:当前环境无法建立可信的证书链,可能涉及缺失的中间证书、本地信任库或网络中的证书替换。

解法:核对服务端证书链与本机信任环境,不要把关闭证书验证作为常规修复。

报错:tls: handshake failure

原因:TLS 协商被拒绝,仅凭这一片段不能确定具体参数。

解法:按服务提供方配置核对服务器名称、TLS 设置和传输方式,再对照同一时刻的服务端日志。

5. DNS 解析失败:区分节点域名与目标域名

“DNS 有问题”仍然太宽泛。客户端首先可能需要解析节点服务器域名;代理连接建立后,目标网站域名又可能在本地或远端被解析。路由中的 domainStrategy 还可能为了匹配 IP 规则触发解析,它不等同于出站的域名解析策略。

日志片段含义边界下一步
lookup …: no such host这次解析未得到可用名称结果,可能涉及不存在的域名或否定响应。核对报错域名拼写,确认它是节点还是网站,再查实际使用的解析器。
failed to lookup ip上层报告 IP 查询失败,具体原因通常在后续或内层信息。继续找超时、空结果或解析器连接错误,不要停在这句概括上。
read udp …: i/o timeout若对应地址是 DNS 服务器,可能是 DNS 响应未及时返回。检查到解析器的网络路径、UDP 可达性和相关路由。

Windows 可用以下命令观察系统解析结果。这里的 example.com 只用于演示命令;实际排查时换成日志里的域名。系统命令成功只说明系统解析器可用,不能证明内核内置 DNS、加密 DNS 或经代理查询的路径也正常。

Resolve-DnsName example.com

6. 用一次请求串起日志:本地监听 → 路由 → 远端

复现前暂时关闭产生大量后台连接的应用,固定一个节点与一种代理接入方式。以下以 Windows、HTTP 或混合入站 127.0.0.1:10808 为例;如果当前端口仅接受 SOCKS,请使用对应的 SOCKS 测试命令,不要把协议不匹配当成节点故障。

  1. 检查监听:在 PowerShell 查询本地端口。没有监听时先解决内核启动或端口设置,暂不检查远端证书。
  2. 启用短时详细日志:记录开始时间,只发起一次测试请求,再查看这一时间段的 access 与 error 输出。
  3. 检查入站:没有访问记录时,确认 access 已启用且查看位置正确,再核对应用是否真正使用代理。
  4. 检查路由:若输出带出站标签,确认请求进入预期代理出站;直连、阻断和代理出站需要分开判断。
  5. 追到最内层错误:按 DNS、TCP、TLS、协议认证与目标服务的顺序定位,每次只改变一个相关设置,然后重复同一请求。
Get-NetTCPConnection -LocalPort 10808 -State Listen
curl.exe --proxy http://127.0.0.1:10808 --connect-timeout 10 --max-time 20 -I https://example.com/

这条 curl 命令显式指定代理,不依赖浏览器或系统代理开关;10 秒是连接阶段超时上限,20 秒是整个命令的时间上限,均为本次测试参数,不是内核性能指标。HTTP 代理输出中的隧道建立成功也不等于后续 TLS 与网页响应成功,应继续看完整结果。

curl.exe --proxy socks5h://127.0.0.1:10808 --connect-timeout 10 --max-time 20 -I https://example.com/

第二条仅用于实际支持 SOCKS 的入站。socks5h 把目标域名交给 SOCKS 代理处理;普通 socks5 通常由 curl 在本地解析目标域名。比较两种方式时,应明确解析位置已经改变,不能把结果差异全部归因于节点速度。

判断:显式代理能通,浏览器不能通,先查流量入口

在同一节点与同一目标下,若显式代理请求成功,而浏览器没有对应 access 记录,优先检查系统代理、浏览器扩展和绕过列表;此时反复修改 VMess 或 VLESS 参数通常偏离问题所在。

7. 日志排查常见问答与反馈材料

为什么日志一直刷 warning,但网页能打开?

先按时间和目标定位 warning 属于哪个请求。后台应用、取消的连接或不可达的附属资源都可能产生记录。单条警告不能代表全部流量失败,应使用固定目标复现,并检查对应请求是否真正失败。

打开 debug 以后,日志窗口还是空白怎么办?

先确认保存设置后已重启内核,再检查是否配置了文件输出。若日志写入文件,核对绝对路径和目录权限;同时确认当前查看的是内核输出,而不是订阅更新记录。

看到 accepted,是不是说明节点已经连上?

不是。它通常只说明请求被入站接受。继续沿同一连接查找出站拨号与握手信息,并用 curl 的最终响应验证目标访问结果,不能仅截取 accepted 一行下结论。

订阅更新超时,也要按节点连接超时处理吗?

先区分订阅地址请求和代理数据连接。检查订阅更新是否走代理、当前代理是否可用,以及订阅服务本身是否可达。反馈时隐藏订阅地址中的令牌,不要公开完整订阅链接。

需要进一步求助时,提供能串起同一次失败的最小材料,比整屏截图更有效。日志可能包含访问域名、服务器地址与本地路径;分享前检查内容,保留错误类型和关联关系,同时移除账号标识、UUID、密码、私钥及订阅令牌。

v2rayN 下载平台与安装包选择