netsh
윈도우 2000부터 포함되기 시작한 소프트웨어로, 로컬 또는 원격 네트워크 설정을 변경하는 데 사용한다.
포트 포워딩
Packet이 라우터나 방화벽과 같은 Network Gateway를 지나가는 동안 IP 주소와 포트 번호 결합으로 된 통신 요청을 다른 곳으로 넘겨주는 것.
통신하는 목적지 IP와 포트 번호는 내부 호스트에 다시 매핑함으로써 이루어진다.
윈도우에서는 netsh를 사용해 Port Forwarding을 설정할 수 있으며, L7에서 패킷을 전달해주는 방식이기 때문에 Port Proxy가 좀 더 정확한 용어라고 할 수 있겠다.
명령어는 netsh interface portproxy로 시작하며, IPv4를 IPv4/IPv6로 전달하는 규칙을 조회/생성/삭제 또는 IPv6를 IPv4/IPv6로 전달하는 규칙을 조회/생성/삭제하는 등의 작업을 수행할 수 있다.
규칙 생성 및 삭제 시에는 관리자 권한이 필요하다.
명령어
규칙 확인
show 명령으로 확인할 수 있다.
#모든 규칙 조회
netsh interface portproxy show all
# IPv4 -> IPv4 규칙 조회
netsh interface portproxy show v4tov4
# IPv4 -> IPv6 규칙 조회
netsh interface portproxy show v4tov6
# IPv6 -> IPv4 규칙 조회
netsh interface portproxy show v6tov4
# IPv6 -> IPv6 규칙 조회
netsh interface portproxy show v6tov6
규칙 생성
add 명령으로 규칙을 생성할 수 있다.
생성할 규칙의 유형(v4tov4 또는 그 외)과 요청을 수신할 주소와 포트 번호, 그리고 요청을 전달할 IP와 포트 번호 등을 지정해야 한다.
netsh interface portproxy add <TYPE> listenport= {Integer | ServiceName} [[connectaddress=] {IPv4Address | HostName}] [[connectport=] {Integer | ServiceName}] [[listenaddress=] {IPv4Address | HostName}] [[protocol=]tcp]
# 예시
netsh interface portproxy add v4tov4 listenport=40022 listenaddress=127.0.0.1 connectport=22 connectaddress=54.180.107.159
예시의 규칙은 127.0.0.1(localhost)에 40022 포트로 수신받은 요청을 54.180.107.159:22로 전달하는 v4tov4 규칙이다.
규칙 삭제
delete 명령으로 생성된 규칙을 삭제할 수 있다.
삭제할 규칙의 유형과 요청 수신 주소와 포트 번호를 지정해야 한다.
netsh interface portproxy delete <TYPE> listenport= {Integer | ServiceName} [[listenaddress=] {IPv4Address | HostName} [[protocol=]tcp]
# 예시
netsh interface portproxy delete v4tov4 listenport=40022 listenaddress=127.0.0.1