其实这事也没啥必要的,大家都用 clash,不过好像多数人都不会去改端口号,而我改了,改成了 1080,就多了挺多麻烦事的。
这个问题好几年前就碰到过了,之前也解决了,但就是想不起来怎么解决的了,所以每次都是重启 HNS,然后再重启 clash。
今天终于想起来了,这个问题是系统的默认动态端口范围是:1024-15000,而我把 clash 的端口改成了 1080,然后别的程序要随机分配端口的时候就会把这些端口占用了,所以我指定的 1080 就会被占用,然后 clash 就会启动失败,报错:permission denied
。
我们可以用 netsh int ipv4 show dynamicport tcp
来查看被占用的端口范围。
1 | > netsh int ipv4 show dynamicport tcp |
微软官方也注意到这个问题,并建议修改动态端口范围,避免和其他程序冲突。我们可以用 netsh int ipv4 set dynamicport tcp start=49152 num=16384
来修改动态端口范围。
1 | > netsh int ipv4 set dynamicport tcp start=49162 num=16374 |
注意,需要在使用管理员权限的终端中执行才能生效。
参考: