Bitvise - Address is already in use; bind() in ListeningSocket::StartListening() failed: Windows error 10013: An attempt was made to access a socket in a way forbidden by its access permissions.
어느 순간부터 Bitvise 실행 시 다음과 같은 오류가 발생합니다.
23:32:48.931 Current date: 2020-08-23
...[생략]...
23:33:00.571 Failed to add client-to-server port forwarding rule on 127.0.0.1:10000: Address is already in use; bind() in ListeningSocket::StartListening() failed: Windows error 10013: An attempt was made to access a socket in a way forbidden by its access permissions.
...[생략]...
이번에도 역시 지난 글에 썼던 원인과 같습니다.
소켓 바인딩 시 "System.Net.Sockets.SocketException: An attempt was made to access a socket in a way forbidden by its access permissions" 오류 발생
; https://www.sysnet.pe.kr/2/0/12240
실제로 10000 포트가 포함된 영역이 점유되어 있고,
C:\Windows\System32> netsh int ipv4 show excludedportrange protocol=tcp
Protocol tcp Port Exclusion Ranges
Start Port End Port
---------- --------
80 80
1581 1680
1681 1780
2013 2112
2180 2279
2606 2705
2706 2805
3673 3772
3773 3872
3942 4041
5357 5357
8060 8060
9813 9912
9913 10012
10013 10112
50000 50059 *
* - Administered port exclusions.
아쉽게도 이 영역은 netsh에 의해 삭제할 수 없습니다.
C:\Windows\System32> netsh int ip delete excludedportrange protocol=tcp startport=9913 numberofports=100
Access is denied.
C:\Windows\System32> netsh int ipv4 delete excludedportrange protocol=tcp startport=9913 numberofports=100
Access is denied.
전에 쓴 글에 따라,
"Administered port exclusions" 설명
; https://www.sysnet.pe.kr/2/0/12293
이 영역을 삭제하려면
API를 사용하거나 "netsh int ip reset"을 하면 되는데, 제 경우에는 테스트 PC의 상황이어서 간단하게 reset을 하는 것으로 해결했습니다.
C:\Windows\System32> netsh int ip reset
Resetting Compartment Forwarding, OK!
Resetting Compartment, OK!
Resetting Control Protocol, OK!
Resetting Echo Sequence Request, OK!
Resetting Global, OK!
Resetting Interface, OK!
Resetting Anycast Address, OK!
Resetting Multicast Address, OK!
Resetting Unicast Address, OK!
Resetting Neighbor, OK!
Resetting Path, OK!
Resetting Potential, OK!
Resetting Prefix Policy, OK!
Resetting Proxy Neighbor, OK!
Resetting Route, OK!
Resetting Site Prefix, OK!
Resetting Subinterface, OK!
Resetting Wakeup Pattern, OK!
Resetting Resolve Neighbor, OK!
Resetting , OK!
Resetting , OK!
Resetting , OK!
Resetting , OK!
Resetting , failed.
Access is denied.
Resetting , OK!
Resetting , OK!
Resetting , OK!
Resetting , OK!
Resetting , OK!
Resetting , OK!
Resetting , OK!
Restart the computer to complete this action.
참고로, 위의 reset 결과를 보면 중간에 "Access is denied"가 나옵니다. 이에 대해 검색해 보면,
NETSH INT IP RESET SAYS ACCESS DENIED
; https://davidvielmetter.com/tricks/netsh-int-ip-reset-says-access-denied/
다음의 레지스트리 키 항목에 대해 "Everyone" 수준에서 "Full Control"로 권한을 설정하라고 나옵니다.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nsi\{eb004a00-9b1a-11d4-9123-0050047759bc}\26
실제로 regedit를 이용해 간단하게 권한 추가를 한 후 다시 reset 명령어를 실행하면 "Access is denied" 오류가 없습니다.
C:\Windows\System32> netsh int ip reset
Resetting Compartment Forwarding, OK!
Resetting Compartment, OK!
Resetting Control Protocol, OK!
Resetting Echo Sequence Request, OK!
Resetting Global, OK!
Resetting Interface, OK!
Resetting Anycast Address, OK!
Resetting Multicast Address, OK!
Resetting Unicast Address, OK!
Resetting Neighbor, OK!
Resetting Path, OK!
Resetting Potential, OK!
Resetting Prefix Policy, OK!
Resetting Proxy Neighbor, OK!
Resetting Route, OK!
Resetting Site Prefix, OK!
Resetting Subinterface, OK!
Resetting Wakeup Pattern, OK!
Resetting Resolve Neighbor, OK!
Resetting , OK!
Resetting , OK!
Resetting , OK!
Resetting , OK!
Resetting , OK!
Resetting , OK!
Resetting , OK!
Resetting , OK!
Resetting , OK!
Resetting , OK!
Restart the computer to complete this action.
실행 후 "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nsi\{eb004a00-9b1a-11d4-9123-0050047759bc}" 레지스트리 하위를 보면 "4"를 제외하고 모두 삭제되어 있습니다.
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]