ddclient를 통한 DDNS 세팅

ddclient를 통한 DDNS 세팅
Photo by Jordan Harrison / Unsplash

이번에 서버를 서울에서 대전으로 옮기면서 DDNS (Dynamic DNS)를 세팅하기로했다. 글쓴이는 유동 IP를 받아 서버를 구성하고있는데, 현 거주지와 서버가 설치된 장소가 거리가 있어 혹여나 발생할 수 있는 IP 변경(정전 등)에 빠르게 대응하기 위함이였다.

참고로 본 내용은 cloudflareddclient로 세팅한다.

ddclient

ddclient는 다양한 DNS 서버에서 DDNS를 사용할 수 있는 daemon을 제공한다.

아래 커맨드를 통해 기본적인 프로젝트 세팅을 하였다.

$ mkdir -p ~/daemon/ddclient/conf #ddclient 작업 및 conf 디렉토리 생성
$ vim ~/daemon/ddclient/docker-compose.yml # docker-compose 파일 생성

또한 ddclient를 서버에 직접 세팅을 하지 않고 docker 위에서 동작하길 원하기 때문에 아래와 같이 docker-compose.yml을 작성하였다.

version: "2.1"
services:
  ddclient:
    image: lscr.io/linuxserver/ddclient:latest
    container_name: ddclient
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
    volumes:
      - ./conf:/config
    restart: unless-stopped

이 후 컨테이너의 /config와 바인딩될 config 파일을 작성한다.

$ vim ~/daemon/ddclient/conf/ddclient.conf
daemon=300 # daemin의 interval (300s)
protocol=cloudflare # DNS provider
use=web, web=checkip.dyndns.org # web을 통해 공인 IP를 받아온다
zone=j911.me # cloudflare zone
login=CLOUDFLARE_ID # cloudflare ID
password=	# global API key
j911.me # DDNS 적용 도메인

위와 같이 config 는 5분(300초)마다 업데이트를 시도한다. global API Key의 경우 여기를 참조할 수 있다.

config에 secret이 기록되어있기에 root만 conf에 접근할 수 있도록 퍼미션을 변경해준다.

$ chmod -R 0400 conf

최종적으로 docker-compose up을 하여 데몬을 실행한다.

$ cd ~/daemon/ddclient
$ docker-compose up -d