Error: listen EACCES: permission

2024-04-06  本文已影响0人  道行者

近来开发,在启动程序时,会遇到类似错误,导致程序起不来:

Error: listen EACCES: permission denied 0.0.0.0:7001

网上查了一下,说是 windows 为 Hyper-V 保留的端口号,所以不能使用。这个保留区间是不固定的,所以有时重启机器后又可以用了。可用如下命令查看保留了哪些端口号:

> netsh interface ipv4 show excludedportrange protocol=tcp
Protocol tcp Port Exclusion Ranges

Start Port    End Port
----------    --------
      5357        5357
      6180        6279
      6280        6379
      6380        6479
      6480        6579
      6680        6779
      6780        6879
      6880        6979
      6980        7079
      7102        7201
      7202        7301
     49719       49818
     50000       50059     *
     50060       50159
     50260       50359
     50560       50659
     52733       52832
     52833       52932
     52943       53042
     53143       53242

* - Administered port exclusions.

发现 7001 确实在这个保留的范围内。又查到说是可用如下命令限定这个保留区间(以管理员身份执行):

net stop winnat
netsh int ipv4 set dynamic tcp start=49152 num=16384
netsh int ipv6 set dynamic tcp start=49152 num=16384
net start winnat

执行后,确实变了:

> netsh interface ipv4 show excludedportrange protocol=tcp

Protocol tcp Port Exclusion Ranges

Start Port    End Port
----------    --------
      5357        5357
     50000       50059     *

* - Administered port exclusions.

但是觉得跟这命令中写的端口号范围没有关系!改了 start 和 num 重新执行这些命令,发现还是 5357 和 50000 到 50059。
不知道以后会怎么样,看来若是碰到这种情况,重启一下 winnat 可能会好。

上一篇 下一篇

猜你喜欢

热点阅读