[홈서버 구축기] DDNS 설정하기
이제 네트웍 설정의 마지막이다.
이 작업을 하면 외부에서 도메인 이름으로 내 홈서버로 접속할 수 있게 된다.
전에 돈을 들여 구입한 도메인은 아직까지는 무용지물이었으나 이제 이를 활용할 수 있게 되는 것이다.
내 도메인(hangadac.com)을 예로 들면
hangadac.com 은 호스팅 케이알 (http://hosting.kr ) 을 통해 도메인을 구입했고, 그곳의 내 도메인 설정에서 hangadac.com 의 NS(네임서버)를 DNSever (http://dnsever.com)의 NS들로 설정했다.
DNSever에서 hangadac.com의 host (ex: blog)별로 A record를 생성하고 이 A record를 DDNS로 관리해야한다.
즉, 누군가 내 블로그(http://blog.hangadac.com)에 접속하기 위해서는 blog.hangadac.com의 IP주소를 알아야하고, 이를 위해선 DNSever의 NS(네임서버)에 문의하게되고, blog.hangadac.com 의 IP가 변경되면 DNSever의 NS(네임서버)에 갱신을 해야하는 것이다.
DNSever에서는 가입한 회원의 도메인별로 보안코드를 부여하고, 그 보안코드가 들어있는 http get 명령으로 해당 도메인의 IP가 변경되었을때 반영할 수 있도록 방법을 제공했는데 최근에 다시 들어가보니 기존 http get 방식외에도 보다 더 편리한 도구를 만들어서 제공하고 있다. (자세한 사용법 링크)
본래는 IP가 변경되었을때에만 변경 반영 요청을 하면 되지만, IP 변경 여부를 파악하기도 어려우니, 설사 IP가 변경되지 않았다하더라도 적절한 주기별(ex: 10분)로 IP 반영을 시도하면 된다. (최신의 도구를 사용하면 그 도구 내에서 IP가 변경되었는지 자동으로 확인해서 변경 필요시에만 요청하고 있다.)
이를 UNIX shell Script로 작성해서 cron을 통해 주기적으로 DNSever 에 반영 요청을 하고 있다.
대부분의 DDNS (Dynamic DNS) 서비스가 같은 방식으로 동작한다.
그럼 이때 의문이 생길 수 있는데 hangadac.com의 주소를 알기 위해서는 이 세상의 모든 컴퓨터나 스마트폰이 hangadac.com 의 네임서버(NS)인 dnsever.com에 문의를 해야하는가?
그렇지는 않다.
도메인별로 선정한 네임서버(NS)를 그 도메인의 권위있는(Authoritative) 네임서버라고 한다. 담당 네임서버라는 말이다.
하지만 모든 질의에 대해 이곳에서만 담당하기에는 성능과 고장 시 대책이 필요하므로 대부분의 NS에서는 cache 기능을 갖고 있어 특정 기간동안 해당 도메인의 IP주소를 갖고 있다가 문의(query)시 알려주도록 하고, 해당 기간이 지나면 Authoritative NS에 다시 문의해서 cache를 갱신한다.
인터넷 주소록에 해당하는 DNS (Doman Name System)은 보안상으로도 매우 중요하고, 인터넷 성능에도 큰 영향을 미친다.
누군가 악의적으로 잘못된 정보의 NS를 구성하고, 누군가의 컴퓨터에 해당 DNS를 그 NS로 지정하게 하면 누군가는 본인도 모르게 엉뚱한 곳으로 접속을 하게 된다.
즉, 예를 들어 daum.net의 경우 실제 IP가 123.123.123.123 이라고 할 때 DNS를 조작하면 daum.net으로 접속 시 해커의 컴퓨터인 223.223.223.223 으로 접속하게 할 수 있고 그곳에 그럴 듯하게 홈페이지를 구성하면 사용자를 속여서 정보를 빼낼 수도 있을 것이다.
혹은 DNS에 문제가 있으면 인터넷 접속 자체가 안될 수도 있고, 접속이 매우 느려져서 전체적인 인터넷 성능이 저하될 수도 있다.
현재 홈서버로 구동중인 FreeBSD도 DNS Cache로 동작하고 우리 집 네트웍의 NS로 설정해서 쓰고 있어 조금이나마 Name Lookup의 속도를 빠르게 하고자 활용하고 있다.
이렇게 해서 전에 구입한 도메인을 통해 외부망을 타고, 공유기를 통해 내부에 있는 서버(BSD)까지 접속이 가능하게 되었다. (DNS구입 + DDNS + Port Forwarding)
이제 하나씩 필요한 서비스를 구성해보자. (ex: WordPress, Emby 등)
P.S> DNSEver와 같은 NS의 도움을 받지 않고, 내 BSD가 내 도메인(hangadac.com)의 NS가 되도록 할 수 없는지 의문이 생겼다. (즉, BSD의 주소를 BSD에게 묻는 것이다.) 구성이 재귀적이어서 스스로는 할 수 없을 것 같고, 외부 도움이 필요하기는 한데 공유기에서 제공하는 DDNS의 도움을 받으면 BSD를 내 도메인의 NS로 할 수 있을 것 같다. 후에 시도해볼 예정이다.