出現的問題:
環境:win10 64位 版本1809
某日,啓動ssr時彈出了
如果怕麻煩,直接重啓電腦。但下次可能還會出現問題。
本文給出兩種方案,僅供參考。
方案一:
就像其他博主給出的方案,在CMD裏使用netstat -aon|findstr "1080",找到佔用端口進程的PID,在任務管理器裏結束進程。
方案二:
可能的原因:
可很多時候,沒有進程在佔用1080端口,你會發現:
是的,沒有進程佔用1080端口,但就是會報錯。
這個問題並不是端口被佔用,通過 netstat
裏找不到佔用這個端口的程序。實際上,這個錯誤對應的 last-error 是 10013 (WSAEACCESS),權限不足。
根據2018年2月13日發佈的 KB4074588 裏的 known issue,這個補丁會調整操作系統的 reserve port ranges,可以通過運行 以下指令查看。
netsh interface ipv4 show excludedportrange protocol=tcp
在我自己的環境裏,1027 ~ 1126 都被系統強制保留了,所以其他應用程序無法監聽在這個端口,比如1080。
workaround 要選取的端口也只能避開這些保留端口。
最後建議:ss 可以做一下 10013(WSAEACCES) 和 10048(WSAEADDRINUSE)的分類處理。畢竟看起來之後這個地方會出現坑不會少。
注:嘗試使用 netsh interface ipv4 delete excludedportrange ...
會提示 access is denied,目前找不到可以認爲調整的方法。
以上參考https://github.com/shadowsocks/shadowsocks-windows/issues/1835
除了系統補丁會保留端口外,開啓win10的hyper-v也會保留端口,比如我自己
解決方案:
更改SSR的本地端口
在SSR4.0.exe所在目錄下,找到gui-config.json,並用記事本打開。
找到"localPort": 1080,
,將其修改爲"localPort": 12345,這裏我隨便選了一個沒保留的端口。
保存並退出。重啓SSR。
注意:如果你使用了像SwitchyOmega這樣的插件,請修改情景模式。
打開谷歌
END