NAS & ODROID/NAS, ODROID

NAS에 DDNS 적용하기 - DuckDNS

awesometic 2017. 8. 2. 17:04
반응형

보통 DNS 서버는 IP 주소와 도메인 네임을 일대일 매핑합니다. 만약 내 IP 주소가 100.100.100.100 이고 원하는 도메인이 example.com 이라면, 언제나 example.com은 100.100.100.100만 가리킵니다.

근데 이 경우 내 IP 주소가 바뀐다면 곤란해집니다. 보통 ISP에 직접 고정 IP를 신청하지 않는 한, 거의 대부분의 일반 가정에서는 유동 IP를 사용하거든요. 그 주기가 흔치는 않지만, 그래도 만약 바뀐다면 DNS 사이트로 가서 바뀐 IP로 일일이 바꿔줘야 합니다.

굉장히 귀찮고 신경쓰이는 작업입니다. 이걸 신경 안 쓰게 해주는 방법이 DDNS(Dynamic Domain Name Server)입니다.

도메인과 IP 주소를 일대일 매핑하는 건 같습니다만, IP가 변경될 경우 자동으로 이를 DNS 서버에 알려 해당 도메인으로 접속되는 IP 주소도 바꿔줍니다. 사용자가 신경쓸 필요가 없어진단 거죠.

example.com -> 100.100.100.100 이었는데, 어느 날 갑자기 내 IP가 100.100.100.200 이 된다면, 자동으로
example.com -> 100.100.100.200 으로 바뀝니다.

전 한 번 바뀌어봤지만, 오히려 IP가 굉장히 자주 바뀌는 분들이 간혹 있습니다. 그런 분들에겐 DDNS 사용이 필수라고 말씀드릴 수 있겠네요.

적용하러 가봅시다.




0. DDNS 업체 선택

무료 DDNS 서비스를 한참동안 찾아봤습니다. 몇 개 괜찮아 보이는 게 있더라구요.

1) No-IP

꽤 유명한 DDNS 서비스 업체입니다. ddns.net 이라는 괜찮은 도메인도 제공하지만 무료 버전일 경우 3개까지 가능하답니다. 여기까진 저희 용도로는 뭐 좋습니다. 하지만 30일에 한 번 사이트에 로그인 해 도메인을 갱신해야 한다고 명시되어 있네요. 이건 굉장히 불편한 요소죠. 또, Let's Encrypt로 SSL 인증서 발급이 잘 되지 않는단 소문이 있습니다. 그래서 보류했습니다.

2) CloudFlare

CloudFlare는 DNS 서버를 제공해주는 느낌입니다. 비슷한 말이지만, 직접 도메인 주소를 주는 게 아니라 제가 만약 다른 기관으로부터 발급받은 example.com 도메인을 갖고 있다, 근데 DDNS로 활용하고 싶다 할 때 그 발급 기관으로 가 DNS 서버를 CloudFlare에서 제공해주는 걸로 바꾸는 거에요. DNS 서버가 바뀌면서 DDoS도 방지해주고 SSL도 발급해주고 그런 느낌입니다. 잘 모르겠지만, 일단 내도메인.한국 에서 발급받은 kro.kr 도메인으로는 등록이 안 되더라구요. 무엇보다, 연결 하나당 한 번에 100MB밖에 업로드가 안 됩니다. NAS 사용자 입장에서는 별로죠. com, net 등의 도메인을 가지고 계신 블로그나 웹사이트 운영자 분들에게는 좋은 선택일 것 같습니다.

3) DuckDNS

그래서 찾아낸 게 바로 DuckDNS 입니다. 사이트도 엄청나 보이지 않고, 되게 단순한 기능들만 제공하는 것처럼 보이지만 실제로 그리 복잡한 기능이 필요 없기 때문에 선택했습니다. Let's Encrypt로 SSL 인증서 발급도 아직까진 문제가 있단 말이 없네요. 리눅스에 설치하시게 되면 간단히 Cron 데몬과 제공해주는 API를 통해 알아서 IP 주소를 갱신할 수 있도록 할 수 있습니다. 요놈을 쓸 겁니다.


1. DuckDNS 가입/도메인 등록

DuckDNS 사이트로 가 가입합니다. 전 구글 계정으로 했어요.

바로 이런 화면이 뜨네요. 전 OMV와 Transmission, Seafile 3개에 대해 도메인을 발급받아 보겠습니다. 토큰 값을 유출시키지 마시고 소중히 간직하세요.

이렇게 되네요. 이미 서브 도메인이기 때문에 omv.awesometic-test 형식으로 못 했습니다.

한 번 들어가볼까요,

빠릿합니다.

근데 아직 이건 기본적인 DNS 서버일 뿐이지, DDNS는 아니에요. 오드로이드 NAS에 SSH로 접속해 진행해봅시다.



2. DDNS 등록

https://www.duckdns.org/install.jsp 여기에 로그인한 채로 들어가 보면,

밑에 도메인을 고르랍니다. 고르면 알아서 설명해줄 건가 봐요. OMV 메인 사이트로 해봅시다.

난리납니다. 

한 번 따라해봤는데, 굉장히 쉽습니다. 파일 하나 만들고 내용 한 줄 복붙해넣고 뭐 이런 겁니다.

이렇게 하시면 될 것 같습니다. 먼저 SSH로 NAS에 접속하신 후(OMV가 아닌 일반적인 리눅스 배포판이고 현재 root라고 가정),

mkdir duckdns
echo 'echo url="https://www.duckdns.org/update?domains={도메인}&token={토큰}&ip=" | curl -k -o ~/duckdns/duck.log -K -' > duckdns/duck.sh
chmod 700 duckdns/duck.sh
echo '*/5 * * * * ~/duckdns/duck.sh >/dev/null 2>&1' >> /var/spool/cron/crontab/root
./duck.sh && cat duck.log
OK

하나씩 입력해주세요. 다만 두 번째 줄의 URL 주소만 각자에 맞게 적어주세요. DuckDNS 설치 페이지에 안내나온 걸 그대로 복붙하시면 됩니다. 마지막에 OK 라고 떠야 합니다. 안 뜬다면 지우고 다시 하셔야 하는데, 꼬일 수 있으니 주변에 컴잘알이나 저한테 댓글로 문의해주세요.

이렇게 하면 5분에 한 번씩 duckdns 사이트로 도메인과 토큰을 날려 IP 주소를 알리는 것 같습니다.

사이트를 추가하는 것도, 어렵지 않게 duck.sh 에 있던 줄을 복붙하시는데 다른 도메인만 쓰시면 될 것 같습니다.

그리고 발급받은 duckdns.org 들에 대해 Let's Encrypt로 SSL 인증서를 발급받아 사용하면 되겠네요.


OMV의 경우 OMV 예약된 작업 메뉴로 가셔서 작업을 추가해주세요.

이렇게 넣으시는데, 명령에

/usr/bin/curl http://www.duckdns.org/update/{도메인}/{토큰}

이런 내용을 넣으시고 저장하시면 될 것 같습니다. 저 명령 줄은 DuckDNS 인스톨 페이지에서 FreeNAS 쪽을 보세요. 그 곳에 나온 URL을 복붙하세요.

그리고 저장/적용하시면 됩니다.


유동 IP긴 하지만 일부러 IP를 바뀌게 할 순 없어 임의의 IP를 하드코딩해 보내보고, 정상 IP도 보내보고 했는데 잘 되네요.

OMV 적용도 잘 됩니다 :)

반응형