포트 포워딩(Port Forwarding)이란 특정 Port로 들어오는 패킷을 다른 Port로 바꿔서 재전송해 주는 기능으로, 일종의 터널링(Tunneling)에 해당합니다.
이를 활용하면 패킷에 기재된 포트번호에 따라 서로 다른 Host로 연결시켜줄 수 있고, 외부에서 직접 접근이 불가능한 내부 네트워크에 있는 Host와의 연결을 중계(Relaying)하는 용도로도 활용할 수 있습니다.
흔히 포트 포워딩은 인터넷 공유기에서 주로 설정하곤 하지만, Windows에서도 명령 한줄로 간단하게 포트 포워딩 설정을 할 수 있습니다.
다만, 현재는 TCP만 지원하며, UDP 패킷을 포워딩하기 위해서는 별도의 포트 포워딩 서버를 설치해서 사용해야 합니다.
참고로, 포트 포워딩은 그 개념상 OSI 7 Layer중 Transport Layer까지만 건드리기 때문에 그 상위 계층에 포함된 정보를 가지고 뭔가를 하고 싶다면 다른 솔루션을 사용해야 합니다.
예를 들어, HTTP 패킷에 기재된 Host명에 따라 서로 다른 IP/Port로 전달을 하고 싶다면, Nginx와 같은 웹 서버를 설치해서 Proxy Server를 구축해야 합니다.
※ 이후 설명하는 명령을 명령 프롬포트(CMD)를 관리자 권한으로 실행하고 입력해야 동작합니다.
포트 포워딩 설정하기
다음 명령은 127.0.0.1:8022로 들어오는 패킷을 192.168.100.1:22로 포워딩하도록 설정합니다.
netsh interface portproxy add v4tov4 listenport=8022 listenaddress=127.0.0.1 connectport=22 connectaddress=192.168.100.1
포트 포워딩 해제하기
다음 명령은 127.0.0.1:8022로 들어오는 패킷에 대한 포트 포워딩 설정을 해제합니다.
netsh interface portproxy delete v4tov4 listenport=8022 listenaddress=127.0.0.1
포트 포워딩 목록 확인하기
다음 명령으로 등록된 IPv4 to IPv4 포트 포워딩 목록을 확인할 수 있습니다.
netsh interface portproxy show v4tov4