동적 포트 범위(Dynamic port range) 수정

동적 포트 범위란?
TCP 의 포트라는 것은 0 ~ 65535 의 값을 가지는 2 바이트의 부호없는 정수인데
TCP/IP 를 사용하는 모든 소켓은 포트 번호가 지정되어야 한다.
응용프로그램이 서버로 동작하는 경우에도, 웹브라우저와 같이 클라이언트로 동작하는 경우에도 포트 번호는 지정된다.
대부분의 서버 프로그램은 자신이 사용할 포트 번호를 정적인 설정으로 가지고 있다.
예를 들면 웹서버는 80이나 443을 보통 사용하고, SSH 서버는 22을 사용한다.
하지만 클라이언트는 정적인 설정으로 포트번호를 지정하지 않는다.
그래서 OS가 이런 클라이언트 프로그램들에게 N ~ M 사이의 미사용 포트번호를 지정해 주는데
이 범위를 동적 포트 범위라고 한다.

그런데 이걸 왜 수정해야 하는데?

어떤 이유로 동적 포트 범위가 1025 ~ 60000 으로 지정되었다고 하자.
그리고 다른 이유로 해당 컴퓨터에서 RDP 를 사용한다고 하면
RDP 는 기본으로 3389를 사용하고, 이는 동적 포트 범위에 포함되기 때문에
RDP 서비스 이전의 다른 서비스가 동적 포트로 3389를 가져가면 RDP 서버는 실행이 되지 않는다.

인터넷 환경이 점점 발전함에 따라 동적 포트의 기본값도 바뀌었다.

To comply with Internet Assigned Numbers Authority (IANA) recommendations,
Microsoft has increased the dynamic client port range for outgoing connections in Windows Vista and Windows Server 2008.
The new default start port is 49152, and the new default end port is 65535.
This is a change from the configuration of earlier versions of Windows that used a default port range of 1025 through 5000.

<MS의 동적 포트 기본값에 대한 설명 중에서…>

아래의 명령들로 동적 포트 범위를 확인하고 설정할 수 있다

netsh int ipv4 show dynamicport tcp
netsh int ipv4 show dynamicport udp
netsh int ipv6 show dynamicport tcp
netsh int ipv6 show dynamicport udp
netsh int ipv4 set dynamicport tcp start=49152 num=16384
netsh int ipv4 set dynamicport udp start=49152 num=16384
netsh int ipv6 set dynamicport tcp start=49152 num=16384
netsh int ipv6 set dynamicport udp start=49152 num=16384