'포트 포워딩' 왜 하는 걸까? 🌐

Donghun Ha·2022년 1월 18일
2
post-custom-banner

Born2beroot 과제를 하다보면, 원격 접속을 위해 SSH 설정을 하고 해당 포트로 접속하면 연결이 되지 않는다.
그래서 포트 포워딩 설정을 하게 되는데, 이건 왜 하는 걸까?
(포트에 대한 이해를 하고 있다는 가정 하에 작성한 글이니 참고하시기 바랍니다.)

📫 아이피

포트 포워딩을 이해하려면, 우선 필요한 개념이 여러가지가 있는데,
그 중 중요한 것이 공인, 사설, 외부, 내부 아이피다.

  • 아이피란?

    IP 주소는 Internet Protocol Address 의 약자로 컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신하기 위해 사용하는 특수한 번호이다.

    IP 주소를 줄여 IP라고 부르기도 하나, 이는 인터넷 규약을 가르키는 말이기 때문에 구분해야 한다.
    하지만, 쉬운 이해를 위해 이 글에서는 ‘아이피’로 줄여서 부르겠다.

  • 공인 아이피란?

    인터넷 상에서 다른 PC와 통신하기 위해 필요한 아이피로 서버를 구축하거나, 각자의 PC에 인터넷을 연결하는 경우, 인터넷을 통한 통신을 하기 위한 아이피다.

    각 공인 아이피는 세상에서 유일한 주소를 가진다.

    공인 아이피는 유일한 값이기 때문에 중복되지 않는다.
    0~225까지의 숫자 4개로 구성되는 IPv4는 약 42억개의 주소만 할당할 수 있고,
    이를 전세계 모든 장비에 할당하기에는 현재 아이피 체계가 많이 부족하다.
    그래서 외부 네트워크가 필요하지 않은 장비에 대해서는 별도의 사설 네트워크를 구축하게 된다.

  • 사설 아이피란?

    내부 네트워크 상에서 각 컴퓨터 간 통신하기 위해 필요한 아이피로 내부망을 구축할 때 활용하는 아이피다.

    주변에서 흔하게 볼 수 있는 예로 공유기를 활용한 구성으로, 공유기를 활용해 망을 구성하면 보통 192.168.x.x 형태로 구성되는데, 이를 사설 아이피라고 한다.

    사설 아이피는 내부망에서만 사용되기 때문에, 서로 다른 내부망에서는 동일한 사설 아이피를 가져도 상관없다.

  • 외부 아이피란?

    기기가 현재 포함된 네트워크를 외부의 네트워크를 외부 네트워크라 부르고,
    이 외부 네트워크와 통신할 때 사용하는 아이피다.

    공인 아이피와 외부 아이피가 동일 시 되는 경우가 많은 것 같은데, 알아본 바에 따르면 엄연히 다른 개념인 것을 알 수 있다.
    대체로, 현재 포함된 네트워크가 인터넷 망과 공유기를 통해 연결된 경우가 대부분이지만,
    별도의 네트워크를 설정하지 않은 가상머신을 사용하는 경우, 가상머신의 외부 아이피는 가상 머신을 구동하는 PC의 내부 아이피를 가진다.
    (가상 머신의 외부 네트워크는 가상 머신을 구동하는 PC기 때문이다.)

  • 내부 아이피란?

    기기가 현재 포함된 네트워크 내부에서 사용하는 아이피다.

❓ 포트 포워딩이 필요한 이유

  • 포트 포워딩이란?

    포트 포워딩은 외부 아이피 : 포트번호와 내부 아이피 : 포트번호를 연결해주는 기능이다.

    별도의 설정 없이 외부 아이피가 접속을 시도할 때, 내부에 어떤 프로세스(서비스) 또는 기기와 연결할 지 알 수 없기 때문에 접근이 불가능하다.

    그래서 특정 프로세스(서비스) 또는 기기에 접근하기 위해 포트 포워딩을 통해 외부 아이피 : 특정 포트로 접속하면 내부 아이피 : 특정 포트로 맵핑해준다.

  • Virtualbox에서 포트 포워딩 해보기

    대부분 포트 포워딩에 대한 예시로 공유기를 사용한다.
    하지만 진행하고 있는 과제에서 요구하는 사항은 가상 환경의 포트 포워딩이라 가상 환경을 구현한 프로그램인 Virtualbox에서 포트 포워딩 방식을 살펴보자.
    공유기를 통한 포트 포워딩은 대체로 공인(외부) 아이피를 사설(내부) 아이피로 맵핑하지만, 아래 예시에서는 사설 아이피(외부)를 사설 아이피(내부)로 맵핑한다.

    포트 포워딩 설정 전, 연결 시도를 하면 connection refused(연결이 거부되었다.)라는 알림이 나온다.

    아래에서 연결을 허가하도록 포트 포워딩을 설정해보자!

    • 외부 아이피 확인

    • 가상 머신 내부 아이피 확인

    • 포트 포워딩 설정

      위와 같이 모두 설정을 하고 난 후, 연결 시도를 하면 문제 없이 유저의 비밀번호를 입력하는 줄이 나온다.
      (본 게시글은 포트 포워딩 외 설정은 된 것으로 간주합니다.)

      이렇게 직접 포트 포워딩 설정까지 한 후, 연결이 문제없이 연결이 되는 것을 확인할 수 있다!

  • 참고사항

    왜 필요한 지, 어떻게 하는 지 알았으니 마지막으로 참고사항들을 알아보자!

    • 외부 포트와 내부 포트는 서로 다를 수 있다.
      (2424 포트를 4242 포트로 포워딩 가능)
    • 내부에서 연결하려는 포트는 아이피를 지정해야 한다.
    • 하나의 포트로 들어오는 연결을 두 아이피로 포워딩 할 수 없다.
      (하나의 포트에 하나의 포워딩만 가능)
    • 내부 네트워크에 할당된 아이피에만 포워딩이 가능하다.
profile
Corca Backend Engineer, dha
post-custom-banner

0개의 댓글