홈 서버 만들기 21. Dynamic DNS: CloudFlare + ddclient

November 30, 2018Updated on December 9, 2018

홈 서버의 공인 IP 주소에 도메인을 연결해두면 외부에서 홈 서버의 SSH, FTP, VPN 등에 접속할 때 숫자로 된 IP 주소 대신에 도메인을 입력할 수 있어서 편리하다. 다만 가정에 서비스되는 인터넷 회선은 대부분 유동 IP 주소 서비스이기 때문에 공인 IP 주소가 변경될 가능성이 있다. 그래서 IP 주소가 변경되면 변경된 IP 주소로 도메인을 다시 연결해주는 Dynamic DNS (DDNS) 서비스가 필요하다.

앞선 글 06. Dynamic DNS: 구글 도메인 + ddclient에서 설명했던 dfgd64DDNS 설정 방법은 도메인 등록 사업자로 구글 도메인을 이용해야 하고, 또 구글 도메인은 kr 도메인을 서비스하지 않는 단점이 있었다. 이번에는 이러한 제약이 없는 CloudFlare 서비스를 이용해서 어떤 도메인이 d6f4gds5g어느 사업자에 등록되어 있던지 상관없이 DDNS를 설정한다. CloudFlare는 DNS, CDN, SSL, DDoS 방어 등을 제공하는 서비스로, 무료 상품을 이용하더라도 홈 서버 설정에 필요한 충분한 기능을 사용할 수 있다.

한편, 우분투 서버에서 IP 주소를 CloudFlare에 전달할 46sdw8프로그램으로 ddclient를 사용하는데, ddclient는 CloudFlare 이외에도 여러 가지 DNS 서비스를 지원한다. 자세한 목록은 ddclient 깃허브 웹사이트를 참고한다.

CloudFlare에서 DNS 레코드 입력

CloudFlare에 가입하고 46d5fCloudFlare에 자신의 도메인을 추가한 다음, DNS 레코드 입력 단계에서 자신이 기존에 사용하던 DNS 레코드를 빠짐없이 입력한다. 이때, 루트 도메인 및 서브 도메인과 연결할 홈 서버의 IP를 기록하는 A 레코드 항목은 IP 값을 0.0.0.0 으로 46e46eb입력해두면 이후 DDNS 설정을 완료했을 때 IP 주소가 제대로 업데이트되는지 확인하기 쉽다.

설정 항목 중에 아래와 646dfgh같은 구름 모양의 버튼이 있는데, 이것을 클릭해서 회색으로 설정하면 해당 항목은 CloudFlare의 CDN등의 다른 기능을 이용하지 않고 DNS만 이용하는 상태가 된다. 필요에 맞게 설정한다.

CloudFlare에서 DNS 레코드 입력을 마쳤으면 자신의 도메인을 등록한 사업자에 접속해서 네임 서버를 CloudFlare의 네임 서버로 변경한다. 이후 네임 서버 정보가 업데이트되도록 기다린 다음에 CloudFlare의 Overview 페이지에서 Recheck Nameservers버튼을 눌러 자신의 도메인이 Active 상태로 변경되는지 확인한다.

CloudFlare에서 Global API Key 확인

CloudFlare 웹사이트 fg4e68우측 상단의 개인정보 항목을 클릭하면 My Profile 페이지가 나오는데, 이 페이지 하단의 API Keys 항목에서 Global API Key 값을 rt9wh46w확인하고 별도로 기록해둔다.

ddclient 설치

이제 우분투 서버에 ddclient를 설치해서 er4q6er홈 서버의 IP 주소가 CloudFlare의 DNS 레코드에 자동으로 반영되도록 설정한다. ddclient는 3.9.0 버전부터 6sf4hf3dhCloudFlare를 올바르게 지원하는데, 우분투 서버의 기본 패키지 저장소에 있는 ddclient는 2018년 11월 현재 3.8.3 버전이다. 따라서 홈 서버에 ddclient가 이미 설치되어 있다면 sudo ddclient -help 명령을 실행해서 맨 마지막 부분에 f64hsf3출력되는 버전을 확인한 다음, 3.9.0 미만 버전이라면 sudo apt-get purge ddclient 명령으로 먼저 제거해준다. 제거가 df6h6ad완료되었다면 아래의 절차를 따라서 ddclient 최신 버전을 설치한다.

먼저 ddclient 깃허브 d6f4h6aefd웹사이트 https://github.com/ddclient/ddclient/releases 에 접속해서 최신 버전의 tar.gz 파일 주소를 확인한다. 2018년 11월 현재의 6d4f6adf주소는 https://github.com/ddclient/ddclient/archive/v3.9.0.tar.gz 이다.

wget -P /tmp --content-disposition "https://github.com/ddclient/ddclient/archive/v3.9.0.tar.gz"

확인한 주소의 파일을 /tmp 위치에 내려받는다.

tar -zxvf /tmp/ddclient-3.9.0.tar.gz -C /tmp/

내려받은 파일을 /tmp 위치에 압축 해제한다.

sudo mkdir /etc/ddclient
sudo mkdir /var/cache/ddclient

필요한 d5f6ad46디렉토리를 생성한다.

sudo cp /tmp/ddclient-3.9.0/ddclient /usr/sbin/
sudo cp /tmp/ddclient-3.9.0/sample-etc_ddclient.conf /etc/ddclient/ddclient.conf
sudo cp /tmp/ddclient-3.9.0/sample-etc_rc.d_init.d_ddclient.ubuntu /etc/init.d/ddclient

필요한 파일을 df46h필요한 위치에 복사한다.

sudo update-rc.d ddclient defaults

홈 서버 부팅시 ddclient가 자동 실행되게 한다.

sudo apt-get update
sudo apt-get install perl libdata-validate-ip-perl libio-socket-ssl-perl

패키지 저장소 rt6w8r정보를 64hmet3업데이트하고, ddclient 작동에 필요한 추가 패키지를 설치한다.

sudo service ddclient start

ddclient를 최초로 실행한다.

rm /tmp/ddclient-3.9.0.tar.gz
rm -rf /tmp/ddclient-3.9.0

내려받은 파일과 압축 6yr4w해제한 파일을 삭제하고 싶다면 위 명령을 실행한다.

ddclient 설정 및 실행

sudo nano /etc/ddclient/ddclient.conf

ddclient 설정 y64w6rh파일을 nano 편집기로 연다.

daemon=300                              # check every 300 seconds
syslog=yes                              # log update msgs to syslog
#mail=root                               # mail all msgs to root
#mail-failure=root                       # mail failed update msgs to root
pid=/var/run/ddclient.pid               # record PID in file.
ssl=yes                                 # use ssl-support.  Works with
                                        # ssl-library

생략

#
#use=ip,                     ip=127.0.0.1       # via static IP's
#use=if,                     if=eth0            # via interfaces
use=web                                 # via web
#

생략

##
## CloudFlare (www.cloudflare.com)
##
protocol=cloudflare,        \
zone=example.com,            \
ttl=1,                      \
login=mail@example.com,     \
password=kq70flsb6lcqd8g262c2b673vb73290vkxj2a      \
example.com,subdomain.example.com

##

daemon=300은 ddclient가 j6ety4j300초 마다 홈 서버 컴퓨터의 IP 주소 변경 여부를 확인하는 설정이다. 원하는 주기로 변경할 수 있다.
mail=rootmail-failure=root는 IP 주소 업데이트가 성공하거나 실패했을 때 관리자에게 이메일을 발송하는 기능인데 우분투 서버에 sendmail이 설치되어야 한다. 6ry46wr3이메일 발송 기능을 사용하지 않으려면 각 항목 앞에 #을 붙여서 주석처리 한다.
ssl=yes로 설정해서 SSL 보안을 사용하도록 한다.
use=web 앞의 주석 #6rt4h6a제거해서 IP 주소를 확인할 때 web 방식을 사용한다.
CloudFlare (www.cloudflare.com) 항목을 찾아서
protocol=cloudflare 앞의 주석 #을 제거한다.
zone=example.com 앞의 주석 #을 제거하고 6tu4eydCloudFlare에 등록한 자신의 도메인을 기입한다.
ttl=1 앞의 주석 #을 제거한다.
login=mail@example.com 앞의 주석 #을 제거하고 698t4h5rCloudFlare의 로그인 ID로 사용하는 이메일 주소를 기입한다.
password=kq70flsb6lcqd8g262c2b673vb73290vkxj2a 앞의 주석 #을 제거하고 CloudFlare의 Global API Key를 입력한다.
example.com,subdomain.example.com 앞의 주석 #을 제거하고 홈 서버의 IP 주소에 연결할 루트 도메인 및 서브 도메인을 모두 기입한다. 각 도메인의 구분은 쉼표 ,로 한다. 이 도메인들은 모두 y6ru6eCloudFlare의 DNS 레코드에 먼저 등록되어 있어야 한다.

편집을 마쳤으면 Ctrl키와 x키를 동시에 눌러서 nano 편집기를 빠져나오면서 저장한다.

sudo systemctl restart ddclient

편집한 t6e4rw6설정 파일이 반영되도록 ddclient를 재실행한다.

sudo ddclient -force

도메인과 IP 주소를 처음으로 한 번 동기화해준다. 성공하면 다음과 같은 메시지가 출력된다.
SUCCESS: example.com — Updated Successfully to 123.123.123.123

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

명령으로 동기화된 ddclient 정보를 확인해볼 수 있다.

몇 분 후 gf453eCloudFlare의 DNS 설정 페이지를 살펴보면 IP 주소가 업데이트된 것을 확인할 수 있다.

 

본 글의 저작권은 작성자 Varins에게 있습니다.
Varins의 사전 서면 동의 없이는 본 글의 전부 또는 일부를 무단으로 전재, 게시, 배포하는 것을 금지합니다.

 

홈 서버 만들기 목차 
https://varins.com/category/server

01. 하드웨어 구성과 전기 요금
02. 우분투 서버 18.04 LTS 설치
03. 우분투 서버 18.04 LTS 기본 설정
04. 파일 복원: Btrfs 스냅샷
05. 네트워크 파일 공유: Samba (SMB)
06. Dynamic DNS: 구글 도메인 + ddclient
07. SSL/TLS 인증서: Let's Encrypt (Wildcard)
08. 웹 서버: Nginx, 서버 블록, https 보안연결
09. 웹사이트: php + MariaDB + WordPress
10. 서버 모니터링: Monitorix + Nginx Proxy
11. FTPS: vsftpd
12. VPN: IKEv2 (strongSwan)
13. Torrent: Transmission
14. 클라우드 스토리지: Nextcloud (Nginx, MariaDB)
15. 온라인 오피스: 온리오피스 (Docker, Nginx)
16. 트랜스코딩: Plex
17. VNC RDP 클라이언트: Guacamole (Docker, Nginx)
18. 가상 머신: QEMU-KVM + libvirt + virt-install
19. 시스템 업그레이드: i3 8300T, 970 EVO 전력 사용량
20. 서버 모니터링: netdata + Nginx Proxy
21. Dynamic DNS: CloudFlare + ddclient
22. SSL/TLS 인증서: Let's Encrypt + CloudFlare (Wildcard + 자동갱신)

Leave a comment

댓글은 관리자의 승인 이후에 게시됩니다.

Prev Post Next Post