2024. 12. 17. 04:41ㆍETC/홈서버
1. DDNS란?
DDNS(Dynamic DNS)는 동적으로 변하는 IP 주소를 도메인 이름에 실시간으로 연결해 주는 서비스이다.
일반적으로 가정이나 소규모 사무실에서는 ISP로부터 유동 IP를 할당받는데, 이 IP는 주기적으로 변경된다.
ISP도 DHCP를 통해 각 가정이나 사무실에 유동 IP를 할당한다.
이는 한정된 네트워크 자원을 효율적으로 관리하기 위함이다.
아무튼 실제로 public ip가 변동되는 경험을 겪고 나서 DDNS의 필요성을 알게 되었다.
DDNS는 이러한 IP 주소가 변경될 때마다 자동으로 도메인 네임 서버의 설정을 업데이트하여, 항상 동일한 도메인 이름으로 서버에 접속할 수 있게 해 준다.
고정된 public ip를 할당받지 못하는 홈 서버나 NAS 같은 개인 서버를 운영할 때 DDNS는 필수라고 할 수 있다.
2. Cloudflare 설정
도메인을 cloudflare에서 구매했기 때문에 cloudflare에서 진행한다.
- cloudflare api token 발급
계정 관리
→ 계정 API 토큰
또는 내 프로필
→ API 토큰
- DNS 전체(엄격) 혹은 전체로 설정
- 항상 HTTPS 사용하도록 설정
- 최소 TLS 버전 → tls 1.2
- Zone ID 기록
3. cloudflare-ddns
unifi에서 기본적으로 DDNS 기능을 제공하고 있다.
하지만 cloudflare의 DDNS 기능은 제공하고 있지 않았다.
그래서 cloudflare에서 제공하는 api를 활용해서 DDNS를 구현해야 한다.
HomeLab : Cloudflare DDNS 셋업
우리집 쿠버네티스 클러스터 꾸미기 (#2 Cloudflare DDNS)
cavecafe.medium.com
GitHub - timothymiller/cloudflare-ddns: 🎉🌩️ Dynamic DNS (DDNS) service based on Cloudflare! Access your home network rem
🎉🌩️ Dynamic DNS (DDNS) service based on Cloudflare! Access your home network remotely via a custom domain name without a static IP! - timothymiller/cloudflare-ddns
github.com
Python 코드를 직접 읽어보고 마음에 들었던 repo를 선택했다.
구체적인 사용법은 위 github을 참고할 것.
아래에는 실행에 필요한 설정파일과 docker compose 파일이다.
- sample - config.json
{
"cloudflare": [
{
"authentication": {
"api_token": "api_token_here",
},
"zone_id": "your_zone_id_here",
"subdomains": [
{
"name": "", // Root domain (example.com)
"proxied": true
},
{
"name": "foo", // (foo.example.com)
"proxied": true
},
{
"name": "bar", // (bar.example.com)
"proxied": true
}
]
}
],
"a": true,
"aaaa": true,
"purgeUnknownRecords": false,
"ttl": 300
}
- config.json
{
"cloudflare": [
{
"authentication": {
"api_token": "${CF_DDNS_API_TOKEN}"
},
"zone_id": "${CF_DDNS_ZONE_ID}",
"subdomains": [
{
"name": "",
"proxied": true
}
]
}
],
"a": true,
"aaaa": false,
"purgeUnknownRecords": false,
"ttl": 300
}
- docker-compose.yml
services:
cloudflare-ddns:
image: timothyjmiller/cloudflare-ddns:latest
container_name: cloudflare-ddns
security_opt:
- no-new-privileges:true
network_mode: 'host'
env_file:
- .env
environment:
- PUID=1000
- PGID=1000
volumes:
- /root/cloudflare-ddns/config.json:/config.json
restart: unless-stopped
- .env
# /root/cloudflare-ddns/.env
CF_DDNS_API_TOKEN=
CF_DDNS_ZONE_ID=
잘 동작하고 있다.
'ETC > 홈서버' 카테고리의 다른 글
[홈서버] Proxmox Backup Server (0) | 2025.02.28 |
---|---|
[홈서버] 네트워크 2 - 희망편 (1) | 2024.12.17 |
[홈서버] 네트워크 1 - 절망편 (1) | 2024.12.17 |
[홈서버] 보안 (0) | 2024.12.15 |
[홈서버] 하이퍼바이저 (1) | 2024.12.10 |