가비아에서 도메인을 구입하고 클라우드플레어로 네임서버를 설정한 후, ddns를 설정하려고 찾아보니 ddclient를 많이 사용하는 것 같아 이걸로 ddns 갱신을 진행하기로 했습니다.
준비물:
클라우드플레어 API 토큰
- 권한은 영역.영역:읽기, 영역.DNS:편집 이어야 합니다.
- 리소스는 포함.모든 영역이 ddclient 권장이지만, 포함.특정 영역.{도메인 영역 이름} 도 가능합니다.
각종 문제를 해결한 끝에 요약한 최종 가이드
현제 서버는 우분투 24.04를 사용하고 있고, 우분투 패키지(https://packages.ubuntu.com/)에는 ddclient가 3.10.0 버전이 최신버전이라 이걸 사용했습니다.(ddclient 공식 버전은 Github(https://github.com/ddclient/ddclient/releases)에 있으며, 작성일 기준 4.0.0이 최신버전입니다)
sudo apt-get update
sudo apt-get install ddclient
설치 중 프로토콜을 선택하고, 아이디, 비밀번호를 입력하는 창이 나오는데, 클라우드플레어를 선택하고, 아이디는 token, 비밀번호는 API 토큰은 입력하면 됩니다. 어차피 이건 나중에 수정 가능한 거라 잘못 입력해도 괜찮습니다.
그 다음, ddclient 서비스의 상태를 확인합니다.
sudo service ddclient status
○ ddclient.service - Update dynamic domain name service entries
Loaded: loaded (/usr/lib/systemd/system/ddclient.service; disabled; preset: enabled)
Active: inactive (dead)
Docs: man:ddclient(8)
위 내용은 예시입니다. 여기서 중요한 것은 ddclient.service 위치입니다.
해당 위치로 접근해 서비스 파일을 수정해야 합니다.
root@server:~# vi /usr/lib/systemd/system/ddclient.service
[Unit]
Documentation=man:ddclient(8)
Description=Update dynamic domain name service entries
After=network-online.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/run/ddclient.pid
Environment=daemon_interval=5m
EnvironmentFile=-/etc/default/ddclient
ExecStart=/usr/bin/ddclient -syslog -pid /run/ddclient.pid
Restart=on-failure
[Install]
WantedBy=multi-user.target
처음 vi로 열면 ExecStart 부분에 -daemon $daemon_interval 내용이 있는데 이걸 지워야 합니다. 지우지 않으면 conf파일에 갱신 시간을 설정해도 서비스 파일에 명시되어 있는 5분의 갱신시간이 적용됩니다.
저는 conf파일로 관리하기 위해 해당 옵션을 지웠지만, 서비스 파일로 관리하려면 Environment=daemon_interval=5m 부분을 적절하게 수정하면 됩니다.
서비스 파일을 수정한 이후에, daemon-reload를 진행합니다.
sudo systemctl daemon-reload
이제, conf 파일을 수정할 차레입니다.
root@server:~# vi /etc/ddclient.conf
# Configuration file for ddclient generated by debconf
#
# /etc/ddclient.conf
protocol=cloudflare
use=web, web=ipify-ipv4
login=token
password='**MASKING API TOKEN**'
zone=**MASKING ZONE NAME**
**MASKING DOMAIN1**
**MASKING DOMAIN2**
daemon=1d
syslog=yes
ssl=yes
위와 같이 수정하면 됩니다.
login은 반드시 token으로, password는 API 토큰을 입력하면 됩니다.
zone 부분은 클라우드 영역 이름을 입력하면 되는데, 보통 도메인으로 설정되어 있는 것 같습니다.
저는 갱신 시간을 하루로 하고 싶어 daemon=1d를 입력했지만, 원하는 시간을 입력하면 됩니다.
이제, 테스트를 해봅니다.
sudo ddclient --daemon=0 --debug --verbose
...
SUCCESS: updating **MASKING DOMAIN**: IPv4 address set to **MASKING IP**
이렇게 SUCCESS가 나오면 정상적으로 동작한 것입니다.
마지막으로, 서비스를 활성화합니다.
sudo systemctl enable ddclient
sudo service ddclient start
오류 해결기
후추