개발하는 프로 국밥러
article thumbnail
Published 2022. 4. 16. 13:33
포트 포워딩 CS/네트워크

오늘은 포트포워딩에 대한 이야기를 다뤄보고자 합니다. 


들어가며

과거에는 대부분 집에서 인터넷을 사용하는 기기가 컴퓨터 하나였기 때문에, 인터넷을 설치한다고 하면 모뎀 한개로 인터넷이 연결될 수 있었습니다. 하지만 최근에는 인터넷을 사용하는 기기가 컴퓨터 뿐 아니라, 스마트폰, 테블릿, 등등.. 다양해 졌기 때문에 다양한 기기들이 인터넷을 사용하기 위해서 유무선 공유기를 설치하는 것을 볼 수 있습니다. 하지만 어떤 서버를 구축하게 된다면 공유기는 큰 문제가 됩니다. 왜 이런일이 생기며, 포트포워딩을 통해서 어떻게 이 문제를 해결할 수 있는지 알아보겠습니다.

공유기

공유기 - 공인IP, 사설IP

전세계적으로 인터넷을 사용하기 위해서는 목적지에 해당하는 IP주소를 가지고 있어야 합니다. 우리가 흔히 알고있는 127.0.0.1과 같은 IP 주소는 IPv4라고 불리며, 0~255까지의 숫자 4개로 구성됩니다.(IPv6라고 불리는 IP정의 형식도 나왔지만 많이 사용되지는 않습니다) 때문에 약 42억개의 IP를 할당할 수 있습니다. IP주소는 고유한 값이라 중복되는 값을 가지고 있지 않은 것으로 알고 있지만, 폭발적으로 늘어나는 인터넷을 사용하는 기기들을 감당하기에는 무리가 있습니다. 때문에 전세계적으로 네트워크가 필요하지 않은 기기들에 대해서는 별도의 사설 네트워크를 구축하게 됩니다.

 

앞서 말씀드린 IP는 공인IP로 고유한 값을 가지고 있으며, 인터넷을 사용하는 기기 한개당 한개씩 할당됩니다. 그런데 공인IP는 몇몇 IP 대역에서는 사용되지 않습니다(10.x.x.x / 176.16~31.x.x / 192.168.x.x). 이러한 IP대역은 회사나 개인이 구축하게 될 사설 네트워크에서만 이용됩니다. 사설 네트워크를 구축하기 위한 기능이 하나로 뭉쳐진 기기가 우리가 알고있는 공유기 입니다. 

 

공유기는 사설 네트워크이기 때문에 공인IP 대역을 사용하지 않고, 사설IP 대역을 사용하게 됩니다. 주로 사용되는 아이피 대역이 192.168.x.x 입니다. 공유기는 사설 네트워크를 만들면서 동시에 공인IP 하나를 할당 받습니다. 그래서 공유기에 연결된 모든 장비는 인터넷에 접근하기 위해서 반드시 공유기를 거쳐야만 합니다. 

공유기 통신방식

포트포워딩?

이제 A 컴퓨터를 8080 포트번호로 열었다고 생각해봅시다. A의 IP번호는 사설IP로 특정한 기기를 가르키는 번호가 아닙니다. 때문에 공유기가 가지고 있는 공인IP 를 알려주어야 합니다. 그렇다면 공유기가 가지고 있는 공인IP에 8080 포트번호를(123.123.123.123:8080) 입력한다면 A 컴퓨터에 접근할 수 있을까요?

정답은 아닙니다! 위와같이 접근하게 된다면 공유기 까지만 접근하고 끝나버립니다. 이유는 공인IP로 들어온 8080 포트번호는 공유기와 연결된 컴퓨터 A,B,C,D 중 어디로 보내야 할지 모르기 때문입니다. 때문에 공인IP로 들어오는 8080포트번호는 A컴퓨터와 연결해달라는 설정을 공유기에 해야되는 것이며, 이를 포트포워딩이라 부릅니다. 

 

포트포워딩에서 주의해야 할 사항들은 다음과 같습니다.

1. 외부포트번호와 내부포트번호는 서로 다를 수 있습니다.
-> 빨대로 두개의 포트가 연결되어 있다고 생각하면 쉽게 이해할 수 있습니다. 
(ex. 외부포트(80, Host라고 부름), 내부포트(8080, Geust))

2. 내부에서 연결하려는 포트는 아이피를 반드시 지정해야 합니다.

3. 하나의 포트번호로 들어오는 연결을 두 아이피로 포워딩 할 수 없습니다!

4. 공유기가 할당한 아이피에만 포워딩이 가능합니다.

 

마치며

저는 vagrant를 통해 가상화 환경을 구성하며 2개의 서버를 간단히 운용하던 도중 포트 포워딩에 대한 개념이 부족해 애를 먹었는데요, 포트포워딩은 공유기를 사용하는 환경이라면 어떠한 경우에도 필수로 설정해야 합니다. 이번 기회를 통해 포트포워딩에 대한 개념을 확실히 익히시고 포트포워딩 서비스를 마주치실 때 도움이 되었으면 합니다.    

'CS > 네트워크' 카테고리의 다른 글

JWT(Json Web Token)  (0) 2022.06.27
세션과 토큰  (0) 2022.06.27
리다이렉션?  (0) 2022.06.01
컴퓨터는 인터넷에서 어떻게 통신할까?  (0) 2022.05.30
왜 서버 구축에는 리눅스를 사용할까?  (0) 2022.04.13
profile

개발하는 프로 국밥러

@gugbab2

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!