问题描述

今天打开浏览器发现上不了网了,什么浏览器都不能正常上网,但其他的程序可以正常上网,逐一排除问题,发现是clash的问题。平时我们使用clash的时候,这个端口都是7890的,但是今天这个端口突然变成0了,这肯定是不正常的。

1-Clash for Windows端口为0

既然知道是clash的问题,问题就不难解决了,看看是不是机场过期了,或者是其他原因,在手机上测试这机场没有过期,说明没问题。

查看clash日志,发现有这么一条记录

1
time="2022-10-28T09: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使用的代理端口进行修改,改为不被系统占用的端口即可。

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

1
netsh interface ipv4 show excludedportrange protocol=tcp

2-Windows PowerShell20221028-754

这里可以看到,7890端口其实不在这个端口排除范围内,但是不知道为什么就是绑定不了,就很奇怪,绑定不了就换一个其他端口试一下,将``clash的端口改为7990`就没问题了。

3-Clash for Windows为0-20221028-770

修改完端口就可以正常访问互联网了。

文章来源于我的博客:https://blog.hikki.site