由于权限被拒绝,无法绑定到某些端口
Posted
技术标签:
【中文标题】由于权限被拒绝,无法绑定到某些端口【英文标题】:Cannot bind to some ports due to permission denied 【发布时间】:2018-07-06 19:50:40 【问题描述】:在过去 3 个月左右的时间里,我遇到了随机错误,无法绑定在本地开发工作站上运行身份服务器的特定端口。起初我以为是我的机器坏了,所以我重置了所有东西,这解决了 2 个月的问题,现在它又回来了。
与此同时,其他开发人员也看到了同样的问题。我们所有遇到此问题的人都在运行 Windows 10,但并非所有使用 Windows 10 的人都有这个问题。
在使用shutdown /s /f /t 0
关闭窗口后重新启动窗口是再次打开端口的唯一可靠解决方案。在我正常重启后(由于 Windows 更新或类似原因),问题再次出现,我需要使用该命令关闭 Windows。
我编写了一个小 f# 脚本来测试哪些端口受到影响。我得到的确切错误消息是
试图以访问权限禁止的方式访问套接字
当我寻找它时,建议的解决方案在哪里重新启动机器,但这似乎更像是一种解决方法,而不是真正的解决方案。我还找到了https://***.com/a/10461978/621366 - 但netstat -o
没有列出端口,工具TCPView 也没有。我们所有人都非常确定该端口没有被任何东西占用。我还尝试在管理员控制台中运行netstat
,并在 Windows 上的 bash 中运行类似的命令,但找不到任何东西。我什至无法通过 telnet 连接到端口,它说没有在监听端口。
这些端口例如:
49670 - 49689 49710 - 49749 49760 - 49779 49811 - 49830 49843 - 49882 50197 - 50216我们没有人在 Windows 防火墙上修改过任何东西,也没有安装任何额外的防病毒工具,除了 Windows 10 默认的。所以一切都应该是默认值。在第一次破裂之前,它也正常工作了约 10 个月,之后又工作了 2 个月。在这两种情况下,在安装了一些 Windows 更新之后。上次是 Bios 更新(可能是由于崩溃/幽灵问题?)。
尝试在防火墙上明确打开端口也无济于事。
根据这个答案https://***.com/a/23982901/621366 TCPView 和 netstat 不应该错过任何被占用的端口,但即使我在 TCPView 中启用显示未连接的端点,我也看不到任何我在尝试绑定时获得权限被拒绝的端口他们。这里是被占用端口的屏幕(我标记了在permission-denied-ports组之前或之后的边界占用端口)
更新:
我注意到似乎总是有 160 或 180 个(确切数字)的端口在 40,000+ 的范围内被拒绝这对我来说似乎很巧合,所以显然有些东西是故意占用这些端口的,但是什么?我似乎无法在 Windows 事件日志中找到任何内容(尽管我不知道具体要查找什么),并且这些端口都没有显示我的任何防火墙规则。关闭 docker for windows 也没有任何区别,当一位同事提到对他们来说,重启 docker for windows 就足够了(在 UI 中转到 Reset->Restart),现在对我来说,甚至使用 shutdown 命令重新启动不再起作用了。
更新 2:
netstat -ano
的输出从管理员 powershell 运行:
Proto Local Address Foreign Address State PID
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 1152
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4
TCP 0.0.0.0:2179 0.0.0.0:0 LISTENING 4696
TCP 0.0.0.0:5040 0.0.0.0:0 LISTENING 6616
TCP 0.0.0.0:5357 0.0.0.0:0 LISTENING 4
TCP 0.0.0.0:5432 0.0.0.0:0 LISTENING 11100
TCP 0.0.0.0:7680 0.0.0.0:0 LISTENING 7056
TCP 0.0.0.0:17500 0.0.0.0:0 LISTENING 9668
TCP 0.0.0.0:49664 0.0.0.0:0 LISTENING 784
TCP 0.0.0.0:49665 0.0.0.0:0 LISTENING 1628
TCP 0.0.0.0:49666 0.0.0.0:0 LISTENING 2028
TCP 0.0.0.0:49667 0.0.0.0:0 LISTENING 3560
TCP 0.0.0.0:49800 0.0.0.0:0 LISTENING 856
TCP 0.0.0.0:49821 0.0.0.0:0 LISTENING 892
TCP 0.0.0.0:50000 0.0.0.0:0 LISTENING 11100
TCP 0.0.0.0:50001 0.0.0.0:0 LISTENING 11100
TCP 0.0.0.0:51000 0.0.0.0:0 LISTENING 11100
TCP 10.0.75.1:139 0.0.0.0:0 LISTENING 4
TCP 10.0.75.1:445 10.0.75.2:44848 ESTABLISHED 4
TCP 127.0.0.1:843 0.0.0.0:0 LISTENING 9668
TCP 127.0.0.1:944 0.0.0.0:0 LISTENING 688
TCP 127.0.0.1:944 127.0.0.1:50968 TIME_WAIT 0
TCP 127.0.0.1:944 127.0.0.1:50970 TIME_WAIT 0
TCP 127.0.0.1:944 127.0.0.1:50973 TIME_WAIT 0
TCP 127.0.0.1:944 127.0.0.1:50977 TIME_WAIT 0
TCP 127.0.0.1:944 127.0.0.1:50981 TIME_WAIT 0
TCP 127.0.0.1:944 127.0.0.1:50990 TIME_WAIT 0
TCP 127.0.0.1:944 127.0.0.1:50992 TIME_WAIT 0
TCP 127.0.0.1:944 127.0.0.1:50996 TIME_WAIT 0
TCP 127.0.0.1:944 127.0.0.1:51005 TIME_WAIT 0
TCP 127.0.0.1:944 127.0.0.1:51007 TIME_WAIT 0
TCP 127.0.0.1:944 127.0.0.1:51009 TIME_WAIT 0
TCP 127.0.0.1:944 127.0.0.1:51015 TIME_WAIT 0
TCP 127.0.0.1:944 127.0.0.1:51017 ESTABLISHED 688
TCP 127.0.0.1:4380 0.0.0.0:0 LISTENING 11024
TCP 127.0.0.1:6942 0.0.0.0:0 LISTENING 9296
TCP 127.0.0.1:17600 0.0.0.0:0 LISTENING 9668
TCP 127.0.0.1:49668 127.0.0.1:49669 ESTABLISHED 688
TCP 127.0.0.1:49669 127.0.0.1:49668 ESTABLISHED 688
TCP 127.0.0.1:50076 127.0.0.1:50077 ESTABLISHED 8828
TCP 127.0.0.1:50077 127.0.0.1:50076 ESTABLISHED 8828
TCP 127.0.0.1:50173 127.0.0.1:50174 ESTABLISHED 9668
TCP 127.0.0.1:50174 127.0.0.1:50173 ESTABLISHED 9668
TCP 127.0.0.1:50175 127.0.0.1:50176 ESTABLISHED 9668
TCP 127.0.0.1:50176 127.0.0.1:50175 ESTABLISHED 9668
TCP 127.0.0.1:50197 127.0.0.1:50198 ESTABLISHED 9668
TCP 127.0.0.1:50198 127.0.0.1:50197 ESTABLISHED 9668
TCP 127.0.0.1:50335 127.0.0.1:50336 ESTABLISHED 6424
TCP 127.0.0.1:50336 127.0.0.1:50335 ESTABLISHED 6424
TCP 127.0.0.1:50346 127.0.0.1:50347 ESTABLISHED 11100
TCP 127.0.0.1:50347 127.0.0.1:50346 ESTABLISHED 11100
TCP 127.0.0.1:51011 127.0.0.1:51012 ESTABLISHED 9296
TCP 127.0.0.1:51012 127.0.0.1:51011 ESTABLISHED 9296
TCP 127.0.0.1:51013 127.0.0.1:51014 ESTABLISHED 9296
TCP 127.0.0.1:51014 127.0.0.1:51013 ESTABLISHED 9296
TCP 127.0.0.1:51016 0.0.0.0:0 LISTENING 9296
TCP 127.0.0.1:51017 127.0.0.1:944 ESTABLISHED 8828
TCP 127.0.0.1:63342 0.0.0.0:0 LISTENING 9296
TCP 127.94.0.1:946 0.0.0.0:0 LISTENING 688
TCP 127.94.0.2:946 0.0.0.0:0 LISTENING 688
TCP 127.94.0.3:946 0.0.0.0:0 LISTENING 688
TCP 127.94.0.4:946 0.0.0.0:0 LISTENING 688
TCP 169.254.105.83:139 0.0.0.0:0 LISTENING 4
TCP 192.168.0.107:139 0.0.0.0:0 LISTENING 4
TCP 192.168.0.107:49415 111.221.29.134:443 ESTABLISHED 4316
TCP 192.168.0.107:49417 111.221.29.127:443 ESTABLISHED 4316
TCP 192.168.0.107:50185 162.125.66.3:443 CLOSE_WAIT 9668
TCP 192.168.0.107:50246 52.70.31.26:443 CLOSE_WAIT 9668
TCP 192.168.0.107:50253 35.177.204.73:443 ESTABLISHED 2804
TCP 192.168.0.107:50254 35.177.204.73:443 ESTABLISHED 2804
TCP 192.168.0.107:50256 35.177.204.73:443 ESTABLISHED 2804
TCP 192.168.0.107:50257 158.85.224.175:443 ESTABLISHED 10836
TCP 192.168.0.107:50258 13.69.14.160:443 ESTABLISHED 8620
TCP 192.168.0.107:50310 66.102.1.188:443 ESTABLISHED 11184
TCP 192.168.0.107:50329 157.240.20.15:443 ESTABLISHED 10836
TCP 192.168.0.107:50331 111.221.29.74:443 ESTABLISHED 10072
TCP 192.168.0.107:50332 162.125.18.133:443 ESTABLISHED 9668
TCP 192.168.0.107:50351 40.77.226.194:443 ESTABLISHED 8620
TCP 192.168.0.107:50460 66.102.1.189:443 ESTABLISHED 10836
TCP 192.168.0.107:50470 66.102.1.189:443 ESTABLISHED 10836
TCP 192.168.0.107:50501 192.30.253.125:443 ESTABLISHED 11184
TCP 192.168.0.107:50513 40.77.226.194:443 ESTABLISHED 8620
TCP 192.168.0.107:50529 87.98.218.198:443 ESTABLISHED 12540
TCP 192.168.0.107:50530 172.217.21.46:443 ESTABLISHED 10836
TCP 192.168.0.107:50616 172.217.21.46:443 ESTABLISHED 10836
TCP 192.168.0.107:50630 162.125.18.133:443 ESTABLISHED 9668
TCP 192.168.0.107:50641 172.217.21.37:443 ESTABLISHED 10836
TCP 192.168.0.107:50645 162.125.66.4:443 CLOSE_WAIT 9668
TCP 192.168.0.107:50668 87.98.218.198:443 ESTABLISHED 12540
TCP 192.168.0.107:50703 151.101.0.133:443 ESTABLISHED 11184
TCP 192.168.0.107:50709 192.30.253.125:443 ESTABLISHED 11184
TCP 192.168.0.107:50744 87.98.218.198:443 ESTABLISHED 12540
TCP 192.168.0.107:50828 162.125.66.3:443 CLOSE_WAIT 9668
TCP 192.168.0.107:50830 151.101.0.133:443 ESTABLISHED 11184
TCP 192.168.0.107:50831 151.101.0.133:443 ESTABLISHED 11184
TCP 192.168.0.107:50832 151.101.0.133:443 ESTABLISHED 11184
TCP 192.168.0.107:50834 151.101.0.133:443 ESTABLISHED 11184
TCP 192.168.0.107:50835 151.101.0.133:443 ESTABLISHED 11184
TCP 192.168.0.107:50836 151.101.0.133:443 ESTABLISHED 11184
TCP 192.168.0.107:50837 151.101.0.133:443 ESTABLISHED 11184
TCP 192.168.0.107:50839 192.30.253.125:443 ESTABLISHED 11184
TCP 192.168.0.107:50844 151.101.0.133:443 ESTABLISHED 11184
TCP 192.168.0.107:50847 192.30.253.124:443 ESTABLISHED 11184
TCP 192.168.0.107:50857 192.30.253.124:443 ESTABLISHED 11184
TCP 192.168.0.107:50863 162.125.34.137:443 CLOSE_WAIT 9668
TCP 192.168.0.107:50865 172.217.21.46:443 TIME_WAIT 0
TCP 192.168.0.107:50866 172.217.21.46:443 ESTABLISHED 10836
TCP 192.168.0.107:50910 35.186.213.138:443 TIME_WAIT 0
TCP 192.168.0.107:50923 172.217.21.46:443 ESTABLISHED 10836
TCP 192.168.0.107:50925 40.117.190.72:443 ESTABLISHED 4040
TCP 192.168.0.107:50927 172.217.21.42:443 ESTABLISHED 11184
TCP 192.168.0.107:50949 151.101.0.133:443 ESTABLISHED 11184
TCP 192.168.0.107:50950 151.101.0.133:443 ESTABLISHED 11184
TCP 192.168.0.107:50951 151.101.0.133:443 ESTABLISHED 11184
TCP 192.168.0.107:50954 192.30.253.124:443 ESTABLISHED 11184
TCP 192.168.0.107:50959 40.117.190.72:443 TIME_WAIT 0
TCP 192.168.0.107:50969 192.30.253.113:22 TIME_WAIT 0
TCP 192.168.0.107:50978 87.98.218.198:443 ESTABLISHED 12540
TCP 192.168.0.107:50984 151.101.1.69:443 ESTABLISHED 11184
TCP 192.168.0.107:50985 192.0.73.2:443 ESTABLISHED 11184
TCP 192.168.0.107:50986 104.16.112.18:443 ESTABLISHED 11184
TCP 192.168.0.107:50991 198.252.206.25:443 ESTABLISHED 11184
TCP 192.168.0.107:50993 192.168.0.10:3910 TIME_WAIT 0
TCP 192.168.0.107:50994 192.168.0.10:3910 TIME_WAIT 0
TCP 192.168.0.107:50997 23.210.254.37:443 ESTABLISHED 912
TCP 192.168.0.107:50998 23.210.254.37:443 ESTABLISHED 912
TCP 192.168.0.107:50999 23.210.254.37:443 ESTABLISHED 912
TCP 192.168.0.107:51001 23.210.254.37:443 ESTABLISHED 912
TCP 192.168.0.107:51006 40.117.190.72:443 ESTABLISHED 11992
TCP 192.168.0.107:51008 40.69.218.62:443 ESTABLISHED 7056
TCP 192.168.0.107:51010 172.217.21.46:443 ESTABLISHED 11184
TCP [::]:135 [::]:0 LISTENING 1152
TCP [::]:445 [::]:0 LISTENING 4
TCP [::]:2179 [::]:0 LISTENING 4696
TCP [::]:5357 [::]:0 LISTENING 4
TCP [::]:7680 [::]:0 LISTENING 7056
TCP [::]:17500 [::]:0 LISTENING 9668
TCP [::]:49664 [::]:0 LISTENING 784
TCP [::]:49665 [::]:0 LISTENING 1628
TCP [::]:49666 [::]:0 LISTENING 2028
TCP [::]:49667 [::]:0 LISTENING 3560
TCP [::]:49800 [::]:0 LISTENING 856
TCP [::]:49821 [::]:0 LISTENING 892
TCP [::1]:5432 [::]:0 LISTENING 11100
TCP [::1]:50000 [::]:0 LISTENING 11100
TCP [::1]:50001 [::]:0 LISTENING 11100
TCP [::1]:51000 [::]:0 LISTENING 11100
UDP 0.0.0.0:53 *:* 5620
UDP 0.0.0.0:3702 *:* 2084
UDP 0.0.0.0:3702 *:* 2084
UDP 0.0.0.0:5050 *:* 6616
UDP 0.0.0.0:5353 *:* 11184
UDP 0.0.0.0:5353 *:* 11184
UDP 0.0.0.0:5353 *:* 11184
UDP 0.0.0.0:5353 *:* 3080
UDP 0.0.0.0:5353 *:* 11184
UDP 0.0.0.0:5353 *:* 11184
UDP 0.0.0.0:5353 *:* 11184
UDP 0.0.0.0:5353 *:* 11184
UDP 0.0.0.0:5355 *:* 3080
UDP 0.0.0.0:17500 *:* 9668
UDP 0.0.0.0:49670 *:* 2084
UDP 0.0.0.0:57329 *:* 5620
UDP 0.0.0.0:57330 *:* 5620
UDP 0.0.0.0:59529 *:* 8620
UDP 0.0.0.0:60605 *:* 11184
UDP 10.0.75.1:137 *:* 4
UDP 10.0.75.1:138 *:* 4
UDP 10.0.75.1:1900 *:* 2620
UDP 10.0.75.1:61326 *:* 2620
UDP 127.0.0.1:1900 *:* 2620
UDP 127.0.0.1:60816 *:* 4616
UDP 127.0.0.1:61328 *:* 2620
UDP 169.254.105.83:137 *:* 4
UDP 169.254.105.83:138 *:* 4
UDP 169.254.105.83:1900 *:* 2620
UDP 169.254.105.83:61330 *:* 2620
UDP 172.30.146.241:67 *:* 5620
UDP 172.30.146.241:68 *:* 5620
UDP 172.30.146.241:1900 *:* 2620
UDP 172.30.146.241:61329 *:* 2620
UDP 192.168.0.107:137 *:* 4
UDP 192.168.0.107:138 *:* 4
UDP 192.168.0.107:1900 *:* 2620
UDP 192.168.0.107:61327 *:* 2620
UDP [::]:3702 *:* 2084
UDP [::]:3702 *:* 2084
UDP [::]:5353 *:* 11184
UDP [::]:5353 *:* 11184
UDP [::]:5353 *:* 3080
UDP [::]:5353 *:* 11184
UDP [::]:5355 *:* 3080
UDP [::]:49671 *:* 2084
UDP [::]:57331 *:* 5620
UDP [::]:59529 *:* 8620
UDP [::1]:1900 *:* 2620
UDP [::1]:61323 *:* 2620
UDP [fe80::30eb:ad8f:f94a:b774%26]:1900 *:* 2620
UDP [fe80::30eb:ad8f:f94a:b774%26]:61324 *:* 2620
UDP [fe80::718c:22bb:fd97:c06c%23]:1900 *:* 2620
UDP [fe80::718c:22bb:fd97:c06c%23]:61322 *:* 2620
UDP [fe80::85d0:3b5c:7746:6953%5]:1900 *:* 2620
UDP [fe80::85d0:3b5c:7746:6953%5]:61325 *:* 2620
我用来测试开放端口的 f# 代码:
open System.Net
open System.Net.Sockets
let ipAddress = IPAddress([| (byte)0; (byte)0; (byte)0; (byte)0 |])
let ipEndpoint portNumber = (IPEndPoint(ipAddress, portNumber), portNumber)
let getPorts = seq for i in 1 .. 65535 -> i
let checkIfPortAvailable (endpoint, portNumber) =
use listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
try
listener.Bind(endpoint)
(portNumber, true, null)
with
| ex -> (portNumber, false, ex)
[<EntryPoint>]
let main argv =
getPorts
|> Seq.map ipEndpoint
|> Seq.map checkIfPortAvailable
|> Seq.where (fun (_, works, _) -> not works)
|> Seq.where (fun (_, _, ex) -> ex.Message.Contains("An attempt was made to access a socket in a way forbidden by its access permissions"))
|> Seq.iteri (fun index (port, _, _) -> printfn "%5d: %d" index port)
0
以及执行应用程序时的输出(在 netstat 命令之后立即执行):
0: 445
1: 5357
2: 7680
3: 49670
4: 49671
5: 49672
6: 49673
7: 49674
8: 49675
9: 49676
10: 49677
11: 49678
12: 49679
13: 49680
14: 49681
15: 49682
16: 49683
17: 49684
18: 49685
19: 49686
20: 49687
21: 49688
22: 49689
23: 49710
24: 49711
25: 49712
26: 49713
27: 49714
28: 49715
29: 49716
30: 49717
31: 49718
32: 49719
33: 49720
34: 49721
35: 49722
36: 49723
37: 49724
38: 49725
39: 49726
40: 49727
41: 49728
42: 49729
43: 49730
44: 49731
45: 49732
46: 49733
47: 49734
48: 49735
49: 49736
50: 49737
51: 49738
52: 49739
53: 49740
54: 49741
55: 49742
56: 49743
57: 49744
58: 49745
59: 49746
60: 49747
61: 49748
62: 49749
63: 49750
64: 49751
65: 49752
66: 49753
67: 49754
68: 49755
69: 49756
70: 49757
71: 49758
72: 49759
73: 49770
74: 49771
75: 49772
76: 49773
77: 49774
78: 49775
79: 49776
80: 49777
81: 49778
82: 49779
83: 49780
84: 49781
85: 49782
86: 49783
87: 49784
88: 49785
89: 49786
90: 49787
91: 49788
92: 49789
93: 49790
94: 49791
95: 49792
96: 49793
97: 49794
98: 49795
99: 49796
100: 49797
101: 49798
102: 49799
103: 49825
104: 49826
105: 49827
106: 49828
107: 49829
108: 49830
109: 49831
110: 49832
111: 49833
112: 49834
113: 49835
114: 49836
115: 49837
116: 49838
117: 49839
118: 49840
119: 49841
120: 49842
121: 49843
122: 49844
123: 49845
124: 49846
125: 49847
126: 49848
127: 49849
128: 49850
129: 49851
130: 49852
131: 49853
132: 49854
133: 49855
134: 49856
135: 49857
136: 49858
137: 49859
138: 49860
139: 49861
140: 49862
141: 49863
142: 49864
143: 49866
144: 49867
145: 49868
146: 49869
147: 49870
148: 49871
149: 49872
150: 49873
151: 49874
152: 49875
153: 49876
154: 49877
155: 49878
156: 49879
157: 49880
158: 49881
159: 49882
160: 49883
161: 49884
162: 49885
163: 50274
164: 50275
165: 50276
166: 50277
167: 50278
168: 50279
169: 50280
170: 50281
171: 50282
172: 50283
173: 50284
174: 50285
175: 50286
176: 50287
177: 50288
178: 50289
179: 50290
180: 50291
181: 50292
182: 50293
我实际上想要打开的端口是49786
,但是我的小测试算法拒绝了权限报告的端口数量,但在检查 netstat 时没有分配让我感到困惑
更新 3:
现在简单地运行shutdown /s /f /t 0
不再起作用了,我找到了另一种解决方法,它似乎在https://social.technet.microsoft.com/Forums/windows/en-US/e0cc1b3e-2c63-451a-abc8-8e1e66a23287/an-attempt-was-made-to-access-a-socket-in-a-way-forbidden-by-its-access-permissions?forum=w7itpronetworking - netsh int ip reset
中相当可靠地工作并重新启动计算机(正常的 Windows 10 重新启动就足够了)和到目前为止,该端口在下次启动时始终可用(但仅尝试了 3 次)
更新 4:
cmets 总结:
在小 f# 脚本中设置 SO_REUSEADDR 只会让事情变得更糟 尝试关闭 Skype、*** 应用程序、保管箱和类似的没有任何效果(是的,我实际上确保进程已终止)【问题讨论】:
@SylvanLEDEUNFF - 哪个应用程序打开了哪些端口?您已经可以看到 netstat 没有提到有问题的端口,据我了解,任务管理器没有提供有关开放端口的信息以及来自 netstat 的进程 ID,我发布的这些信息来自几天前所以它们在任务管理器中会有所不同,所以很抱歉,您能否详细说明任务管理器的屏幕截图对您有何帮助? @SylvanLEDEUNFF 这是一个公平的观点,不幸的是我不知道如何从任务管理器中导出进程列表。但是我尝试了一个实验,在该实验中我关闭了大部分进程,将运行进程降至 70-80 个,我注意到在关闭一些服务后,实际上更多的端口被标记为权限被拒绝,这让我想——也许不是进程正在运行,但是进程已经终止并且没有释放端口,如果这是可能的话。 - 同样在安全模式下(可能很明显)没有端口被标记为权限被拒绝 是的,我认为应该是忘记关闭端口的服务 @SylvanLEDEUNFF 服务忘记永久关闭端口如何导致端口被关闭?那不应该出现在 netstat 或 TCPView 的某个地方吗?有没有办法强制释放资源? 我在构建 1809 时也遇到了同样的问题(尝试使用 TCPView 和 netstat 没有成功)。发现这个article 意味着安装 KB4074588 会阻塞一些端口。netsh interface ipv4 show excludedportrange protocol=tcp
会给你一个保留端口的列表,这恰好是我的情况的原因。不确定这些端口是永久保留还是以后会以某种方式更改。
【参考方案1】:
原因是 Hyper-V 接管了这些端口,为了防止它发生,请执行以下操作:
dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
(必须重新启动)
netsh int ipv4 add excludedportrange protocol=tcp startport=<your port> numberofports=1
dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All
原来的解决方案是here。
如果之后您仍然无法绑定到端口,请执行以下操作:
netsh http add iplisten 0.0.0.0
用于 IPv4
netsh http add iplisten ::
用于 IPv6
更多信息是here。
【讨论】:
尽管这个解决方案对我不起作用,但它引导我朝着正确的方向前进。我发现了这个link,其中说明了 Windows 10 更新 1809 之后的一个问题,Windows 将保留一系列端口,其中包括端口 50,000。那是我的问题。显示是否有保留端口:netsh int ipv4 show excludedportrange protocol=tcp
禁用保留端口reg add HKLM\SYSTEM\CurrentControlSet\Services\hns\State /v EnableExcludedPortRange /d 0 /f
@GilbertoTreviño 我认为您应该添加您的评论作为答案。
这结束了一直存在的神秘套接字绑定错误。谢谢!【参考方案2】:
Windows 升级错误是保留 tcp 端口出现问题的原因。 见https://github.com/docker/for-win/issues/3171#issuecomment-554587817
有了这个问题应该得到解决:
netsh int ipv4 set dynamic tcp start=49152 num=16384
这可以解释为什么全新安装可以解决这些类型的问题。
【讨论】:
请注意,需要重新启动才能更新排除的端口范围并释放您的端口 这似乎可以解决我的问题,即 Wampserver 不允许我通过phpMyAdmin
访问 mysql
。我会试试这个。【参考方案3】:
我也遇到了上面的 Hyper-v/WSL 问题,但是找到了一个更简单的解决方案:
在此之前我已经停止了 docker,不确定是否有必要。
以管理员身份运行:
net stop winnat
net start winnat
【讨论】:
这个答案没有得到足够的关注,因为它很琐碎并且每次都对我有用。 我也用过这个方法——问题是你每次重启后都需要这样做。 @dermoritz 对我来说它不会在每次重启后发生.. 但它仍然会偶尔回来 我遇到了与原始海报相同的问题,出乎意料。 WSL 之前一直运行良好。这个答案解决了这个问题【参考方案4】:如果有人在将 Windows 更新到包含 WSL2 的 2020 年 5 月更新后遇到类似问题后来到这里。就我而言,我还将 docker 切换到了 WSL2 帖子,我的一些容器开始面临类似的问题。
注意:在powershell中运行以下命令(以管理员身份运行)
禁用 Hyper-V。
dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
删除所有与 hyper-v 相关的网络适配器。
Get-HNSNetwork | Remove-HNSNetwork
重启。
【讨论】:
这解决了我的很多问题,谢谢! 请注意,如果您删除 HNSNetwork,它也会删除负责为 WSL 内的虚拟机提供网络连接的 vEthernet 适配器,这只会破坏您的系统,您需要恢复它。这不是答案,不应在不知道其后果的情况下尝试。 @MaulikParmar 不,不会。这是 microsoft 推荐的在卸载 docker 时清理 docker 组件的步骤。 Check this out.这是在尝试成功后才发布的,没有任何危害。 过去几个月我一直在努力解决这个问题。当我运行这两个命令时,我的 vEthernet 适配器确实消失了,但在我重新启动后,它们又回来了。一切似乎都正常工作,到目前为止,它似乎已经为我解决了这个问题(幸运的是,现在我们有了 WSL2,我不再需要 Hyper-V)。 这次更新后也发生在我身上。由于我目前不使用 Docker,因此我的快速解决方法不仅是退出 docket 作为桌面应用程序,而且不在启动时启动。我还必须停止 docker 服务并将其切换为手动启动。然后在重新启动后不再创建保留。【参考方案5】:如果您在 Win10 2004 上遇到此问题是因为此更新中的问题,请联系 following
netsh int ipv[46] set dynamic tcp start=49152 num=16384
reg add HKLM\SYSTEM\CurrentControlSet\Services\hns\State /v EnableExcludedPortRange /d 0 /f
我在打开 Jetbrains IDE 和许多其他使用套接字的程序时遇到了这个问题
【讨论】:
就我而言,只需要netsh
命令(然后重新启动);所以我建议只在netsh
命令不足的情况下运行注册表更改命令。【参考方案6】:
扩展所选答案:如果您启用了 Hyper-V,您可以在引导期间使用 bcdedit 暂时禁用它:
bcdedit /Set current hypervisorlaunchtype off
通过以下方式重启并排除必要的端口:
netsh int ipv4 add excludedportrange protocol=tcp startport=<your port> numberofports=1
然后只需重新启用 Hyper-V,然后重新启动:
bcdedit /Set current hypervisorlaunchtype auto
这样可以避免完全删除并重新添加 Hyper-V 功能,这需要多次重启。
【讨论】:
【参考方案7】:我现在(2021 年 8 月)遇到了类似的问题,this GitHub 问题对此问题有一些了解。好像
net stop winnat
net start winnat
应该解决这个问题,您可能需要在重新启动之前启动您的应用程序winnat
【讨论】:
【参考方案8】:当我寻找它时,解释是
试图以访问权限禁止的方式访问套接字。一个例子是在没有使用 setsockopt(SO_BROADCAST) 设置广播权限的情况下将广播地址用于 sendto。
WSAEACCES 错误的另一个可能原因是当调用绑定函数时(在带有 SP4 的 Windows NT 4.0 和更高版本上),另一个应用程序、服务或内核模式驱动程序被绑定到具有独占访问权限的同一地址。这种独占访问是带有 SP4 及更高版本的 Windows NT 4.0 的新功能,通过使用 SO_EXCLUSIVEADDRUSE 选项实现。
【讨论】:
是的,这似乎是正确的,但是,我看不到绑定到这些端口的应用程序 - 正如我所说,这是多个人(到目前为止 4 人)使用不同的 Windows 10 计算机/笔记本电脑同样的,不确定的问题,有时会在重新启动某些服务或窗口时消失,有时多次重新启动也无济于事 我在问题中添加了更多数据,也许有帮助?以上是关于由于权限被拒绝,无法绑定到某些端口的主要内容,如果未能解决你的问题,请参考以下文章
无法绑定到 8080 端口。它可能被另一个应用程序占用或您没有足够的权限
让我们加密 SSL 无法以“错误:EACCES:权限被拒绝,打开 '/etc/letsencrypt/live/domain.net/privkey.pem'”开始