I guess this is a perfect example of how people get cynical of software updates after going through the routine for awhile. And this is coming from someone who enjoys solving technical problems when he is in the right mood!
So recently, I started having some long-running software complain that it can't bind to a certain TCP port because "the port is already in use". I immediately pulled out my trusty CurrPorts and check out which mysterious program is hogging the port behind my back (yeah I could use netstat, but who has time to memorize all those command line arguments, right?)
To my surprise, nothing, nadda. No one is using that port. Yet that port is mysteriously barred from use. It's like you suddenly cannot open the door to your home with your existing key. Incredibly frustrating.
Anyway, after 2 whole days of research, I finally found the culprit. Apparently after a certain Windows update (1809 or 2004 from various sources, I didn't care to verify), Windows now reserves certain ports (called "Administered port exclusions") for Hyper-V (not sure why that would affect me, since I am not using it).
To view the list, using the command line:
netsh int ipv4 show excludedportrange tcp
You'd be surprised by how many ports are reserved. On my machine, this is the output:
Protocol tcp Port Exclusion Ranges Start Port End Port ---------- -------- 5357 5357 7834 7933 7934 8033 8034 8133 8134 8233 8234 8333 8334 8433 8434 8533 8637 8736 8737 8836 8837 8936 8937 9036 9037 9136 9137 9236 9237 9336 9537 9636 9637 9736 9737 9836 9837 9936 9937 10036 10037 10136 10137 10236 10551 10650 10651 10750 10751 10850 10851 10950 10951 11050 11051 11150 11151 11250 11277 11376 11377 11476 11477 11576 11577 11676 * - Administered port exclusions.
Here are some associated links from my research:
- Reserved ports in Windows 1809
- How do I find out why certain ports are excluded and delete the exclusion?
- Many excludedportranges how to delete - hyper-v is disabled
Anyway, the solution for me was to issue this command:
reg add HKLM\SYSTEM\CurrentControlSet\Services\hns\State /v EnableExcludedPortRange /d 0 /f
It basically sets the EnableExcludedPortRange registry value to 0. A reboot is required.
This is incredibly frustrating because it came out of nowhere, no meaningful error message was provided and even trying to research the problem took a lot of time to figure out the right keywords that will yield the right answer. It was as if the guys who came up with this wanted to inflict the maximum pain on the affected user (or more likely they didn't really give a f**k).
Update (1 Sep 2021):
Discovered that a better solution is to issue this command at an elevated CMD:
netsh int ipv4 set dynamic tcp start=49152 num=16384
After a reboot, the new reserved ports will be:
C:\>netsh int ipv4 show excludedportrange tcp Protocol tcp Port Exclusion Ranges Start Port End Port ---------- -------- 2869 2869 5357 5357 49152 49251 49370 49469 49470 49569 49725 49824 49825 49924 49925 50024 50025 50124 50125 50224 50443 50542 50543 50642 50643 50742 50743 50842 50843 50942 50943 51042 51043 51142 51457 51556 51557 51656 51657 51756 51757 51856 51857 51956 51957 52056 52151 52250 60580 60679 60883 60982 61088 61187 61356 61455 64877 64976 64977 65076 65077 65176 65177 65276 65277 65376 65377 65476 * - Administered port exclusions.
Comments
Post a Comment