Clash For Windows代理端口为0问题

本文最后更新于:2022年5月8日 晚上

问题

之前的正常使用中,我的Clash的代理端口一直都是被设置为7890,但是在一次系统更新后,我发现不光是以往需要代理才能访问的网站,甚至是平时不需要代理就可以正常访问的网站,全部无法访问了,并且原因是由于Clash造成的。

clash1

在排除了Clash代理的配置文件是否过期和机场提供商是否跑路的问题后,我发现了一个严重的问题,我的代理端口变为了00号端口是一个非法端口,使用这个端口进行转发,毫无疑问会导致流量都流进了一个黑洞,也就导致了设备无法正常访问网络。

clash2

通过查看Clash日志,可以从日志记录中发现这样一条日志:

1
time="2022-01-31T09:40:20+08:00" level=error msg="Start Mixed(http and socks5) server error: listen tcp :7890: bind: An attempt was made to access a socket in a way forbidden by its access permissions."

大致是说在进行端口绑定是出现了问题,无法在7890端口上建立socket连接。

解决

网络上大家对于这个问题出现的原因分析,大多是说系统更新后,由于使用了Hyper-V的功能,虚拟机需要映射一部分端口,并且在系统更新后对动态映射的端口范围进行了更改,导致占用了本来的Clash使用的端口。所以为了解决这个问题,

  • 要么直接关闭Hyper-V。(怎么可能,WSL不用了?)
  • 要么修改系统动态映射的端口范围。(我觉得还是不要动系统层面的设置,免得又出问题。)
  • 要么对Clash使用的代理端口进行修改,改为不被系统占用的端口即可。(Nice!)

使用命令查看被系统排除在可用范围外的端口:

1
netsh interface ipv4 show excludedportrange protocol=tcp

可以发现我们原本的7890正好处于7872-7971这个被排除的范围中,所以我们只要将代理端口改为范围外的任意一个即可。我这里选用的是7980端口。

已经可以正常访问互联网了。


Clash For Windows代理端口为0问题
https://siegelion.cn/2022/01/31/Clash For Windows代理端口为0问题/
作者
siegelion
发布于
2022年1月31日
许可协议