TUN模式端口冲突 启动失败如何解决?

从日志信息来看,TUN模式启动失败是由于端口冲突导致的。

具体来说,Xray在尝试监听10808端口时失败了,因为该端口已经被其他进程占用。

错误信息分析

plaintext 复制代码
Failed to start: app/proxyman/inbound: failed to listen TCP on 10808 > transport/internet: failed to listen on address: 127.0.0.1:10808 > transport/internet/tcp: failed to listen TCP on 127.0.0.1:10808: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.

这段日志明确指出,Xray无法绑定到127.0.0.1:10808这个地址和端口,原因是"每个套接字地址(协议/网络地址/端口)通常只允许一次使用"。这意味着已经有另一个程序正在使用10808端口。

解决方案

1. 查找并关闭占用端口的进程

可以通过以下步骤来查找并关闭占用10808端口的进程:

  • Windows系统
    • 打开命令提示符(CMD),输入以下命令来查找占用端口的进程ID(PID):

      cmd 复制代码
      netstat -ano | findstr :10808
  • 记下返回结果中的PID,然后使用以下命令查看该PID对应的进程名称:

    cmd 复制代码
    tasklist | findstr <PID>

1.查找PID对应的程序名称

在PowerShell中,可以使用Get-Process命令来查找PID对应的程序名称,而不是直接使用tasklist命令。

powershell 复制代码
Get-Process -Id 3212

显示PID为3212的进程的详细信息,包括进程名称、描述等。

  1. 关闭占用端口的进程

如果确定可以安全地关闭该进程,可以使用以下命令来终止它:

powershell 复制代码
Stop-Process -Id 3212 -Force

请注意,强制终止进程可能会导致数据丢失或应用程序不稳定,请确保知道自己在做什么。

  1. 验证端口是否已释放

再次运行netstat命令检查端口10808是否已被释放:

powershell 复制代码
netstat -ano | findstr :10808

如果端口已经被释放,应该不会再看到任何与10808相关的监听项。

  1. 重新启动Xray服务

现在可以尝试重新启动Xray服务,看看问题是否已经解决。

解决啦~

more:如果无法关闭进程

如果由于某种原因不能关闭占用端口的进程(例如它是系统关键进程),可以考虑修改Xray的配置文件,将使用的端口号更改为一个未被占用的端口。例如,可以将10808改为10809或其他可用端口。

编辑config.json文件,找到相关端口配置项,将其修改为新的端口号,例如:

json 复制代码
{
  "inbounds": [
    {
      "port": 10809,  // 修改为新的端口号
      ...
    }
  ]
}

然后重启Xray服务。

注意事项

  • 在进行上述操作之前,请确保了解每个步骤的潜在影响。
  • 如果不确定某个进程的作用,可以在网上搜索其名称,或者联系系统管理员寻求帮助。
  • 在生产环境中进行此类操作时要格外小心,以免对系统造成不必要的影响。