PC/MAC/강좌2013.02.20 16:48

지난 번 강좌에서는 rsync를 이용하여 자동 백업 방법을 정리해 보았습니다.



이번강좌에서는 Dynamic DNS 구성 이를 이용한 원격접속입니다. 

환경은 우분투 리눅스 환경입니다. (강좌1 참고)


이번글 순서는 크게  


 - www.dnsdynamic.org 에서 무료 도메인을 받고,  ddclient로 공인IP자동 반영하기

 - 공유기 포트포워딩 설정하기


요약 될 수 있습니다.





1. Dynamic DNS 개요


 가정집에서 사용하는 인터넷 회선의 경우 보통 아파트광랜이거나 단독주택의 경우 VDSL(ADSL) 같은 비교적 월요금이 저렴한 서비스를 사용하고 있습니다. 소규모 사무실인 경우에도 비슷할 것 이라고 봅니다.


  이러한 환경에서 구축한 서버를 외부에서 접속을 하고자 하는 경우에는 현재 부여된 공인IP를 알아내야 합니다. 그런데 이때  대부분의 경우  인터넷 서비스 공급자로부터 동적 공인IP를 받게 됩니다.  


   즉 내가 사용하고 있는 회선을 위해서 IP를 고정해주지 않습니다. (일부 업체에서 부가 이용료를 내면 고정IP서비스를하기도 합니다).  그래서 보통 접속 중인 공유기를 다시 시작하는 경우, 또는 여러가지 이유로 회선연결이 순간  단절되었다 다시 연결되는 경우에는 IP가 바뀌어 있게 됩니다.   따라서 외부에서 이렇게 수시로 변경되는 IP를 알아내서 접속하기에는 여러모로 불편합니다. 


그래서 이 경우 활용할 수 있는 것이 Dynamic DNS 입니다.


   본래 DNS(Domain Name System)은 IP를 대신해 도메인 네임을 이용하여 컴퓨터서비스(자원_에 접속할 수 있도록 하는 시스템입니다.  예를 들어 PC에서 http://funnylog.kr(도메인네임) 를  웹브라우져에 입력해서  접속을 시도하게 되면 접속과정에서 DNS 서버로 부터 도메인에 해당하는 IP를 넘겨받아 접속하게 됩니다. 그런데 이러한 질의 과정은 하나의 웹페이지를 접속한다고 했을때 최소 수차례에서 수십차례까지 요청(각 이미지, 스크립트 마다 매번)을 하게 됩니다.  따라서  DNS서버까지의 질의 과정을 최소화하기 캐쉬를 하게 되는데  각각의 도메인 네임은 저마다의 캐쉬시간을 지정하게 됩니다. 이를 TTL(Time To Live)라 하고 통상 24시간(86,400초) 정도를 지정하게 됩니다.  즉 한번 질의를 하고 나면  이시간 동안은 재질의가 필요없다는 뜻입니다. 


   따라서 이사이에  도메인네임과 IP매핑이 바뀌게 되면 변경이 반영되지 못할 수 있는데, Dynamic DNS는 이 시간을 최소로(3~5분정도) 줄인 것을 말합니다.  그렇게 해서  수시로 변경 될수있는 고정IP에 대해서   캐쉬시간을  최소로 줄여주거나  아예 매번 서버에 확인을 하도록 하여 IP가 바뀌더라도 금세 반영이 되도록 한것이죠. 이를 이용해서 가정용회선과 같은 고정IP가 아닌곳에도 사용하게 되는것입니다.  (다만 그만큼 서버에 대한 부담은 커지게 됩니다.)



2. Dynamic DNS적용하기 


그럼 Dynamic DNS (이하 DDNS)를 어떻게 적용할 수 있을까요?


 개인이 DDNS를 이용하려면 해당 서버를 제공하는  업체를 이용하면 됩니다. 유명한 업체로 www.dyndns.org가 있는데. 최근에는 유료로(.com) 전환되면서 더이상 무료로는 사용할 수 가 없게 되었습니다. (다만 기존에 등록된 도메인네임에 대해서는 계속 사용 가능합니다.)


지금 현재 시점에 dyndns.org 대신해서 사용할 만한  서비스로는 www.dnsdynamic.org 이 있습니다.


적용 순서

2.1 www.dnsdynamic.org 가입

- 가입은 이메일 주소와 사용할 비밀번호만 입력하면 됩니다.

- 그리고 입력한 이메일로 수신한 confirm메일을 확인하면 로그인이 가능합니다.





2.2 사용할 도메인 네임추가 

- 가입이 끝나고 나면 해당 이메일과 비밀번호로 로그인을 한뒤 [Add a new domain]으로 원하는 도메인을 추가합니다.



위 예에서는 fun2.dnsd.me  라는 도메인네임을 생성한 경우 입니다.


웹상에서 이후에도 현재 접속중인 회선의 공인IP 를 보여주고 설정하도록 해줍니다.  


하지만 이렇게 매번 공인IP 가 바뀔때마다 서버에 접속하여 변경을 하는 것은 번거럽습니다. 그래서 이를 대신해주는 프로그램  ddclient를 사용하면 편리합니다.


2.3 Dynamic DNS 자동갱신 스크립트 적용하기


ddclient를 이용하면 일정시간단위로 외부에서 바라보는 현재 공인 IP를 찾아서 업데이트를 할 수 있습니다.


그럼 우분투환경에서 적용해보겠습니다.


먼저 설치방법입니다.



$sudo apt-get  install ddclient


  

  이렇게 하면 ddclient를 자동으로 내려받아 설치하게 되고 설치과정에서 설정정보를 묻게 되는데

차례대로 입력을 해주거나,  빈칸으로 넘어간뒤(또는 ESC) 수동으로 설정파일을 만들어주거나 수정하면 됩니다.

설정 파일은  /etc/ddclient.conf 파일을 수정해서 다음과 같이 설정하면 됩니다.



# /etc/ddclient.conf

daemon=60           # 갱신 주기 60초

protocol=dyndns2    #  통신 방식 (고정)

use=web, web=myip.dnsdynamic.com     # 나의 공인 IP 알아내기  (고정)

server=www.dnsdynamic.org    #   서비스 업체 서버 (고정)

login=메일주소        #  로그인 ID

password='qlalfqjsgh'                # 비밀번호

fun2.dnsd.me                    #반영할 내 서버의 도메인네임


/etc/ddclient.conf 파일의 수정이 끝났으면  ddclient 를 다시 시작해주어야 합니다.



$sudo service restart ddclient



이렇게 한뒤   www.dnsdynamic.org  접속해서 임의이 다른 IP로 적용한뒤  ddclient.conf정한  갱신시간이 흐른뒤  실제 공인 IP로 맞게 바뀌는 지 확인을 합니다. 


 제대로 바뀐다면 정상설치된 것 입니다.


만일 동작이 안되는것 같으면 아래 명령순서대로 다시 시작해보고 


$sudo service ddclient stop

$pgrep -f ddclient   # 실행중인 pid 가 있으면

$sudo pkill ddclient     #종료

$sudo rm /var/cache/ddclient/ddclient.cache   #캐쉬제거

$sudo service ddclient start 


그래도 안되면  ddclient 종료 후  아래 명령으로 실행해서 



$sudo ddclient -daemon=0 -noquiet -debug -verbose



어떻게 동작하는지 세부적으로 확인 합니다.


여기까지 마쳤으면  나만의 도메인네임을 갖게 된것입니다. 



   이렇게 설정한  해당 도메인네임으로 특정 서비스를 사용하려면  실제 외부에 노출된 공유기에서 포트포워딩 설정을 해주어야 합니다.


   외부에서 공인IP로 접속을 시도하더라도 내부에 있는 서버는 이를 알 수 없기 때문입니다.  공유기(또는 라우터)에서 적절한 포워딩을 해주어야 합니다.


3. 공유기에서 포트포워딩 설정 하기


   여기에서는  현재 제가 사용중인 ipTime 공유기를 가지고 설명하겠습니다.  대부분의 다른 공유기들도 포트포워딩을 지원하고 있으며 설정방법역시 유사하기때문에 이글과 공유기 도움말을 참고하시면 충분히 설정이가능할것입니다.


3.1  서비스 포트 알기 

  서비스 포트라는 것은 외부에서 내부서버로 접속하는 프로그램이 사용하는 통신 포트를 말합니다.

  

 일반적으로 서비스 별로 사전에 약속된 포트 번호가 있고, 경우에 따라서는 이를 변경할 수 가 있습니다.


통상 다음과 같은 예를 볼 수 있습니다.


HTTP  80

SSH 22

TELNET  23


3.2 공유기에 포트포워딩 추가


그럼 공유기에 적용해보겠습니다.  아래 그림을 참고하세요


공유기설정하는 웹으로 접속합니다. (보통 192.168.1.1 일겁니다.)


접속을 하면 공유기 메뉴에서 고급설정에 포트포워딩이라고 있습니다.


클릭하면 아래 그림과 같은 화면에 나옵니다. 


여기에서는 SSH 22번포트를 적용하는 예 입니다.  


규칙이름 : 어떤 용도 명인지 넣습니다.

내부IP주소 : 해당 포트 연결시도시 넘겨받을 내부서버 ip입니다.

프토토콜 : SSH는 TCP 접속입니다.

외부포트 :  외부에서 SSH 접속시 사용할 포트 입니다. 

내부포트 : 내부 서버가 SSH용으로 사용하고 있는 포트 번호 입니다.


              

이렇게 입력이 끝나면 [추가]버튼을 누르고 저장하면 됩니다.


반영되었는지 확인을 하려면  


SSH 클라이언트 (Putty)에서  앞서 정한  Dynamic 도메인네임(예 fun2.dnsd.me)로 접속하면 됩니다.                          




이렇게 해서 접속이 되면 모든 적용이 완료 되었습니다.


마치겠습니다.


Posted by 퍼니로거 즐건록