Intro

지난 포스트에서는 웹서버를 직접 구축해봤습니다. 웹서버란, 간단히 말해 사용자들이 인터넷을 통해 접근하고 다양한 콘텐츠나 서비스를 이용할 수 있는 서버를 의미하죠. 그렇다면 사람들이 쉽게 접근할 수 있어야 합니다.

이번 포스팅에서는 웹서버에, 그리고 웹서버를 포함해 홈서버에 쉽게 접근할 수 있도록 도메인 네임을 부여하고, IP 주소가 동적으로 변할 때도 안정적인 접속을 유지할 수 있는 DDNS(Dynamic Domain Name System)를 설정하는 방법에 대해 알아보겠습니다. 이를 통해 언제 어디서나 쉽게 홈서버에 접근 가능한 안정적인 환경을 갖추게 되는 게 이번 포스팅의 목표입니다.

용어

이번 포스팅에서 중요한 용어는 도메인, DNS, DDNS, DHCP 등이 있는데요, 이들의 개념부터 살펴보겠습니다.

IP 주소

웹서버가 다수의 사람들에게 정보를 제공하거나 상호작용을 하기 위해서는, 사람들이 해당 웹서버에 접근할 수 있어야 합니다. 이를 위해서는 웹서버의 주소를 알고 있어야 하죠.

서버의 주소, 즉 네트워크 상의 위치는 IP 주소로 표현되며, 이는 숫자로 이루어진 조합입니다. 예를 들어, 125.209.222.141 같은 형식이 이에 해당합니다. 그러나 이러한 숫자 조합을 일일이 기억하는 것은 쉽지 않으며, 서버의 개수가 많아질수록 더 복잡해집니다. 이러한 불편함을 해결하기 위해 도메인이라는 개념이 도입되었습니다.

도메인과 DNS

도메인, 정확히는 도메인 이름 (Domain Name) 이라는 것은 원하는 서버 혹은 애플리케이션에 접근하기 위해 브라우저 등에 입력하는 영문 혹은 한글과 같은 문자들의 조합으로 이루어진 주소를 뜻합니다.

이러한 도메인 이름은 숫자의 조합으로 이루어져 기억하기 힘든 IP 주소 대신, 기억하기 쉬운 영문 혹은 한글로 된 글자들의 조합으로 서버의 주소를 대체한다는 점에서 그 의미가 있습니다. 즉, 도메인 이름은 IP 주소를 대신하는 별칭과 같은 것이죠.

IP 도메인 이름 비고
142.250.72.14 google.com 구글
125.209.222.141 naver.com 네이버

도메인 이름과 IP 주소 간의 매핑 정보는 DNS (Domain Name System) 에 저장됩니다. 사용자가 웹사이트를 방문할 때, 도메인 이름을 통해 DNS 서버에 해당 도메인 네임을 요청으로 보내고, DNS 서버는 IP 주소를 응답으로 반환합니다. 사용자는 반환된 IP 주소를 통해 원하는 서버에 접속하게 됩니다. 이를 홈 서버에 적용하면 외부에서도 도메인 이름을 통해 홈 서버에 쉽게 접근할 수 있습니다.

DHCP

하지만 문제가 하나 있습니다. 일반적으로 가정집에서 사용하는 공유기의 공인 IP가 주기적으로 바뀐다는 것입니다. 도메인 이름과 IP 주소를 매핑하기 위해서는 반드시 IP주소가 고정되어야 합니다. 만약 IP가 고정되지 않고 유동적이라면, IP 주소가 바뀔 때마다 도메인 이름과 새로운 IP를 매핑해줘야하는 불상사가 발생합니다.

이렇게 IP가 유동적으로 바뀌는 것이 바로 동적 호스트 구성 프로토콜 DHCP (Dynamic Host Configuration Protocol) 라고 하는 것입니다. 이는 네트워크에서 IP 주소를 효율적으로 관리하고 자동으로 할당하기 위해 도입 되었습니다. 과거엔 모든 컴퓨터나 장치에 IP 주소를 수동으로 설정해야 하는 불편함이 있었는데요, 이러한 불편을 해결하기 위해 만들어진 기술(프로토콜)입니다. 네트워크 상의 장치가 네트워크에 연결될 때 자동으로 IP 주소와 기타 네트워크 설정(서브넷 마스크, 게이트웨이, DNS 서버 등)을 할당해주게 되죠.

DHCP는 장비의 IP주소 할당 자동화와 더불어, 이로 인해 보안성의 강화 그리고 네트워크 자원의 효율적 관리가 가능하다는 장점이 있습니다. 하지만 이렇게 좋은 DHCP라도, 도메인 네임 서버와는 궁합이 좋지가 않습니다. 도메인 네임을 이용하려면 IP가 고정되어야 하기 때문이죠.

IP 주소가 바뀜으로 인해 목적한 공유기에 도달하지 못한다.

DDNS

DHCP 로 IP를 할당받는 환경에서는 도메인 네임을 사용하기 힘들다는 문제를 해결하기 위해 등장한 것이 바로 DDNS (Dynamic Domian Name System) 입니다. DDNS는 IP 주소가 동적으로 변하더라도, 사용자가 설정한 도메인 이름을 통해 항상 서버에 접근할 수 있도록 도와주는 서비스입니다.

DDNS를 통해 서버에 접속하는 순서는 다음과 같습니다.

(1) 사용자가 도메인 네임을 가지고 DNS 서버에 IP 주소를 물어본다.
(2) DNS 서버는 DDNS 서버에게 IP를 물어본다.
(3) DDNS 서버는 알고 있는 도메인 네임에 매핑된 IP 주소를 응답한다.
(4) DNS 서버는 DDNS 서버로부터 받은 IP 주소를 사용자에게 반환한다.
(5) 사용자는 IP 주소를 통해 서버/공유기에 접근한다.

그렇다면 DDNS 서버는 어떻게 공유기의 유동적인 IP를 알고있고, 최신성을 유지할 수 있을까요? 바로, 공유기에서 IP 주소가 변경될 때 DDNS 서버에 변경된 IP 에 대한 정보를 보내 업데이트 하기 때문입니다.

홈 네트워크에 DDNS 설정하기

설계

KT 공유기에서 DDNS 설정하기

저는 통신사로 KT를 이용하고 있는데요, KT 공유기는 다행히도 DDNS를 지원합니다.

(1) DDNS 사용
DDNS 기능을 사용할지 여부를 결정하는 항목입니다. 활성을 선택해줍니다.

(2) DDNS 서버
DDNS 서비스를 제공하는 서버를 입력합니다. KT는 dyndns 와 no-ip DDNS 서버를 이용할 수 있습니다.

(3) 사용자 ID
DDNS 서비스에 로그인할 때 사용하는 계정을 입력합니다. no-ip에서는 보통 이메일 주소를 사용자 이름으로 사용하므로, no-ip 회원가입 시 사용한 이메일을 입력합니다.

(4) 비밀번호
DDNS 서비스에 로그인할 때 사용하는 비밀번호를 입력합니다.

(5) URL
DDNS 서비스에서 생성한 도메인 이름을 입력합니다.

no ip 에서 도메인 네임 생성하기

DDNS를 이용하려면 홈서버와 연결할 도메인 이름도 있어야겠죠. 저는 no-ip에서 도메인 네임을 생성했습니다. no-ip 에 회원가입하는 방법과 도메인 네임을 생성하는 방법은 검색을 통해 쉽게 알 수 있으므로, 이 포스트에서 다루지는 않겠습니다.

(1) Hostname 은 도메인 네임입니다. 만약 호스트네임을 “ABCD” 라고 지정했다면, 위 예시로는 ABCD.myvnc.com 이 도메인 주소가 됩니다.

(2) IPv4 Address는 공유기의 공인 IP를 넣어주면 됩니다. 공인 IP를 확인하는 방법은 네이버에서 “내 IP” 라는 키워드로 검색하면 됩니다.

결과

준비는 모두 끝났습니다. 웹서버에 접근해보겠습니다.

성공!

Reference

WIX 블로그 - 도메인이란?
Wikipedia - 동적 호스트 구성 프로토콜 DHCP
Wikipedia - DDNS
DDNS를 이용하여 컴퓨터 켜기