Today I tried to fire up a project I haven't run in a long time. It's a web app, and it happens to launch on a specific port: 50617.
I was frustrated to see this:
An attempt was made to access a socket in a way forbidden by its access permissions.
I use Docker on Windows with the WSL2 engine, which involves Hyper-V. Some quick googling revealed that this error usually comes up when you're trying to access a port that has been reserved by something else. Hyper-V reserves a bunch of ephemeral ports, so it's a common culprit.
To confirm your port has already been reserved, open an admin command prompt and run this:
netsh interface ipv4 show excludedportrange protocol=tcp
This will show you the ranges that have been reserved. My port was in one of the ranges.
I found the solution on this GitHub comment, so full props to the author for finding the solution. I'm just writing this post to help make this easier to find than digging through long GitHub comment chains :)
The gist of it is:
- Open an Administrator command prompt
Stop the Windows NAT Driver service
net stop winnat
Create a manual reservation for the specific port you're trying to use (50617 in my case).
netsh int ipv4 add excludedportrange protocol=tcp startport=50617 numberofports=1
Start the Windows NAT Driver service
net start winnat
Run your project!
This should get your port reserved and let you get your project running. If you have additional tips related to this issue, leave a comment!