v2rayN 本地端口占用

启动报端口占用时,先查出占用 10808 等本地端口的进程,再在 v2rayN 参数设置里改用空闲端口并同步系统代理。

本文速览

适用于 Windows 上 v2rayN 启动内核失败、日志出现监听冲突,或修改端口后浏览器仍无法连接的情况。按“读取错误地址、定位进程、释放或更换端口、刷新系统代理、验证请求”的顺序操作,区分端口占用与系统保留端口,避免误关进程或反复更换节点。

先确认:报错发生在本地监听

v2rayN 是图形客户端,实际监听端口与处理代理连接的是所启动的内核。浏览器使用系统代理时,通常先连接本机地址,例如 127.0.0.1:10808。如果这一入口没有成功建立,即使订阅正常、节点配置完整,浏览器也无法通过该入口发送请求。

浏览器请求 本地监听 路由匹配 节点连接 目标站点

打开 v2rayN 主窗口的日志区域,找到最近一次启动失败的位置。先记下错误里的协议、地址和端口,别只看最后一行“启动失败”。10808 是常见示例,不代表所有版本和配置都使用它;实际排查应替换为日志中的端口。

报错:Only one usage of each socket address (protocol/network address/port) is normally permitted.

原因与解法:Windows 套接字地址冲突,常见于 TCP 端口已被监听。先查监听进程,再决定关闭重复实例还是修改 v2rayN 端口。

报错:An attempt was made to access a socket in a way forbidden by its access permissions.

原因与解法:绑定被系统拒绝,不等于一定有进程占用。查不到监听者时,继续检查系统排除端口范围与安全策略。

相反,connection refused 往往是某次连接被拒绝,需要结合目标地址判断;连接本地旧端口被拒绝,与连接远端节点被拒绝不是同一问题。只针对节点地址出现的超时,也不能直接归因于本地端口。

查占用:从端口找到进程路径

以下命令在 Windows PowerShell 中运行。先查 10808 的 TCP 监听状态;没有输出表示本次查询没有找到该端口的 TCP 监听者,不代表端口一定可绑定。

Get-NetTCPConnection -State Listen -LocalPort 10808 -ErrorAction SilentlyContinue |
  Select-Object LocalAddress, LocalPort, State, OwningProcess

重点看 LocalAddress 与 OwningProcess。若监听地址为 0.0.0.0,它覆盖所有 IPv4 本地接口,可能与绑定到 127.0.0.1 的同端口监听冲突。IPv6 的 :: 与 IPv4 是否冲突还受套接字选项影响,因此要保留完整地址信息。

接着查询对应进程的名称、可执行文件路径和命令行。下面直接从查询结果提取进程号,不需要手工填入 PID:

$listeners = Get-NetTCPConnection -State Listen -LocalPort 10808 -ErrorAction SilentlyContinue
$ownerIds = $listeners | Select-Object -ExpandProperty OwningProcess -Unique
foreach ($ownerId in $ownerIds) {
  Get-CimInstance Win32_Process -Filter "ProcessId = $ownerId" |
    Select-Object ProcessId, Name, ExecutablePath, CommandLine
}
查询结果含义下一步
路径属于另一份 v2rayN 目录可能重复启动了不同目录的客户端从托盘退出不需要的那一份,再查端口
名称为 xray.exe,路径属于客户端目录可能是当前内核,也可能是残留内核先退出客户端,确认该监听是否随之消失
路径属于其他已知程序两个程序选择了同一本地端口保留需要运行的程序,为另一方更换端口
没有 TCP 监听结果可能存在端口保留、UDP 冲突或进程短暂退出核对日志协议,并检查系统排除范围

进程路径显示为空时,可用管理员身份重新打开 PowerShell 查询详情。不要根据进程名称直接结束系统服务,也不要把所有内核进程都当作残留。当前正常运行的内核本就应该占用客户端设置的监听端口。

释放端口:先退出重复实例

如果查到同一客户端的另一份实例,优先通过任务栏通知区域的托盘菜单选择“退出”。点击主窗口关闭按钮可能只是隐藏窗口,监听仍会保留。退出后再次执行端口查询,观察监听是否消失,再启动需要保留的客户端。

  1. 记录占用者的 PID、文件路径和命令行,确认它对应哪一个程序目录。
  2. 从该程序的正常退出入口关闭它,等待几秒后重新查询 10808。
  3. 若客户端已经退出,但确认属于该目录的内核仍在运行,可在任务管理器“详细信息”中核对 PID 后结束该进程。
  4. 只启动一份 v2rayN,检查日志是否还出现相同绑定错误。

修改监听:以 11808 为替代示例

当原端口需要留给其他程序时,可将 v2rayN 的本地监听改为 11808。这个数字只是替代示例,不保证在你的电脑上空闲。先用前面的查询命令检查 11808,并在必要时检查后文的系统排除范围。

  1. 记录旧设置

    记下当前端口、监听地址与系统代理状态。本文示例将 127.0.0.1:10808 改为 127.0.0.1:11808,不改变节点的远端端口。

  2. 打开参数设置

    进入「设置」→「参数设置」,在基础设置相关区域找到本地监听端口。界面可能显示“本地混合监听端口”或“本地监听端口”;以当前版本实际字段为准。

  3. 填写新端口

    将对应本地入口改为 11808。若当前界面分别提供 SOCKS 与 HTTP 入口,按字段逐项确认,不能把两个独立监听设置成同一个端口;混合入口则可在一个端口接收两种协议。

  4. 保存并重启

    保存设置,让内核重新加载。若未自动重启,退出并重新打开 v2rayN,再查询 11808 的监听者,确认路径属于本次启动的客户端。

  5. 刷新系统代理

    在主窗口或托盘的「系统代理」菜单中,先选择「清除系统代理」,再选择「自动配置系统代理」。随后检查系统代理实际地址是否已经指向新端口。

本地监听端口与节点远端端口是两项独立配置。节点编辑窗口中的 443 等端口属于远端服务器,修改它通常会导致节点连接失败,不能用来解决本机 10808 被占用的问题。使用自定义配置时,还需确认实际生效的入站配置;通用参数页不一定会重写自定义入站。

同步代理:排除仍访问旧端口的应用

端口成功更换后,常见的第二个问题是应用仍连接旧入口。Windows 11 可在「设置」→「网络和 Internet」→「代理」→「手动设置代理」中核对地址与端口;Windows 10 的相应入口为「设置」→「网络和 Internet」→「代理」。普通本机 HTTP 代理示例应指向 127.0.0.1 与 11808。

可先用下面的命令查看当前 PowerShell 会话中的代理环境变量。发现旧值后,应回到设置它的终端配置或系统环境变量界面修改,而不是只刷新浏览器。

Get-ChildItem Env: |
  Where-Object Name -Match '^(HTTP_PROXY|HTTPS_PROXY|ALL_PROXY|NO_PROXY)$'

验证结果:分开测试监听和出站

先确认新端口存在,再测试通过该端口发起请求。以下示例假设 11808 是支持 HTTP 的混合入口或 HTTP 入口;如果它是独立 SOCKS 入口,应使用后面的 SOCKS 命令。

Get-NetTCPConnection -State Listen -LocalPort 11808 -ErrorAction SilentlyContinue |
  Select-Object LocalAddress, LocalPort, OwningProcess

Test-NetConnection -ComputerName 127.0.0.1 -Port 11808

curl.exe --noproxy "" --proxy http://127.0.0.1:11808 --connect-timeout 10 --max-time 20 -I https://example.com/

TcpTestSucceeded : True 只说明 TCP 连接成功,不代表监听者一定是 v2rayN,也不代表远端节点可用。继续核对进程路径,并观察请求时内核日志是否有对应记录。HTTP 响应头表明请求获得了响应;具体状态码仍需结合目标网站判断。

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

SOCKS 示例中的 socks5h 表示将目标主机名交给代理端解析。两条命令应按入口类型择一使用,不要为了让测试通过而随意更改节点协议。如果显式代理请求成功,但浏览器失败,优先回到系统代理与浏览器独立设置排查,而不是再次修改监听端口。

没有占用进程:检查系统保留端口

如果出现访问权限类绑定错误,而 TCP 查询始终没有结果,可以在管理员终端检查 Windows 排除端口范围。虚拟化和网络组件可能建立这些范围。端口落入其中时,即使没有用户进程监听,也可能无法绑定。

netsh interface ipv4 show excludedportrange protocol=tcp
netsh interface ipv6 show excludedportrange protocol=tcp

输出按起始端口和结束端口显示范围。例如某行若为 11800 到 11899,则 11808 也在范围内;这是读表方法示例,并非你的设备一定存在这段保留。选择范围之外且没有监听者的端口,再保存配置测试,不要直接删除来源不明的系统保留项。

端口冲突常见问答

改成 11808 后,为什么网页还是打不开?

先确认新端口由正确内核监听,再在「系统代理」中清除并重新自动配置。检查浏览器扩展、手工代理和环境变量是否仍写着 10808;用显式指定新端口的 curl 命令区分本地入口与节点故障。

每次开机都冲突,要一直手动结束进程吗?

不需要把结束进程当作固定步骤。检查任务管理器“启动应用”和任务计划程序,确认是否有两份客户端自动启动。保留一个明确的启动入口;两个程序确实都要运行时,给它们分配不同端口。

换节点或者更新订阅能解决 10808 占用吗?

不能直接释放本地监听。订阅提供节点配置,节点远端端口也不等于本地入站端口。先让内核完成本地绑定,再做真连接延迟测试和节点可用性检查。

管理员运行成功了,以后都要这样启动吗?

先查清差异。普通的回环代理监听通常不需要管理员权限;管理员运行可能改变策略适用情况,也可能只是第二次启动时原占用者退出。重新核对监听进程、保留范围与日志,不要用提权掩盖原因。

下载v2rayN