본문 바로가기

IT 지식

포트 포워딩

포트 포워딩이란

포트포워딩의 일반적인 개념은 컴퓨터들에게 특정 포트를 개방시켜 줌으로써 서로 통신이 되도록 하는 것을 의미합니다. NAT (Network Address Translation) 의 기능 중 하나이며 포트매핑(Port Mapping) 이라고 불리기도 합니다.

 

이 기법은 게이트웨이(Gateway) 외부망의 반대쪽에 위치한 내부망에 상주하는 호스트에 대한 서비스를 제공하기 위해 흔히 사용됩니다. 포트포워딩이라는 것은 외부에서 어떤 서버 혹은 IP로 접속을 하든간에 특정 포트로 접속을 요청하게 되면 무조건 그 서버나 IP로 넘겨버리는 것이라고 할 수 있습니다.

쉽게 설명하자면 컴퓨터 안에 호텔처럼 여러개의 수많은 방들이 있다고 가정하면 이해가 쉽습니다.

그 방들 중 하나는 80번 방이고, 그 안에는 HTTP 라는 서비스가 들어있습니다.

또 다른방인 21번 방에는 FTP라는 애가 들어가 있습니다. 해당 서버 IP가 10.10.10.10 이라고 할 때,

외부에서 [ 10.10.10.10:80 ] 이렇게 접근한다면 바로 80번 방으로 안내해 HTTP라는 서비스로 연결해주고

[ 10.10.10.10:21 ] 로 접근을 한다면 21번 방으로 안내해 FTP 서비스로 연결해주는 것이라고 생각하면 됩니다.

이 외에도 수많은 방들이 존재하며 이렇게 쉽게 찾아갈 수 있도록 방 번호를 메기는 것을 포트포워딩(Port-Forwarding) 이라고 합니다. 쉽게 설명하자면 "컴퓨터에게 이쪽으로 가세요~"라고 알려주는 방식이라고 생각하시면 됩니다.

 

포트포워딩의 필요성

내부 네트워크 또는 네트워크에 연결되지 않은 하나의 호스트만 사용하는 서비스들이라면 필요가 없는 기능입니다.

 

그러나 자주 거론되는 이유는 과거와 다르게 IT의 발달로 인하여 외부에서 제공하는 서비스등을 제공 받거나 제공해주기 위하여 개발되었기 때문이죠. 또, 공유기에 하나의 호스트만 붙어있질 않습니다.

 

스마트폰을 이용하여 무선공유기에 접속을 하여도 호스트가 됩니다.

 

그리고 내부 IP는 특별한 작업을 거치지 않는 한 외부에서 접속할 수 없습니다. 오직 외부IP를 통해서만 접속이 가능하죠.

 

제 공유기에 연결된 호스트가 3개라고 가정을 할때 3개모두 ssh를 작동중입니다.(3개 모두 ssh는 기본값인 22포트)

 

 

이때 공유기에 연결된 호스트들의 내부 IP들은 각각 위와 같습니다.

 

이중 C호스트에서 A라는 호스트의 ssh접속을 하고자 한다면 어떻게 해야 할까요? 

서비스 포트의 개념을 알면 192.168.1.100:22라고 입력을 한다면 A라는 호스트에 22포트로 접속을 한다는것을 알 수 있겠죠.

 

하지만 외부에서 접속을 할때에는 달라집니다.

서비스 포트를 이용하여 외부에서도 접속을 가능하도록 해야하는데 여기서 문제가 생깁니다.

 

위에서 말했듯이 외부에서 A호스트를 ssh로 접속하고자 할 때 내부IP인 192.168.1.100를 볼 수 없습니다.

내 공유기의 공인(외부)IP가 211.123.123.123이라고 할때 211.123.123.123:22를 입력해도 A호스트의 ssh로 접속할 수없습니다.

저 IP주소가 공유기를 지칭하는지 A호스트를 말하는지 B인지 그마저도 아니면 C호스트를 말하는건지 알 수 없거든요.

 

이를 해결하기 위해 나온게 포트 포워딩이라는 것입니다.

 

왜 포트 포워딩을 사용하나요?

포트 포워딩은 보안 향상, 원치 않는 액세스 차단, 비디오 게임, 홈 카메라 액세스 관리 등의 다양한 기능을 제공합니다. 또한, 원격 컴퓨터 액세스와 개인 네트워크를 스파이로부터 숨깁니다.

 

게임

  • 온라인 게임 콘솔에 포트 전송
  • 친구가 게임 서버에 액세스하도록 허용
  • 개인 서버 설정

보안 용도

  • 포트 테스트
  • 라우터 비밀번호 복구
  • DDoS 공격 방지

일반 용도

  • 가정 보안 카메라에 액세스
  • 언제 어디서나 컴퓨터에 액세스
  • 방화벽 우회
  • 토렌트 파일 다운로드 속도 향상
  • 라우터 성능 향상
  • 사용자의 위치나 IP 주소를 공개하지 않고 서버간에 요청 전송

 

포트포워딩의 기능

외부에서 A호스트의 ssh로 접속하고 싶다.

 

이럴땐 공유기에서 구분하면 됩니다.

"외부에서 특정 포트번호로 들어오게 된다면 A호스트의 22번 포트를 지칭하는것이다" 라는 규칙을 설정하면 됩니다.

 

공유기의 공인IP 뒤에 서비스포트번호처럼 특정 포트번호를 입력하면 지정한 내부 호스트의 특정포트로 보내버리는거죠

포트포워딩 설정 시 1000-1010포트로 들어오는 것들을 A호스트의 22포트로 보내라 라는 규칙을 설정하면 아래와 같이 생각하시면됩니다.

 

공유기의 공인IP가 211.123.123.123이므로 211.123.123.123:1000 또는 1000~1010까지의 숫자를 입력하면 C호스트가 192.168.1.100:22라는 주소를 입력한 것과 동일하게 접속이 가능하게 됩니다.

 

이처럼 외부에서 접속 시 어떤 호스트의 어떤 서비스 포트에 연결을 해주는지 설정해주는 것을 포트포워딩이라 합니다.

 

아래는 제가 설정해놓은 포트포워딩인데요. 이런식으로 규칙을 설정할 수 있습니다.(아래 화면은 ASUS공유기의 포트포워딩 시 나오는 UI며 제품마다 다를 수 있습니다.)

 

공인IP : 특정포트(포트범위)를 입력하면 내부IP(로컬IP)의 서비스포트(로컬포트)로 보낸다는 규칙들입니다.

 

결론

포트포워딩의 필요성 때에 왜 포트포워딩이 필요한가에 대해서도 작성 했지만 또다른 생각을 할 수가 있습니다.

 

"그럼 그냥 A호스트, B호스트, C호스트의 SSH포트를 다르게 주면안돼?"

 

답이 될 수 있습니다. 하지만 이것은 내부에서 사용할때 포트번호를 바꿔 주는 것이지 외부에서는 알 수가 없죠

결국에는 들어오는 경로가 있으면 목적지 경로도 설정을 해줘야하니 포트번호가 바뀌면 포트포워딩 설정을 다시 해야됩니다.

 

그리고 된다고 하더라도 각각의 호스트마다 접속을 해서 포트번호를 바꾸기에는 여간 귀찮은 일이 아닙니다.

 

그럴바엔 관리가 가능한 공유기에서 특정호스트들의 외부포트번호를 설정해주기만 하면 되거든요

 

위처럼 특정 호스트의 IP와 서비스포트로 전달해 주기위해 필요한 기능 포트 포워딩이라는 기능입니다.

 

 

 

'IT 지식' 카테고리의 다른 글

데이터베이스(DB)  (0) 2020.09.17
윈도우 레지스트리  (0) 2020.09.17
IP 종류 및 차이점(DHCP, Static)  (0) 2020.09.16
NAT(Network Address Translation)  (0) 2020.09.16
Hyper-V 가상 컴퓨터 생성 매뉴얼  (0) 2020.09.14