平時有在使用Shadowsocks,預設的port號為1080,今天啟動起來提示下面的錯誤
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
--------------------------- Shadowsocks 錯誤: 連接埠號碼 1080 由系統保留 --------------------------- System.Exception: 連接埠號碼 1080 由系統保留 ---> System.Net.Sockets.SocketException: 嘗試存取通訊端被拒絕,因為存取權限不足。 於 System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress) 於 System.Net.Sockets.Socket.Bind(EndPoint localEP) 於 Shadowsocks.Controller.Listener.Start(Configuration config) 於 Shadowsocks.Controller.ShadowsocksController.Reload() --- 內部例外狀況堆疊追蹤的結尾 --- |
1 2 3 4 5 6 |
System.Exception: 端口 1080 是系统保留端口 ---> System.Net.Sockets.SocketException: An attempt was made to access a socket in a way forbidden by its access permissions at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress) at System.Net.Sockets.Socket.Bind(EndPoint localEP) at Shadowsocks.Controller.Listener.Start(Configuration config) at Shadowsocks.Controller.ShadowsocksController.Reload() --- End of inner exception stack trace --- |
一般遇見port號被使用,第一反應是查看是被哪個程式給佔用了。
netstat -aon|findstr “1080”
然後使用taskkill /T /F /PID ***來結束進程
但這次去查看1080根本沒有程式佔用,搜尋發現這個真的是被系統給保留了,使用
netsh interface ipv4 show excludedportrange protocol=tcp 來查看可以看到1080剛好在1077和1176期間,是什麼原因導致的就不清楚,先前是可以使用的。最簡單的方式就是
將Winnat服務重啟,看port是否會被釋放出來。
net stop winnat
net start winnat
另外也有人分享原因是 因為電腦啟用了Hyper-v或者是WSL導致,也可以嘗試重啟或者是移除。
當然如果不想更改系統也是可以嘗試將Shadowsocks中的port更換一個比較大的號碼,這樣也可以解決問題。
如果一定要修改系統的port號,則可以參考
https://docs.microsoft.com/zh-tw/troubleshoot/windows-server/networking/default-dynamic-port-range-tcpip-chang
指令指令例如:
netsh int ipv4 set dynamic tcp start=49152 num=16384
netsh int ipv4 add excludedportrange protocol=tcp startport=50323 numberofports=1