ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 포트포워딩(PortFowarding)이란?
    Programming/BackEnd 2020. 4. 25. 18:47

    포트포워딩이란 공유기에 여러 대의 컴퓨터가 연결되어 있을 때 어떤 컴퓨터에 요청이 들어왔는지 내부IP주소를 지정해주어 알려주는 것이라고 이해했다.

     

    관련된 문서들을 참고하여 포트포워딩의 개념을 제대로 이해하고자 한다.

     

    포트 포워딩이란 쉽게 설명 하자면 "컴퓨터에게 이쪽으로 가세요 ~" 라고 알려 주는 방식 입니다.

    외부 즉 밖에서 집에 있는 컴퓨터에 접근을 하기 위해서는 아이피 주소라는것이 필요 합니다.

    그런데 집에 있는 모든 컴퓨터 , 휴대폰 마다 아이피가 존재 하질 않습니다. 모든 전자기기에 아이피를 부여 하게 되면 아이피 가 부족 합니다 (현재 쓰고 있는것이 ipv4 이고 이러한 문제 때문에 IPv6 라는것이 나오긴 했습니다.)

    가정에서 여러대의 노트북 , 컴퓨터와 휴대폰에서 인터넷을 하기 위해 사용 하는것이 공유기 입니다.

    공유기가 있다고 하더라도 밖에서 컴퓨터에 접근한다고 했을 경우 여러대의 컴퓨터를 사용 하는 집안에서는 어느 컴퓨터로 접근 해야 하는지를 모릅니다. 이때 사용 하는것이 포트 포워딩 입니다. 즉 포트 라는것이 존재 하게 되는데 3389포트로 들어왔으면 1번 컴퓨터로 접근 해~ 라고 알려 주는것이 포트 포워딩 입니다.

    https://steemit.com/kr/@d7795/5i6zc3

     

    포트포워딩 하는 방법 — Steemit

    안녕하세요 공맹이 입니다 . 오늘은 포트 포워딩 하는 방법에 대해서 알아 보려고 합니다. 포트 포워딩이란 쉽게 설명 하자면 "컴퓨터에게 이쪽으로 가세요 ~" 라고 알려 주는 방식 입니다. 외부 즉… by d7795

    steemit.com


    포트포워딩의 개념

    포트포워딩(Port forwarding)은 포트(Port)를 전달(Forwarding)해주는 작업입니다.

    영어로는 '용어 설명'이라기도 민망한 정말 직관적인 용어인데 마땅한 번역어가 없어 안타깝습니다.

    통신 기기들은 여러 개의 포트를 가지고 있습니다.

    포트는 비유하자면 '문'과 같은 것입니다.

    통신 기기들은 피자 배달 연락이 오면 문1을 열어주고, 택배 배송이 오면 문2를 열어주고, 친구가 오면 문3을 열어주는 식으로 데이터 송수신을 관리합니다.

    이렇게 함으로써 데이터의 출입을 혼동 없이 관리할 수 있다는 정도로 이해하시면 충분할 것 같습니다.

    OctoPrint 의 경우 디폴트로 80번 포트를 이용하도록 설정되어 있습니다.

    지난번에 192.168.xxx.xxx 형식의 주소로 OctoPrint 에 접속을 했지만, 이것은 웹 브라우저들이 똑똑해져서 80번 포트를 알아서 찾아간 것이고 사실은 192.168.xxx.xxx:80 이라고 입력을 해주는 것이 더 정확한 지시입니다.

    즉, OctoPrint 에 접속하기 위해서 우리는 라즈베리 파이의 수많은 포트 중 80번 포트에 접속을 하는 것이 필요합니다.

     

    포트포워딩이 설정되지 않았을 때 생길 수 있는 혼선

    쉽게 생각하면, 아래 그림처럼 공유기에 '80번 포트로 접근하게 해줘'라고 요청만 하면 될 것 같습니다.

    내 머릿속의 '80번 포트' 요청 흐름도. 하지만 이런 일은 일어날 수가 없다.

    하지만 이것은 너무 단순한 생각이며 브라우저는 오류를 뱉어낼 것입니다.

     

    'Port 80' 을 열어줄 수 있는 기기가 한두 대가 아닐 것이기 때문입니다.

    실제 '80번 포트' 요청 흐름도. 80번 포트라고만 하면 공유기 입장에서는 어떤 포트인지 특정을 하는 것이 불가능하다.

    내 의도는 '(OctoPrint 가 설치된 라즈베리 파이의) Port 80'으로 접근해달라는 것이었지만, 앞의 수식어를 다 생략하고 'Port 80'만 요청을 했기 때문에 공유기 입장에서는 특정을 할 수가 없는 요청이 됩니다.

    이런 모호함을 해결하기 위해 포트포워딩이 필요합니다.

    교통 정리를 해주는 포트포워딩

    포트포워딩은, 공유기의 포트를 이용해 공유기에 물린 기기들(라즈베리 파이, 컴퓨터, 핸드폰, ...)의 특정 포트에 진입할 수 있는 기능입니다.

    예를 들어 포트포워딩 설정에서 'Port 180으로 진입하면, 핸드폰의 Port 80 으로 요청을 보내줘'라고 지시를 해둠으로써, 핸드폰의 Port 80 에 접근할 수 있는 것입니다.

    여기서 180은 사용자가 지정할 수 있는 임의의 숫자이며, 이 숫자를 지정하는 것이 포트포워딩 설정입니다.

    Port 180 으로 진입 시 핸드폰의 Port 80 으로, Port 2580 으로 진입 시 라즈베리 파이의 Port 80 으로, Port 3830 으로 진입 시 태블릿의 Port 80 으로 요청을 전달하는 식으로 사용자의 편의 대로 전달(Forwarding)설정을 하는 것이 가능합니다.

     

     

    예를 들면 Port 1234 로 접속 시 라즈베리 파이의 80번 포트로 접속하라고 설정을 해놓고, 아까 네이버 혹은 구글에서 얻은 IP 주소에 1234 번 포트를 붙여서 접속하면 공유기 외부에서도 라즈베리 파이로 접속을 할 수가 있습니다.

    즉, 아래의 주소가 광역적으로 접근이 가능한 완전한 주소가 됩니다.

     


    과거에는 집에 보통 컴퓨터 한 대만 사용하고 스마트폰이 없었기 때문에 인터넷을 설치한다고 하더라도 모뎀만 있으면 컴퓨터에 인터넷을 연결할 수 있었습니다. 최근 들어서는 가족 구성원 한 명마다 컴퓨터를 사용하거나 스마트폰을 이용한 인터넷을 위해서 유무선 공유기가 하나씩은 다 있을 겁니다. 단순히 인터넷을 사용하기만 한다면 공유기는 아무런 문제를 일으키지 않습니다. 하지만, 내가 어떤 서비스나 서버를 구축하게 된다면 공유기가 큰 문제가 됩니다. 왜 이런 일이 생기는 것인지 알아보고 이를 해결하기 위해서 포트 포워딩을 어떻게 적용해야 하는지 살펴보겠습니다.

    공유기 – 사설 네트워크

    인터넷을 사용하기 위해서는 전세계적으로 사용되는 아이피(IP) 주소가 있어야만 합니다. 아이피는 고유한 값이기 때문에 중복되는 주소를 가지지 않습니다. 그렇지만 전세계의 모든 장비에 아이피를 할당하기에는 현재의 아이피 체계가 많이 부족합니다. 0~255까지의 숫자 4개로 구성되는 IPv4는 2의 32제곱, 즉 4,294,967,296 (약 42억)개의 주소만 할당할 수 있습니다. 그렇기 때문에 굳이 전세계적으로 네트워크가 필요하지 않은 장비들에 대해서는 별도의 사설 네트워크를 구축하게 됩니다.

    앞서 언급한 인터넷이 가능한 아이피를 공인(Public) 아이피라고 합니다. 이러한 공인 아이피는 고유한 값으로 인터넷을 사용하는 기기에 하나씩 할당됩니다. 그런데, 이런 공인 아이피에서 몇몇 아이피 대역은 사용되지 않습니다. 10.x.x.x 대역, 172.16~31.x.x대역, 그리고 192.168.x.x 대역이 모두 사용되지 않습니다. 이러한 아이피 대역은 회사나 개인 등이 별도로 구축하게 될 사설 네트워크에서만 이용됩니다. 사설 네트워크는 전세계적인 인터넷이 아닌 국지적인 네트워크로써 굳이 인터넷이 필요하지 않은 경우에 사용됩니다. 본래 이러한 사설 네트워크를 구축하기 위해서는 DHCP 서버와 라우터 등등이 필요하지만, 이러한 기능이 하나로 뭉쳐있는 개인용 장비가 바로 공유기인 것입니다.

    공유기의 역할은 간단합니다. 공유기에 연결되는 모든 기기들에 사설 네트워크를 구축해주는 것입니다. 사설 네트워크이기 때문에 위에서 언급했던 공인 아이피 대역을 사용하지 않고 사설 아이피 대역을 이용하게 됩니다. 주로 이용되는 아이피 대역이 바로 192.168.x.x 입니다. 이처럼 192.168로 시작되는 아이피 주소를 가진 장비는 인터넷에 접속하기 위해서 반드시 공인 아이피를 보유한 장비가 필요합니다. 공유기는 사설 네트워크를 만들면서 동시에 공인 아이피를 하나 할당 받습니다. 그래서 공유기에 연결된 모든 장비는 인터넷에 접근하기 위해서 반드시 공유기를 거쳐야만 합니다.

    컴퓨터 1에서 인터넷에 접근하기 위해서는 녹색 화살표처럼 공유기를 거쳐야만 합니다.

    포트 포워딩이 필요한 이유

    이제, 컴퓨터 1에 웹서버를 80번 포트로 열었다고 생각해봅시다. 인터넷을 통해서 다른 사람들이 컴퓨터 1의 웹서버에 접근하기 위해서는 컴퓨터 1의 아이피를 알려줄 수는 없습니다. 사설 아이피 대역은 여기 저기서 사용하기 때문에 공인 아이피처럼 특정한 기기를 가리키지 않습니다. 그래서 공유기가 보유한 공인 아이피를 알려줘야 합니다. 그러면 다른 사람들이 http://12.34.56.78:80 주소를 인터넷 브라우저에 입력하면 웹 서버에 연결이 될까요?

    이렇게, 공인 아이피의 80번 포트로 들어오는 연결은 공유기에 도달하면 끝나버립니다. 왜냐하면 공인 아이피로 들어온 80번 포트의 연결을 공유기에서 컴퓨터 1, 2, 3 중에 어떤 곳으로 보내줘야 할 것인지를 판단하지 못하기 때문입니다. 그렇기 때문에 공인 아이피로 들어오는 80번 포트의 연결을 컴퓨터 1의 80번 포트로 연결하라고 공유기에 설정을 해야 하는 것이며, 이것을 포트 포워딩(전달) 이라고 하는 것입니다.

    포트 포워딩 설정

    앞서 예제에서 80번 포트로 들어온 연결을 포워딩하게 되면 정상적으로 컴퓨터 1의 웹서버와 연결이 이루어집니다. 또한 FTP 서버를 다른 컴퓨터에서 열어놨을 경우에는 역시 별도의 포트 포워딩 설정을 추가할 수도 있습니다.

    포트 포워딩에서 참고할 사항들은 다음과 같습니다.

    • 외부에서 접속하는 포트와 내부에서 연결하는 포트는 서로 다를 수 있습니다. (80을 8080으로 포워딩 가능)
    • 내부에서 연결하려는 포트는, 연결하고자 하는 장비의 아이피를 반드시 지정해야 합니다.
    • 하나의 포트로 들어오는 연결을 두 아이피로 포워딩 할 수 없습니다. (하나의 포트는 하나의 포워딩만 가능)
    • 포워딩하고자 하는 아이피는 반드시 공유기가 할당한 사설 아이피여야만 합니다.

    포트 포워딩 대신에 DMZ라는 설정을 사용하는 경우가 많은데, DMZ를 사용하게 되면 하나의 컴퓨터로만 모든 포트를 포워딩하는 것과 같습니다. 그렇기 때문에 여러 컴퓨터에서 서비스나 서버를 운영하게 된다면 DMZ는 큰 문제가 될 수 있습니다. 또한 DMZ 설정은 결코 보안에도 좋지가 않기 때문에 반드시 필요한 포트만 찾아서 포워딩하는 것이 안전합니다.

    이처럼 공유기를 사용함에 있어서 포트 포워딩은 반드시 필요한 설정입니다. 웹 서버 뿐만 아니라 멀티 플레이 게임 서버나 NAS, 리눅스 ssh 등의 모든 연결이 공유기를 거치는 경우에는 반드시 포트 포워딩을 해줘야만 합니다. 이번 글을 통해서 포트 포워딩의 컨셉을 익혀두신다면 나중에 어떤 서비스 포트를 포워딩할 일이 생기더라도 어떻게 해야 서비스가 연결될 것인지를 쉽게 파악할 수 있을 것이라고 믿습니다.

     

    https://lamanus.kr/59

Designed by Tistory.