🚨 DuckDNS 도메인 IP 설정 문제, 원인과 해결 방법 정리
✅ 문제 상황 요약: DuckDNS 도메인이 잘못된 IP로 설정됨
DuckDNS에 등록된 teamnotfound.duckdns.org가 현재 EC2 인스턴스의 퍼블릭 IP(3.34.129.166) 가 아닌, 이전 IP(15.164.49.138) 로 계속 바인딩되어 있었음.
해당 현상은 도메인 접속 시 연결 실패 및 인증 문제로 이어지며, dig 명령어를 여러 번 실행할 경우 IP가 왔다 갔다하는 불안정 현상도 발견되었음.
🛠 구현 흐름 ①: DuckDNS 등록 스크립트 작성 및 확인
#!/bin/bash
IP="3.34.129.166" # <- 현재 EC2 퍼블릭 IP로 명확히 고정
echo url="https://www.duckdns.org/update?domains=teamnotfound&token=bf05a989-ac28-4ecd-87dd-6daa2e8974fd&ip=$IP" \
| curl -k -o ~/duckdns/duck.log -K -
✅ 기존 duck.sh에 명확히 현재 IP를 IP= 로 고정 지정하고, curl 요청에 포함되도록 처리
🧼 구현 흐름 ②: 기존 IP 정보 초기화 후 재등록
DuckDNS는 기존 IP가 남아 있는 경우 여러 레코드가 함께 유지되면서
dig 결과가 왔다갔다할 수 있음. 따라서 다음과 같이 기존 IP 모두 삭제(clear) 해야 함.
curl "https://www.duckdns.org/update?domains=teamnotfound&token=bf05a989-ac28-4ecd-87dd-6daa2e8974fd&clear=true"
이후 다시 duck.sh를 실행:
bash ~/duckdns/duck.sh
🔁 구현 흐름 ③: Crontab으로 주기적 업데이트 자동화
이후 EC2의 퍼블릭 IP가 바뀔 수 있으므로, crontab으로 5분마다 duck.sh를 실행하여 자동 갱신되도록 설정함:
crontab -e
내용 추가:
*/5 * * * * ~/duckdns/duck.sh >/dev/null 2>&1
참고: crontab -l 명령으로 현재 설정 확인 가능
🔍 검증 결과: DNS 정상화 확인
dig @8.8.8.8 teamnotfound.duckdns.org +short
✅ 출력 결과가 고정 IP인 3.34.129.166으로 유지되는 것을 확인함.
이전처럼 15.164.x.x 로 튀는 현상도 사라짐.
⚠️ 실수 방지 팁 / 주의사항
- curl에서 &ip= 뒤에 값이 없을 경우, DuckDNS는 기존 등록된 값 유지 정책이라서 여러 IP가 남을 수 있음
- duck.sh 수동 실행 후 반드시 dig로 결과 확인할 것
- EC2 인스턴스를 완전히 종료했다가 재실행하면 IP가 바뀌므로, 반드시 crontab 등록 필요
- nano duck.sh 수정 시 저장은 Ctrl+O, 종료는 Ctrl+X
💡 참고 사항 및 다음 작업
- 현재 DuckDNS 연동은 정상화되었고, HTTPS 연결도 검토할 수 있음
- 이후 Nginx 리버스 프록시와 인증서 갱신 자동화(cron+certbot) 작업으로 확장 가능
'프로젝트' 카테고리의 다른 글
📚 실무 협업을 위한 Notion OT (0) | 2025.06.19 |
---|---|
주요 API 모음 (0) | 2025.06.19 |
EC2 재부팅 시 IP 변경 문제와 DuckDNS 전파 지연 해결 전략 (0) | 2025.06.15 |
✅ 실무형 배포 시 인증서 발급~CSRF & 동기화 무한지옥까지 완벽 정리 (0) | 2025.06.15 |
🎯 DuckDNS 무료 도메인 + 자동 IP 갱신 실무 배포 전과정 (1) | 2025.06.15 |