티스토리 뷰

반응형

워드프레스(WordPress)을 이용해 웹사이트를 구축해보려고 합니다. 그래서 그 기록을 남깁니다.

이전 글을 읽지 않으셨다면 이전 글을 먼저 읽고 와주시면 이해에 도움이 될 수 있습니다.

특히, 이 글은 번외편에 대한 내용이므로 스킵해도 무방합니다.

 

공인 IP 와 사설 IP, 그리고 고정 IP 와 유동 IP

우리가 쓰는 인터넷의 세상에선 접속하는 기기들은 모두 고유한 주소 정보를 가지고 있습니다. 모든 장비들은 이 주소를 통해 상대방과 연결이 되므로 어떠한 이유에서든 전세계의 모든 장비는 인터넷에 노출된 상태에서는 고유한 주소로 접속이 되어야 하고, 이러한 주소가 두 개 이상의 장비에서 사용된다면 크나큰 문제가 발생하게 됩니다. 이러한 주소를 인터넷 주소(Internet Protocol Address, 줄여서 IP Address)라고 합니다.

 

공인 IP

문제는 우리가 흔히 사용하는 인터넷 주소 체계는 0.0.0.0 ~ 255.255.255.255 사이의 숫자로 이루어진 IPv4(Internet Protocol version 4)이며, 각각의 주소는 인터넷 기구에 의해 전세계 ISP(Internet Service Provider, 흔히 말하는 KT, SKB, LG U+ 같은)에게 일부분씩 할당해주고 있습니다. 그러므로 우리가 가정에서 인터넷을 사용할 때에는 KT 와 같은 ISP 에게 IP 주소를 부여받고 이용할 수 있습니다. 이렇게 부여받은 IP 주소는 공식적으로 받은 것이며 외부에서도 인식하는 유일한 주소이기 때문에 공인 IP(Public IP, Real IP 라고도 함)라고 부릅니다. 그런데, 위에서 언급한 IP 주소의 범위는 처음 설계할 대와 달리 빠르게 고갈되어서 PC 뿐만 아니라 스마트폰과 같은 모바일기기와 함께 인터넷에 직접 연결되는 가정용 기기(인터넷TV, IP CAM 등)까지 인터넷 주소를 이용해야 하기 때문에 공인 IP 만으로는 감당할 수 없게 되었습니다.

 

사설 IP

그래서 나온 개념이 사설 IP(Private IP)입니다. 사설 IP 는 공인 IP 를 여러 장비가 나눠서 사용하기 위해 나온 개념입니다. 사실 공인 IP 로 발급할 수 있는 0.0.0.0 ~ 255.255.255.255 사이의 주소값 중에서도 일부는 사설 IP 등을 위해 특수하게 정의된 구역이 있으며(대표적으로 127.0.0.1 이나 192.168.0.1 와 같은) ISP 에서는 저러한 IP Address 을 공인 IP 로 사용자에게 제공하지 않습니다. 반대로, 우리가 가정에서 당연시하게 사용하는 공유기(Router)에서 192.168.0.1 와 같은 주소값을 사용한다는 것을 쉽게 확인할 수 있습니다.

공유기의 원리는, 먼저 연결된 외부회선(WAN)에서 공인 IP(반드시는 아니지만, 편의상)을 받은 뒤 내부의 장비들에게는 사설 IP 을 하나씩 발급해주는 것입니다. 예를 들면, 외부에서 공인 IP 로 51.34.1.52 와 같은 형태로 발급받았다면 내부의 PC 와 스마트폰에는 192.168.0.5, 192.168.0.132 와 같이 내부용 사설 IP 를 발급한다는 것입니다. 내부의 스마트폰이 네이버에 특정 페이지를 조회한다면 스마트폰은 공유기를 거치게 되는데, 이 때 공유기는 접속할 네이버의 서버 정보와 스마트폰의 정보를 저장해두고 네이버 서버에는 자신이 가지고 있는 공인 IP 정보를 포함시켜서 데이터를 전송합니다. 그러면 네이버 서버는 공유기 내부에 있는 192.168.0.132 를 알게 되는게 아니라 공유기가 가지고 있는 51.34.1.52 라는 인터넷 주소에서 요청한 것이라고 알게 된다는 것입니다. 네이버 서버가 응답을 하게 되면 공유기가 해당 내용을 수신하고, 라우터는 미리 저장해둔 요청 정보를 이용해 해당 정보를 받을 장비가 192.168.0.132 임을 미리 저장해 둔 정보를 통해 알게되어 최종적으로 스마트폰에 전달하게 됩니다.

반대로, 일반적인 상황에서는 외부에서 공유기 내에 있는 스마트폰이나 PC 에 직접 접속할 수 있는 방법은 없습니다. 공유기 내에서 요청을 보내는 경우에는 미리 정보를 저장해 둘 수 있지만, 외부 장비는 내부 장비 중 어떠한 장비가 어떻게 구성되었는지 공유기가 알려주지 않는 이상 알 수 없기 때문입니다.

 

포트 포워딩(Port Forwarding)

외부에서 내부에 있는 장비를 능동적으로 접근할 수 있는 방법이 없기 때문에 나온 개념이 포트 포워딩(Port Forwarding)입니다. 제가 인터넷 회선을 차선에 비유하고 포트(Port)를 차선에 비유하는데, 포트 포워딩은 말 그대로 특정 차선을 무조건 특정 장비에 전달해서 전용 차선으로 만드는 기능입니다. 그러므로 공유기 내의 장비를 이용해서도 서버를 이용할 수 있습니다. 우리가 자주 이용하는 http 나 https 는 각각 80, 443 포트 정보가 생략되어 있는데, 공유기에서 포트 포워딩을 하면 공유기 내에 있는 서버를 웹서버로 이용할 수 있습니다. 다만, 대부분의 ISP 들은 80 이나 443 을 통해 서버가 이용하기 위한 특정 명령들을 필터링(Filter 로 제거)하기 때문에 자신이 사용하는 회선이 80, 443 과 같은 것을 사용하도록 허용하고 있는지 확인해야 합니다(KT 라고 반드시 허용하는 것도 아니며, LGU 나 SKB 라고 무조건 막혀있는건 아닙니다).

이렇듯 공유기 내부의 장비를 이용해서 서버를 운영하려면 공유기의 설정을 거쳐야하고, 서버가 늘어날 때마다 공유기 역시 관리해줘야 하기 때문에 불편한 점이 있을 수 있습니다. 그러므로 본격적으로 서버를 공부하려면 ISP 와 직접 연결되도록 회선을 구성하는 것을 추천드립니다(https://zepinos.tistory.com/92 참고).

 

고정 IP 와 유동 IP

문제는 ISP 에서 인터넷 IP 를 발급할 때 항상 같은 주소를 부여하면 좋은데, 사실 그렇지 않다는 점입니다. 쉽게 비유하면 우리집의 주소가 항상 고정되어 있으면 몇 년이 지나도 편지를 보낼 때 같은 주소로 보내면 나에게 편지가 잘 전달이 될텐데, 실제로는 ISP 에서 주소를 항상 동일하게 부여하지 않습니다. 한정되어 있는 IP 를 효율적으로 관리하기 위해 DHCP(Dynamic Host Configuration Protocol)이라는 기술을 이용해 발급받은 뒤 미사용중이라고 판단되는 시점부터 정해진 시간만큼만 해당 인터넷 주소에 대한 우선권을 보장하고, 이후는 다른 사용자에게 그 주소를 발급할 수 있다는 의미입니다. 다른 사람에게 주소가 발급되었다면 DHCP 서버는 자신이 보유한 또다른 IP 주소를 나에게 발급해줍니다. 그래서 내 IP 는 고정이지 않을 수 있습니다. 물론 서버 사용을 허가받은 서비스를 신청하면 특별한 이유가 없는한 계속 변경되지 않는 IP 를 발급하는 고정 IP(Static IP)를 이용할 수도 있습니다. 하지만, 가정에서 그런 서비스를 신청해서 사용하는 경우도 드물고, 가정에서는 신청이 안되는 경우가 대부분입니다. 즉, 일반적인 가정용 인터넷은 공인 IP 이면서 유동 IP 입니다. 회사에서 전용선 등을 이용한다면 최상단에서는 공인 IP 이면서 고정 IP 를 부여받아 사용중인 경우가 많습니다.

그리고, 공유기 역시 DHCP 서버가 내장되어서 공유기에 연결된 장비들은 모두 유동 IP(Dynamic IP)를 발급받게 됩니다(사설 IP 이면서 유동 IP). 그리므로, 서버들을 운영할 생각이 있다면 서버들은 가급적 IP 가 바뀌지 않게 하기 위해 DHCP 설정을 조정하여 공유기에서 사용하는 내부 IP 중 일부는 고정 IP 들이 사용할 수 있게 설정하거나 DHCP 에서 항상 같은 IP 를 발급할 수 있도록 설정하는 것이 좋습니다. 물론 전자가 압도적으로 편합니다.

 

DDNS

유동 IP 가 변경되는 환경에서 서버를 구성하면 IP 가 바뀔 때마다 네임서버에 가서 도메인에 연결된 IP 주소를 변경해줘야 합니다. 그래서 나온 개념이 ddns(Dynamic Domain Name System)입니다. 앞서 설명한 dns 에 유동(Dynamic)의 개념이 추가된 것입니다. Cloudflare 와 같은 네임서버에 가서 변경된 IP 를 그 때 그 때 마다 변경해주어야 하는 불편함을 해소하기 위해 특정한 프로그램이나 호출(웹브라우저로 네임서버 주소에 접속하는 것과 같은)을 통해 IP 주소를 갱신해주는 것입니다.

대한민국 가정에서 가장 많이 사용하는 아이피타임 공유기에서도 ddns 를 제공중인데, (아이디).iptime.org 라는 형태로 제공하고 있습니다. 자신이 원하는 아이디를 입력하고(타인이 사용중이지 않아야 함) 이메일주소와 비밀번호로 인증정보를 만들어 등록하면 외부에서 (아이디).iptime.org 와 같이 연결하면 연결된 공유기의 IP 주소를 반환받게 됩니다. iptime.org 를 보유한 아이피타임에서 서브도메인에 해당하는 (아이디)를 포함한 호출을 공유기로부터 받아 공유기의 IP 주소를 항상 dns 에 갱신해주기 때문입니다. 그래서 공유기 내에 있는 서버를 운영할 경우 A 레코드로 IP 을 직접 등록하는 것보다 CNAME 레코드로 (아이디).iptime.org 를 등록해주면 아주 편리합니다.

공유기를 이용하면 CNAME 으로 편하게 IP 주소를 Cloudflare 와 같은 네임서버에 쉽게 등록할 수 있지만, ISP 에 연결된 회선에 바로 연결했다면 CNAME 으로 하기는 어렵습니다. 그래서 네임서버가 ddns 을 지원하는 서비스를 이용하는게 중요한데, 보통 도메인 구입처에서 제공하는 네임서버는 ddns 을 제공하지 않는 경우가 많습니다. dnszi 와 같은 곳에서는 무료이면서도 쉽게 ddns 을 사용할 수 있도록 기능을 제공중이지만, 다른 부가기능들을 더 다양하게 이용할 수 있는 Cloudflare 를 이용하는 것을 추천드립니다.

 

결론

IP 주소의 발급 체계로 인해 복잡함이 더해집니다. 명령 프롬프트나 쉘(Shell)에서 보여지는 IP 주소와 검색엔진에서 "내 아이피 검색" 이라고 검색한 사이트에서 보여지는 IP 주소가 다르면 유동 IP 이므로, 이에 대한 설정이 필요합니다. 해결이 잘 안된다면 댓글 등으로 연락주세요.

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함