티스토리 뷰

반응형

워드프레스(WordPress)을 이용해 웹사이트를 구축해보려고 합니다. 그래서 그 기록을 남깁니다.

이전 글을 읽지 않으셨다면 이전 글을 먼저 읽고 와주시면 이해에 도움이 될 수 있습니다.

특히, 이 글은 번외편에 대한 내용이므로 스킵해도 무방합니다.

 

ddclient 란

앞선 글에서 ddns 에 대해서 설명한 적이 있습니다. 네임서버에 등록된 IP 주소가 변동이 자주 있을 것이라고 예상될 때에는 ddns 를 제공하는 네임서버를 이용해 사용자가 직접 네임서버의 설정값을 바꿔주는 것이 아니라 프로그램이나 호출을 통해 주기적으로 갱신해 줄 수 있다는 것입니다.

그리고, 이러한 ddns 갱신 기능을 제공하는 프로그램이 ddclient 입니다(https://ddclient.net, https://github.com/ddclient/ddclient). Supported Protocols 항목에서 알 수 있듯이 Cloudflare 을 위한 전용 프로그램은 아니고 여러 네임서버를 위한 ddns 프로그램 임을 알 수 있습니다. 앞선 글에서 잠깐 언급했던 dnszi 와 같은 국내 서비스들은 지원하지 않아서 아쉽네요. 해당 프로그램은 *NIX 용이기 때문에 Windows 서버에서 사용하기 위해서는 WSL 이용하거나 Windows 용으로 추가 개발된 다른 프로젝트의 인스톨러를 내려받아 사용해야 합니다.

 

ddclient 설치

앞선 글과 같이 Ubuntu 기반의 Linux 에서는 apt 에 이미 ddclient 가 존재하기 때문에 아래와 같이 설치하면 됩니다.

apt -y install ddclient

RedHat 계열일 경우 yum/dnf 에 등록되어 있을 수 있으나, AWS 같은 곳에서는 없을 수 있으므로 필요하다면 github 문서에 나온대로 직접 build 하거나 다른 저장소를 이용해 내려받아 이용하면 됩니다.

 

Cloudflare API 토큰 확인

Cloudflare 는 대부분의 기능을 REST API 를 이용해 외부에서 설정하거나 조회할 수 있습니다. ddclient 역시 REST API 을 이용하는데, 이 때 필요한 것이 API 토큰(token)입니다. 사용자의 고유값에 해당하는데, 이 값을 통해 기능 사용이 허가된 사용자의 요청임을 Cloudflare 가 알 수 있습니다. 그러므로 이 토큰은 절대 외부로 유출되어서는 안됩니다.

API 토큰 생성

위의 이미지와 같이 내 프로필(빨간색 밑줄)의 API 토큰 메뉴(파란색 밑줄)로 들어가면 API 토큰에 대한 내용이 나타납니다. 저는 이미 두 개의 토큰을 생성한 것이 있지만, 처음 들어간다면 토큰 생성만 존재할 것입니다. 하단에는 API 키 항목이 존재하고 Global API Key 를 조회할 수 있는데, 예전에는 이 키를 이용할 수 있었지만, 지금은 사용할 수 없습니다.

토큰 생성 버튼을 눌러서 다음 페이지로 이동하면 부여할 권한을 선택하여 빠르게 만들 수 있는데, 영역 DNS 편집 권한이 필요합니다. DNS 설정을 갱신해야 하기 때문입니다. 영역 DNS 편집 옆의 템플릿 사용 버튼(빨간색 밑줄)을 선택하여 다음 페이지로 이동합니다.

영역 DNS 편집 템플릿을 선택

템플릿 사용 버튼을 누르면 아래 이미지와 같이 토큰 생성을 위한 정보 입력 페이지로 이동합니다. 이 페이지에서는 의미를 모르겠다면 다른 것은 건드리지 말고 영역 리소스 부분의 포함을 모든 영역으로 변경한 뒤(빨간색 밑줄 참고) 하단의 요약 계속 버튼을 눌러 다음 페이지로 이동합니다. 다만, 토큰 이름의 경우 중복이 허용되기 때문에 앞으로 여러 API 토큰을 만들게 된다면 구분을 위한 이름으로 변경하는 것을 추천드립니다. 토큰은 생성될 때에만 값을 보여주고, 이후에는 확인할 수 없기 때문에 이름으로 구분이 안된다면 어떤 토큰을 지우거나 편집해야 할지 모르기 때문입니다.

영역 DNS 요약 1

다음 페이지에서는 위에서 설정한 값을 확인할 수 있고, 토큰 생성 버튼을 누르면 아래와 같이 생성된 토큰을 확인할 수 있습니다. 이 때 반드시 토큰 값은 다른 곳에 잘 보관하기길 바랍니다. 아래에는 쉘에서 직접 실행하여 토큰이 정상적으로 동작하는지 확인할 수 있는 명령이 나오므로, 이를 복사하여 실행하면 토큰이 정상적으로 사용 가능한지 확인 가능합니다. (물론 아래 토큰은 바로 폐기했기에 사용 불가능합니다)

발급된 API 토큰

 

ddclient 에 토큰을 이용하여 설정

이제 설치된 ddclient 의 설정 파일을 수정하여 본인의 도메인에 등록된 특정 레코드의 IP 주소를 갱신할 수 있습니다. 당연한 이야기일 수 있지만, 이 때 사용할 레코드는 A 레코드이어야 합니다.

ddclient 의 설정파일은 Ubuntu 기준 /etc/ddclinet.conf 입니다. 해당 파일을 본인이 사용하는 텍스트 에디터(vi, nano 등)를 이용하여 아래와 같이 수정해줍니다.

protocol=cloudflare \                            # Cloudflare 용 설정
use=if, if=eth0 \                                # Cloudflare 로 전송할 랜카드 포트
login=zepinos@gmail.com \                        # Cloudflare 아이디
password='**************************' \          # 발급받은 토큰, * 대신에 입력
zone=zepinos.com \                               # DNS 에 등록된 도메인
www.zepinos.com                                  # 갱신할 A 레코드

*NIX(유닉스 계열 운영체제를 의미, 리눅스나 MacOS 같은)에 대한 지식이 없다면 조금 어려운 내용이 있을 수 있습니다.

use 로 시작하는 2번째 줄에 if= 다음의 값은 해당 서버가 어떤 랜카드의 포트(인터넷 포트가 아니라, 쉽게 말해 랜선을 연결하는 구멍)를 통해 ddns 에 명령을 보낼 것인가 하는 것입니다. 저의 경우 서버를 구성할 때 랜 포트가 2개 이상인 경우가 많기 때문에, 그리고 Ubuntu 기본 이미지를 설치했을 때에는 랜포트의 고유 이름이 eth0 가 아닐 수 있기 때문에 ifconfig 이나 ip addr 을 이용해 ddns 에 등록하고자 하는 IP 주소가 나타나는 이름을 정확히 등록해야 합니다. Ubuntu 의 경우 ens*** 와 같이 다른 이름으로 표시될 수 있습니다.

마지막 줄에는 변경시킬 주소를 기입하는데, 만약 zepinos.com 을 A 로 등록했다면 www.zepinos.com  대신에 값을 변경하면 됩니다. 이렇게 할 경우 www.zepinos.com  을 CNAME 으로 zepinos.com 을 등록해주면 zepinos.com 하나를 변경해도 www.zepinos.com  까지 모두 적용할 수 있습니다.

이렇게 수정한 뒤 systemctl restart ddclient 와 같은 명령으로 재시작을 해줬을 때 아무런 메세지가 나오지 않고 status 을 확인했을 때 제대로 나타난다면 적용이 잘 되었을 것입니다. 확인을 하려면 Cloudflare 에서 ddns 로 등록된 레코드를 임의의 값으로 변경하고 ddclient 을 재시작 한 뒤,  값이 잘 변경되는지 확인하면 됩니다. 주기적으로 보내려면 cron 에 등록하거나 할 수 있지만, 보통 시스템이 켜져 있을 때에는 변경되는 경우가 매우 희박하므로 시스템 시작 시 한 번 갱신해주도록 하고 있습니다. cron 설정 등은 github 의 README 에 있으므로 참고하시길 바랍니다.

 

결론

ddclient 로 쉽게 ddns 을 적용해보자. (공유기도 지원한다는 것은 안비밀, 아이피타임에서 사용할 필요는 없음)

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함