포트포워딩
포트포워딩(Port forwarding)은 말 그대로 포트(Port)를 전달(Forwarding)해 주는 것으로 특정한 포트로 들어오는 데이터 패킷을 다른 포트로 바꿔서 다시 전송해주는 작업을 의미한다.
즉 공인 IP(공유기의 외부 주소)로 들어오는 특정 포트의 요청을, 내부 네트워크의 특정 사설 IP와 포트로 전달해주는 기능이다.
라우터는 라우터에 연결된 모든 기기에 사설 네트워크를 구축해주는 역할을 한다. 뿐만 아니라 라우터는 공용 IP를 할당받는데, 이때 사설 네트워크 내의 기기들은 인터넷에 접속하기 위하여 라우터를 거쳐야 한다. 가정용 기기를 원격 기기에 직접 연결하고 싶다면, 서버 포트포워딩을 설정해야 한다.
라우터에는 6만 개 이상의 포트가 있는데, 이 중 잘 알려진 포트를 제외한 나머지 포트는 원하는 기기나 프로그램에 할당할 수 있다. 이렇게 라우터에 있는 포트를 열어 특정 기기에 할당하면 기기가 라우터로 연결 요청을 보낼 때, 자동으로 직접적인 인터넷 연결을 형성한다.

예를 들어 1번 컴퓨터가 80번 포트로 웹서버를 열었다고 하자. 그리고 외부에서 이 웹 서버로 접근하기 위해서는 공유기의 공인 IP주소로 접근을 해야한다.
그렇다면 외부에서 이 웹서버로 접근할 때 138.76.29.7:80로 접근시켜줘 라는 요청을 받아들일 수 있을까?
결론은 받아들일 수 없다. 왜냐하면 공유기 입장에서는 1번 컴퓨터의 80번 포트인지, 2번, 3번 컴퓨터인지 판단을 할 수 없기 때문이다. 따라서 이를 해결하기 위함이 포트포워딩이다.
즉 포트포워딩 설정에서 ‘80번 포트로 요청이 오면, 1번 컴퓨터의 80번 포트로 접근시켜줘’ 라는 것이 포트포워딩이다.
정리하면 외부에서 내부 장치를 접근하고 싶을 때 공유기에 연결되어 있다면 공인 IP 하나에 여러 기기가 사설 IP를 가진 상태가 된다.
이 때 외부에서 특정 내부 장치(예 : 웹 서버, 게임 서버)에 접근하려면 공유기에게 이 요청은 누구에게 보낼지 알려줘야 한다.
포트포워딩을 설정하면, 공인 IP + 포트 번호로 외부에서 접근할 수 없는 사설 IP의 장치에 접근하는 것이 가능해진다.
참고
- 외부 포트와 내부 포트를 서로 다르게 할 수 있다. (ex.. ‘180번 포트로 요청이 오면 1번 컴퓨터의 80번 포트로 접근해줘’가 가능)
- 하나의 포트는 하나의 포워딩만 가능.
- 포워딩하려는 IP는 공유기가 할당한 사설 IP이어야 함.
- 여기서 공유기의 포트를 기기에 하나씩 주는 것이 아니라 전부 열어놓고 특정 대상 장치로만 전달되게 한다면 DMZ라고 함 (권장X)