Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

端口禁止访问 #1835

Closed
hong6234 opened this issue May 3, 2018 · 13 comments
Closed

端口禁止访问 #1835

hong6234 opened this issue May 3, 2018 · 13 comments

Comments

@hong6234
Copy link

hong6234 commented May 3, 2018

版本:4.0.9
操作环境:Win 10 x64 Version 1803(OS Build 17134.5)
操作步骤:直接运行
期望的结果:正常运行
实际结果:提示端口被占用,异常
信息显示没有访问端口的权限(port:1080)
配置文件和日志文件:
[2018-05-03 08:45:29] System.Exception: Port already in use ---> 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 ---
20180503084615

@chenshaoju
Copy link
Collaborator

chenshaoju commented May 3, 2018

这意味着你计算机上的 1080 端口已经被占用。如果看不到SS的主界面,请用Windows自带的记事本打开 Shadowsocks.exe 所在目录下的gui-config.json 文件,找到 "localPort": 1080, ,将其修改为 "localPort": 2080, ,然后保存退出后再试。

@hong6234
Copy link
Author

hong6234 commented May 4, 2018

猜测是OS问题,今天升级到最新的Win 10 x64 Version 1803(OS Build 17661.1001) prerelease版本后,问题已经不再复现

@kingsamchen
Copy link

@chenshaoju @hong6234 这个问题并不是端口被占用,通过 netstat 里找不到占用这个端口的程序。
实际上,这个错误对应的 last-error 是 10013 (WSAEACCESS),权限不足。

根据2018年2月13日发布的 KB4074588 里的 known issue,这个补丁会调整操作系统的 reserve port ranges,可以通过运行 netsh interface ipv4 show excludedportrange protocol=tcp 查看。

在我自己的环境里,1025 ~ 1124 都被系统强制保留了,所以其他应用程序无法监听在这个端口。

workaround 要选取的端口也只能避开这些保留端口。

最后建议:ss 可以做一下 10013(WSAEACCES) 和 10048(WSAEADDRINUSE)的分类处理。毕竟看起来之后这个地方会出现坑不会少。

注1:我的系统是最新的1809,一直没有这个问题,直到上周安装了 SONY 的 Digital Paper App 附带的驱动之后触发了这个问题。另一台 surface pro 4 也装了 Digital Paper App,但是没有出现这个问题,不确定是不是因为 sp4 使用的是 Windows 10 Home 的关系。
注2:尝试使用 netsh interface ipv4 delete excludedportrange ... 会提示 access is denied,目前找不到可以认为调整的方法。

@chenshaoju
Copy link
Collaborator

这是非常有用的信息,感谢分享。

@celeron533
Copy link
Contributor

Reopen for tracking

@celeron533 celeron533 reopened this Jan 11, 2019
celeron533 added a commit to celeron533/shadowsocks-windows that referenced this issue Apr 13, 2019
When error code is SocketError.AccessDenied/10013(WSAEACCES), the port is reserved by system and you may not find the process name in `netstat`.
 shadowsocks#1835 (comment)
@celeron533
Copy link
Contributor

根据 2dust/v2rayN#229 hyper-v可能会保留端口

celeron533 added a commit to celeron533/shadowsocks-windows that referenced this issue Apr 13, 2019
When error code is SocketError.AccessDenied/10013(WSAEACCES), the port is reserved by system and you may not find the process name in `netstat`.
 shadowsocks#1835 (comment)
@justyu
Copy link

justyu commented Jun 28, 2019

这个问题解决了吗?????

无论修改代理端口1080为1999或者10801
还是修改gui-config.json中的proxyPort 1080为2080什么的都不行啊?
显示要么“由于目标计算机积极拒绝,无法连接。”,要么“不知道这样的主机。”

@chenshaoju
Copy link
Collaborator

这意味着:
1.你所访问的服务器被墙了,或者SS服务器没有启动SS服务。
2.你输入的域名有误,或者遭到了DNS污染。

@justyu
Copy link

justyu commented Jun 29, 2019

这意味着:
1.你所访问的服务器被墙了,或者SS服务器没有启动SS服务。
2.你输入的域名有误,或者遭到了DNS污染。

谢谢提示,ss软件出现了问题,已经清空配置文件解决了。

@jack77213
Copy link

如果是Hyper-V保留端口导致的问题,docker/for-win#3171 (comment) 提到一种workaround:
删除Hyper-V功能后,netsh int ipv4 add excludedportrange protocol=tcp startport=1080 numberofports=1 ,再重新启用Hyper-V,Hyper-V会避开已经保留的1080端口。
注意:删除Hyper-V功能会删除所有虚拟交换机。

@Sesprie
Copy link

Sesprie commented Oct 8, 2019

@chenshaoju @hong6234 这个问题并不是端口被占用,通过 netstat 里找不到占用这个端口的程序。
实际上,这个错误对应的 last-error 是 10013 (WSAEACCESS),权限不足。

根据2018年2月13日发布的 KB4074588 里的 known issue,这个补丁会调整操作系统的 reserve port ranges,可以通过运行 netsh interface ipv4 show excludedportrange protocol=tcp 查看。

在我自己的环境里,1025 ~ 1124 都被系统强制保留了,所以其他应用程序无法监听在这个端口。

workaround 要选取的端口也只能避开这些保留端口。

最后建议:ss 可以做一下 10013(WSAEACCES) 和 10048(WSAEADDRINUSE)的分类处理。毕竟看起来之后这个地方会出现坑不会少。

注1:我的系统是最新的1809,一直没有这个问题,直到上周安装了 SONY 的 Digital Paper App 附带的驱动之后触发了这个问题。另一台 surface pro 4 也装了 Digital Paper App,但是没有出现这个问题,不确定是不是因为 sp4 使用的是 Windows 10 Home 的关系。
注2:尝试使用 netsh interface ipv4 delete excludedportrange ... 会提示 access is denied,目前找不到可以认为调整的方法。

分享一下曾经找到的解决办法
由于hyper-v保留了这些端口,所以需要先关闭hyper-v,保留想要保留的端口,再开启hyper-v功能

  1. Disable hyper-v (which will required a couple of restarts)
    dism.exe /Online /Disable-Feature:Microsoft-Hyper-V

  2. When you finish all the required restarts, reserve the port you want so hyper-v doesn't reserve it back
    netsh int ipv4 add excludedportrange protocol=tcp startport=1080 numberofports=2
    netsh int ipv4 add excludedportrange protocol=tcp startport=1099 numberofports=1
    netsh int ipv4 add excludedportrange protocol=tcp startport=3306 numberofports=1

3.Re-Enable hyper-V (which will require a couple of restart)
dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All

来源:docker/for-win#3171 (comment)

@chenshaoju
Copy link
Collaborator

#2552

@bytemain
Copy link

docker/for-win#3171 (comment) 提到的似乎可解

phoenixdev9 pushed a commit to phoenixdev9/shadowsock-windows that referenced this issue Aug 4, 2024
When error code is SocketError.AccessDenied/10013(WSAEACCES), the port is reserved by system and you may not find the process name in `netstat`.
 shadowsocks/shadowsocks-windows#1835 (comment)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants