解决SSR端口被占用

今天使用SSR的时候,打开突然提示我1080端口被占用,启动SSR失败

WTF????

我原来还用得好好的,今天突然暴毙了

我就想去看看,是哪个程序占用了1080端口,结束掉就行了

于是我打开cmd

输入netstat -ano|findstr 1080

神奇的事情发生了,没有任何的输出

我以为我查询错了

我就用netstat -ano全部列出来一个个看

好像确实没有1080端口的占用情况

并没有1080端口

于是我想,那么我就去把SSR端口改为1081端口吧,然后结果还是一样的

我想到了端口会不会被系统保留了

于是打开cmd

输入

netsh interface ipv4 show excludedportrange protocol=tcp

得到的

终于找到了

嚯,1080,1081全被保留了

应该是哪个程序安装后申请保留了,原来还没有的,也可能是系统补丁更新调整了reserve port ranges来保留端口,另外开启hyper-v也会保留端口,反正这个端口不能被监听了

那就换这些端口范围之外且未被使用的端口就行了

打开SSR设置

我换的是23333

换个其他的端口,重新启动SSR

问题解决

2020-3-22更新

今天启动IDEA,也是遇到了一样的问题

IDEA打开错误

然后我在IDEA官方上看到了这个解决方案:点击进入

照着使用netsh winsock reset后重启,恢复正常,但是再次重启之后又出现了问题

然后下面有人说是Hyper-V的问题,我去看了一下,端口范围6942-6991确实已经被系统保留

端口被系统保留

再往下面翻,有个人说解决方案可以完成

然后进去之后就告诉说先关闭Hyper-V重启,再执行

netsh int ipv4 add excludedportrange protocol=tcp startport=<起始端口> numberofports=<端口保留数量>

然后再开启Hyper-V重启

意思就是执行这个让用户来保留,而让系统不保留这个端口范围

要注意的是,执行这个命令的时候,范围内不能有已经被保留的端口,所以才说要先关闭Hyper-V,否则会提示” 另一个程序正在使用此文件,进程无法访问。”

用户保留

后面打星号的就是用户自己保留,操作系统不会保留

当然在使用SSR的1080端口的话(虽然早就不用SSR了),可以使用

netsh int ipv4 add excludedportrange protocol=tcp startport=1080 numberofports=1

来单独保留1080端口给用户