안녕하세요. IT 엘도라도 에 오신 것을 환영합니다.
글을 쓰는 것은 귀찮지만 다시 찾아보는 것은 더 귀찮습니다.
완전한 나만의 것으로 만들기 위해 지식을 차곡차곡 저장해 보아요.   포스팅 둘러보기 ▼

웹, 앱 (Web, Application)

[Web] 공유기 - IP 주소, NAT, 포트 포워딩, DHCP 등

피그브라더 2020. 1. 27. 21:32

인터넷에 연결되어 있는 모든 컴퓨터들은 통신을 위해 자신만의 IP 주소를 가지고 있어야 한다. 그러나 IPv4 체계에 따르면 IP 주소는 0.0.0.0 ~ 255.255.255.255의 범위로 표현되므로 대략 40억 개 정도의 주소만 표현할 수 있다. 현대와 같이 IT 기술의 진보가 급속도로 진행되는 상황에서 40억 개는 결코 많은 수가 아니며, 오히려 부족하다고 말할 수 있다. 그래서 훨씬 더 많은 주소를 표현할 수 있는 IPv6 체계를 새로 도입하는 중이지만, 체계를 완전히 바꾸는 건 전환 비용이 막대하기 때문에 우선은 IPv4 체계의 주소를 아껴 쓸 줄 아는 게 중요하다. 이러한 목적으로 등장한 것이 바로 많은 사람들에게 익숙한 공유기(라우터의 일종)라는 장치이다. 이번 포스팅에서는 공유기와 관련된 지식들을 한 번 정리해보도록 하겠다.

 

1. 공인/사설 IP 주소 (Public/Private IP Address)

공유기 관련 내용을 설명하기에 앞서, 먼저 공인/사설 IP 주소의 개념을 알고 넘어가자. 인터넷을 사용하기 위해 인터넷에 가입해서 부여받는 IP 주소가 바로 공인 IP 주소(Public IP Address)이다. 반면 사설 IP 주소(Private IP Address)는 공유기가 하나의 공인 IP 주소를 가지고 만들어 낸 사설 네트워크에서 각 장치에게 부여하는 IP 주소를 말한다. 이름이 의미하듯, 공인 IP 주소는 전 세계의 장치들이 서로 통신하기 위해 사용하는 주소이다. 반면 사설 IP 주소는 해당 사설 네트워크 내 존재하는 장치들끼리만 유효한 주소이다. 그래서 사설 IP 주소는 동일한 사설 네트워크 내에서는 중복되면 안 되지만, 서로 다른 사설 네트워크에 존재하는 장치들의 사설 IP 주소는 같아도 된다.

 

 

공유기를 살펴보면 WAN이라고 적힌 포트가 1개 있고, LAN이라고 적힌 포트가 몇 개 존재할 것이다. WAN(Wide Area Network)은 전 세계의 장치들이 서로 통신하기 위한 거대한 규모의 네트워크, 즉 인터넷을 의미한다. 반면 LAN(Local Area Network)은 특정 공간 내에 형성되는 비교적 작은 규모의 네트워크를 의미한다. 따라서 공유기를 이용하려면 집으로 들어오는 인터넷을 유선으로 WAN 포트에 연결해야 하며, 인터넷을 이용하려는 각 장치들은 공유기에 유선(공유기의 LAN 포트에 연결) 혹은 무선(공유기의 안테나와 연결)으로 연결해야 한다.

 

공유기는 자신을 포함하여 연결된 각 장치들에게 사설 IP 주소를 부여함으로써 사설 네트워크를 형성한다. 예를 들어 부여받은 공인 IP 주소가 59.6.66.238이라고 하면 다음과 같은 방식으로 각 장치들에게 사설 IP 주소가 부여된다. 이때 공유기 자체에 부여되는 사설 IP 주소를 특별히 게이트웨이 주소(Gateway Address) 또는 라우터 주소(Router Address)라고 부르며, 이 주소에 접속하면 해당 공유기의 설정을 확인하거나 바꾸는 것이 가능하다는 것을 기억하자.

 

① 공유기 : 192.168.0.1 → 게이트웨이 주소, 라우터 주소

② 데스크탑 (공유기에 유선으로 연결) : 192.168.0.2

③ 노트북 (공유기에 유선으로 연결) : 192.168.0.3

④ 스마트폰 (공유기에 무선으로 연결) : 192.168.0.4

 

참고로 다음과 같은 범위에 있는 IP 주소는 사설 IP 주소로만 사용한다고 전 세계적으로 약속이 되어 있다. 따라서 다음 범위에 속한 IP 주소는 반드시 사설 IP 주소이며, 그렇지 않은 IP 주소는 공인 IP 주소라고 판단할 수 있다.

 

주소 범위 주소 개수 특징
10.0.0.0 ~ 10.255.255.255 16,777,216개 큰 규모의 LAN에 사용
172.16.0.0 ~ 172.31.255.255 1,048,576개 중간 규모의 LAN에 사용
192.168.0.0 ~ 192.168.255.255 65,536개 작은 규모의 LAN에 사용

 

2. NAT (Netwrok Address Translastion)

그러면 공유기에 연결된 각 장치들이 외부 네트워크에 있는 다른 장치들과 어떻게 통신하는 것일까? 바로 공유기의 NAT(Network Address Translation)라는 기술 때문에 가능한 것이다. NAT가 어떤 기술인지 바로 알아보도록 하자. 사설 IP 주소가 192.168.0.2인 장치 A가 페이스북에 접속하려 하는 상황을 가정하자. 그러면 다음과 같은 과정이 진행된다.

 

장치 A ① 공유기에게 페이스북에 접속하고 싶음을 알린다.
공유기

② 192.168.0.2에 해당하는 장치가 페이스북에 접속하려 한다는 정보를 공유기 내부에 기록한다.
③ 송신자 IP 주소를 공인 IP 주소(가령 59.6.66.238)로 바꿔서 페이스북에 접속을 시도한다.
페이스북 서버 ④ 공유기에게 응답한다.
공유기
⑤ 내부에 기록한 정보로 그것이 192.168.0.2에 해당하는 장치로부터의 요청에 대한 응답임을 파악한다.
⑥ 장치 A에게 페이스북의 응답을 전달해준다.

 

②와 ③이 NAT 기술에 해당한다. 결국 사설 네트워크에 존재하는 특정 장치가 외부 네트워크의 장치와 통신하기 위해서는 공유기를 반드시 매개해야 하는데, 그때 공유기가 중간에서 수행하는 역할이 바로 NAT 기술인 것이다.

 

3. 포트 (Port), 포트 포워딩 (Port Forwarding)

3-1. 포트 (Port)

한 대의 컴퓨터는 여러 서버를 운영할 수 있다. 웹 서버를 운영할 수도 있고, 클라우드 서버를 운영할 수도 있고, 게임 서버를 운영할 수도 있다. 또한 웹 서버를 여러 개 운영할 수도 있다. 하지만 한 대의 컴퓨터에 부여된 공인 IP 주소는 한 개인데 이것이 어떻게 가능할까? 이를 위해 등장하는 개념이 바로 포트(Port)이다.

 

포트는 해당 컴퓨터의 어떤 서버에 접속할지를 명시해주는 기능을 수행한다. 포트는 총 65,536개까지 명시할 수 있다. 이 중 0부터 1023까지는 이미 상용화된 프로토콜을 위해 예약이 되어 있는 Well-known 포트로서, 우리가 함부로 사용할 수 없는 포트이다. 예를 들어 SSH 프로토콜의 경우에는 22번, HTTP 프로토콜의 경우에는 80번으로 약속이 되어 있다. 그래서 브라우저를 통해 웹 서버에 접속할 때는 기본적으로 80번 포트에 접속하는 것이 된다. 포트를 직접 지정해서 사용하고 싶은 경우에는 1024번 이상의 포트를 사용한다. 참고로 또 다른 웹 서버를 열고 싶은 경우에는 8000번이나 8080번을 사용하는 것이 관습이다(80이 포함되어 있으므로).

 

만약 XXX.com이라는 도메인을 가진 서버에 웹 서버가 두 개 열려있는데 하나는 80번 포트이고 하나는 8080번 포트라고 해보자. 그러면 첫 번째 웹 서버에 접속하기 위해서는 URL 창에 XXX.com이라고만 입력해도 문제없다(기본적으로 웹 서버 포트는 80번이므로 생략 가능). 그러나 두 번째 웹 서버에 접속하기 위해서는 URL 창에 XXX.com:8080이라고 포트를 꼭 명시해서 입력해야 할 것이다.

 

3-2. 포트 포워딩 (Port Forwarding)

그런데 만약 사설 네트워크 내에 장치가 A, B, C 세 개가 존재하고 C에서 80번 포트로 열려 있는 웹 서버에 외부 장치가 접속하고 싶다면 어떻게 해야 할까? 단순히 도메인 뒤에 포트 번호만 명시해서는 어떤 장치에 접근할지 알 수 없다. 이를 위해 필요한 기능이 바로 공유기의 포트 포워딩(Port Forwarding)이다.

 

앞서 말했듯 공유기 자체도 자신이 형성한 사설 네트워크 내에서 하나의 사설 IP 주소를 가지고 있다. 우리는 그 주소에 접속함으로써 해당 공유기의 설정을 확인하거나 바꿀 수 있다. 포트 포워딩 관련 설정도 그곳에서 가능하다. 포트 포워딩은 외부 포트, 내부 IP, 내부 포트를 지정해줌으로써 설정이 가능하다. 즉 외부에서 어떤 포트로 접속했을 때 사설 네트워크 내 어떤 장치의 어떤 포트로 접속을 연결해줄지 설정해주면 되는 것이다.

 

4. 유동/고정 IP 주소 (Dynamic/Static IP Address)

앞서 설명하기를 인터넷에 가입하면 공인 IP 주소를 부여받는다고 하였다. 그런데 사실 대부분 그 IP 주소가 고정적이지 않다. 즉 내 컴퓨터의 공인 IP 주소가 매일 같지는 않다는 것이다. 왜 그럴까? 인터넷에 가입하여 공인 IP 주소를 부여받은 한 컴퓨터가 오랜 시간 동안 꺼져 있었다면, 지금 새로 인터넷에 가입하는 사람에게 그 공인 IP 주소를 부여해줄 수도 있다. 그러다가 그 컴퓨터가 다시 켜지면 ISP(Internet Service Provider, IP 주소를 부여해주는 기관)는 새로운 공인 IP 주소를 부여해주면 되는 것이다. 이렇듯 고정적이지 않은 IP 주소를 유동 IP 주소(Dynamic IP Address)라고 부른다. 유동 IP 주소는 IPv4 체계 하에서 IP 주소가 부족하다는 문제를 어느 정도 해결해줄 수 있다. 반면 인터넷 가입 시 금액을 추가 납부하면 변하지 않는 공인 IP 주소를 부여받을 수 있는데, 이를 고정 IP 주소(Static IP Address)라고 한다.

 

5. DHCP (Dynamic Host Configuration Protocol)

공유기는 어떤 원리로 각 장치에게 사설 IP 주소를 부여하는 것일까? 사실 각 장치는 자신이 사용할 사설 IP 주소를 직접 설정하는 게 가능하다. 그러나 이를 위해서는 사설 IP 주소의 중복을 막기 위해 연결된 다른 장치의 사설 IP 주소도 알아야 하고 서브넷 마스크, DNS 등 네트워크와 관련한 어려운 지식들도 잘 알고 있어야 하므로, 직접 사설 IP 주소를 설정하는 건 쉽지 않다. 그래서 대부분의 경우 공유기가 DHCP(Dynamic Host Configuration Protocol)라는 원리를 통해 각 장치에게 자동으로 사설 IP 주소를 부여하게 된다. DHCP의 동작 원리를 한 번 알아보자.

 

장치 A가 공유기에 (유선이든 무선이든) 연결이 되는 순간, 다음과 같은 과정이 진행되어 공유기로부터 사설 IP 주소를 할당받는다. 참고로 MAC 주소란 각 장치의 고유한 제조 번호로, 전 세계의 모든 장치들은 각자 자신만의 고유한 MAC 주소를 가지고 있다. 또한 공유기와 장치 간 DHCP 통신을 위해서, 기본적으로 공유기에는 DHCP 서버가 깔려 있고 장치에는 DHCP 클라이언트가 깔려 있음을 기억하자.

 

장치 A ① 공유기의 DHCP 서버에 자신의 MAC 주소를 전달하며 사설 IP 할당을 요청한다.
공유기 ② 현재 연결된 다른 장치들의 사설 IP 주소와 겹치지 않게 사설 IP 주소를 장치 A에 일정 시간 부여한다.
③ 장치 A에 해당 사설 IP 주소를 일정 시간만큼 부여했다는 정보를 내부에 기록한다.

 

DHCP의 동작 방식과 관련한 내용도 공유기 사설 IP 주소로 접속해서 설정이 가능하다. 예를 들어 어떤 범위의 사설 IP 주소를 부여해줄지, 어떤 장치에게 어떤 사설 IP 주소를 얼마만큼의 시간 동안 부여해줄지를 지정해줄 수 있다.

 

마지막으로, 배운다는 마음가짐으로 이런 생각도 한 번 해보자. 공유기에 연결된 각 장치들이 부여받은 사설 IP 주소는 DHCP 서버에 의해 매번 자동 할당되어 고정적이지 않으므로 유동 IP 주소에 해당한다. 마찬가지로 공유기에 들어오는 공인 IP 주소도 대부분의 경우에는(특별히 고정 IP 주소를 신청하지 않았다면) 유동 IP 주소에 해당한다. 이로부터 유추할 수 있는 사실은, 공유기에 들어오는 공인 IP 주소도 외부에 존재하는 어떠한 라우터의 DHCP 서버로부터 부여받았을 것이라는 것이다. 공유기가 집 내의 작은 네트워크를 관리하는 라우터라면, 공인 IP 주소를 부여하는 외부의 라우터는 보다 큰 네트워크를 관리하는 라우터가 될 것임을 유추해볼 수 있다.

 

 

 

 

 

 

본 글은 아래 링크의 내용을 참고하여 학습한 내용을 나름대로 정리한 글임을 밝힙니다. (WEB2 - Home server)

https://opentutorials.org/course/3265