나만의 인터넷 주소를 홈 서버에 연결해보자(feat. Cloudflare, DDNS)
인터넷을 사용할 때 주소 창에 172.217.213.100과 같은 진짜 ip 주소가 아닌 google.com같은 도메인 주소를 사용한다.
이것이 가능한 이유는 DNS(Domain Name System)서버가 도메인 주소를 ip주소로 변환해 주기 때문이다.
이번 포스팅에서는 도메인 주소 구매 후 DDNS설정까지 완료하여 홈 서버에 연결하는 과정을 소개하겠다.
도메인 구입
도메인 판매는 국내의 호스팅케이알, 가비아 해외의 cloudflare, google 등 이 있다.
이번엔 호스팅케이알을 통해 구매 하겠다.

접속 후 검색창에 TLD(.com, .kr)를 빼고 검색하면 TLD별 가격이 나온다.
현재는 .kr은 약 10780원/년으로 나쁘지 않은 가격이다.
원하는 도메인을 구매 한다.
Cloudflare 연결
Cloudflare는 전 세계에 분산된 서버를 통해 빠른 DNS 응답과 proxy등 강력한 보안 서비스를 무료로 제공한다.
로그인 후 홈에서 도메인 온보딩 클릭
구입 한 도메인 입력
요금제는 무료로 해도 충분합니다.
네임 서버를 변경하라는 안내창이 뜹니다.
Cloudflare 네임서버 주소를 복사 해 둔 뒤 호스팅케이알로 다시 돌아옵니다.
우 상단 나의 서비스 -> 도메인 -> 구입 한 도메인 클릭 -> 네임서버 편집
기본으로 호스팅케이알의 네임서버를 사용하도록 되어있을 것이다.
복사해 둔 cloudflare 주소로 변경 후 저장한다.
다시 Cloudflare로 돌아가 '내 이름 서버를 업데이트함` 클릭
네임 서버 변경이 반영될 때 까지 길면 하루가 걸린다고 하는데 나는 바로 반영 되었다.
등록이 완료된 모습
등록 확인이 안된다면 홈으로 나와서 도메인을 다시 눌러보면 되어 있는 경우도 있다.
이렇게 Cloudflare에 도메인 등록까지 완료하였다.
DDNS 설정
DNS -> 레코드 메뉴에서 직접 aaa.mydomain.com 을 xxx.xxx.xxx.xxx로 연결하도록 설정할 수 있다.
하지만 대부분의 가정집에서는 유동IP를 사용하기 때문에 IP가 변경 될 때 마다 이를 직접 수정해 줘야 한다.
따라서 자동으로 IP변경을 감지 후 DNS 레코드를 수정해주는 DDNS(Dynamic DNS)를 적용해 보겠다.
Clouaflare API발급
우 상단 에서 프로필 클릭
좌측 메뉴 API토큰 -> 토큰 생성
템플릿에서 영역 DNS 편집
적절한 token이름, 권한, 영역을 설정한다
토큰을 생성하여 복사 해둔다
이 페이지를 나가면 토큰을 다시 볼 수 없으니 메모장에 옮겨 놓는다
Docker compose
디렉토리를 연 후 docker-compose.yml을 편집한다.
nano docker-compose.yml
아래 내용 붙여넣기
services:
app:
image: oznu/cloudflare-ddns:latest
restart: always
environment:
- API_KEY=[Token]
- ZONE=[mydomain.com]
- SUBDOMAIN=*
- PROXIED=falseAPI_KEY: 방금 발급 받은 토큰
ZONE: 구입한 도메인
SUBDOMAIN: 2차 도메인, 만약 2차도메인에 상관 없이 모든 주소를 연결하고 싶다면 와일드 카드 *을 사용하면 된다
ctrl + x -> y로 저장 후 나가기
docker compose up -d
docker compose logs -f로 로그를 확인하면 DNS record for '*.[domain]' was not found in [domain] zone. Creating now...
과 같은 DNS레코드를 찾고 생성하는 로그를 확인할 수 있다.
확인
Cloudflare DNS의 레코드 메뉴에서 실제로 IP가 등록된 것을 확인할 수 있다.
또한 cmd나 powershell에서 DNS 정보를 조회하는 nslookup 명령어로도 확인할 수 있다.
win + R -> cmd nslookup [test.도메인] 입력