der*_*itz 20 networking windows-10
自 Windows 2004 更新以来,我一直在与许多无法绑定到某些端口的程序和工具作斗争。我偶然发现的一些研究:
netsh interface ipv4 show excludedportrange protocol=tcp
就我而言,它产生了(在禁用 hyper-v 后,我切换到基于 WSL2 的 Docker):
Startport Endport
---------- --------
1131 1230
1231 1330
1331 1430
1431 1530
1735 1834
1835 1934
1943 2042
2043 2142
2143 2242
2243 2342
2343 2442
2443 2542
2543 2642
2643 2742
2743 2842
2843 2942
2943 3042
3129 3228
3229 3328
3329 3428
3429 3528
3831 3930
3931 4030
4031 4130
4131 4230
4231 4330
4531 4630
4631 4730
5241 5340
5357 5357
5458 5557
5558 5657
5658 5757
6040 6139
6140 6239
6933 7032
7033 7132
7133 7232
7233 7332
7333 7432
7633 7732
7733 7832
8001 8100
8101 8200
8201 8300
8301 8400
8401 8500
8501 8600
27972 28071
28072 28171
28172 28271
28272 28371
28572 28671
28672 28771
50000 50059 *
Run Code Online (Sandbox Code Playgroud)
目前,范围 1431 到 1530 阻止我运行我的 Oracle 数据库。但是每次重新启动后保留范围都会发生变化。
我试图删除一些范围,
netsh int ipv4 delete excludedportrange protocol=tcp startport=1431 numberofports=100但它会产生access denied(在管理员 cmd 中)。
什么是保留这些范围以及如何控制它们?
ber*_*ers 27
我在这个 GitHub 评论中找到了答案:你可以试试
net stop winnat
Run Code Online (Sandbox Code Playgroud)
释放端口。这在 Windows 10 2004 中对您有用,在 Windows 10 20H2 中对我有用。
(在早期版本的 Windows 中,我使用以下方法之一成功,比较如何知道是什么阻止了我的套接字绑定到 localhost:50060-50959)。
net stop LanmanWorkstation
net stop WlanSvc
net stop WwanSvc
Run Code Online (Sandbox Code Playgroud)
虽然这可能会断开您的网络,但不要绝望。因为,如果上述方法之一适合您,您可以尝试以下一次以永久解决此问题:
netsh int ipv4 add excludedportrange protocol=tcp startport=50323 numberofports=1
Run Code Online (Sandbox Code Playgroud)
(使startport和适应numberofports您的需要 - 另外,ipv6如果需要,请考虑)。
这应该net start在相应的服务以及重新启动后仍然存在,因为您可以使用
netsh interface ipv4 show excludedportrange protocol=tcp
Run Code Online (Sandbox Code Playgroud)
如果这输出
Protocol tcp Port Exclusion Ranges
Start Port End Port
---------- --------
[...]
50145 50244
50323 50323 *
50324 50423
[...]
* - Administered port exclusions.
Run Code Online (Sandbox Code Playgroud)
你应该会好一会儿。
@yoshpe 的回答(与 Hyper-V 有关)是该问题的潜在原因之一。
然而,这个问题对我来说是不同的。就我而言,这是因为 Windows 启动时将其“动态端口”配置为从端口 1025 开始并在端口 5000 结束。因此,当 Docker Desktop 启动时,它将保留 1025-5000 端口范围内的端口,这(有时!)与我自己的程序配置为保留/使用的端口冲突。(用于从本地 Kubernetes 集群到本地主机的端口转发)
要查看动态端口设置是否不正确,可以运行:
netsh int ipv4 show dynamicport tcp
Run Code Online (Sandbox Code Playgroud)
如果您看到Start Port: 1025,则动态端口范围配置错误。要修复它,您需要将其设置为更合理的范围 - 避免 <10k 端口。(这通常是开发人员放置自己的应用程序的地方)
将其设置为推荐范围:(如果您的问题与 ipv6 有关,则替换ipv4为ipv6iirc)
netsh int ipv4 set dynamic tcp start=49152 num=16384
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅此处:/sf/answers/4365168881/
| 归档时间: |
|
| 查看次数: |
7636 次 |
| 最近记录: |