Cloudflare DNS 및 DDNS 질문
안녕하세요!
시놀로지에서 Cloudflare DDNS 구성은 완료하였는데
클라우드플레어 대시보드에서 DNS 항목에는 루트 도메인에 대하여 무엇을 넣어야 하나요?
그냥 외부 주소(사진에서 222.222.222.222로 써둔 부분의 것)을 넣으면 되는지요?
현재 DNS 구성은
루트 도메인에 대하여 외부 주소 그대로.
다른 서브 도메인에 대하여도 외부 주소(즉 222.222.222.222처럼) 그대로인데요.
작동은 되고 있으나 이러면 분명 DDNS를 설정한 이유가 없는 것 같은데...
대체 무슨 원리인지(어떻게 설정하는 건지) 이해가 되지 않습니다.
도메인은 클플에서 구매하였습니다.
고수님들의 답변을 부탁드립니다 ㅠㅠ
DDNS을 설정하게 되면 NAS 내에서 별도의 데몬이 돌아가면서 일정 시간마다 내가 가지고 있는 아이피를 Cloudflare에 동기화를 시키게 됩니다. 처음에는 일단 사용자분이 입력하셨더라도 이후에 아이피가 변동이 생기게 되면 데몬이 기동하게 되면서 바뀐 IP가 Cloudflare에 적용이 되는것이죠.
게다가 시놀로지 같은경우는 많은 DNS관리업체들이 추가되어있어 DDNS 등록과정에서 계정정보만 입력하면 바로 데몬이 돌아갈수 있는데,
시놀로지에서 지원리스트에 없는 DNS관리업체에서 시놀로지를 DDNS로 등록할때는 Crontab을 이용해서 동작하기도 합니다.
그리고 대부분의 상황에서 유동IP일지라도 별다른 사유가 없는 한 IP변동이 자주 일어나지는 않기때문에 바로 식별하기는 힘드실 수 있습니다.
아직 IP 변동이 일어나지 않아 확인이 안 되는 것 같으니 조금 더 지켜봐야겠습니다.
답변 감사합니다!!
수동으로 입력해야되면 ddns가 아니죠.
저는 시놀이 없어서 ddns 시놀에서 설정하는 방법은 도와드릴 수 없지만..
그냥 cron 같은 작업으로 하려고 하신다면 도와드릴 수 있습니다
저의 설정방법이 맞는지는 모르지만. A 레코드의 경우 최상위 도메인 domain.com만 연결을 했습니다.
그리고 하위 도메인의 경우 cname으로 content 부분은 그냥 @만 넣어두면 알아서 도메인 주소가 연결되더라고요
그리고 프록시는 연결 도메인만 해둔 상태네요..
저 상태에서 IP 변경 부분을 domain.com으로 연결된 부분만 변경이 된다면 나머지는 따라가는듯 하더군요.
메인 도메인만 잘 변경되면 되니 이 방식이 맞는 것 같습니다. 답변 감사합니다!!
제가 사용하는 vains.com에서 배포한 걸 수정해서 사용하고 있는 DDNS IP 업데이트 스크립트입니다.
아이피가 변경되면 클라우드 플레어에 지정한 레코드의 IP를 업데이트 합니다.
스케쥴러에 등록해서 부팅시마다 확인을 하고 있습니다.
A_Record에 여러개를 넣어서 모두 업데이트가 가능합니다.
다만 저는 하나만 업데이트 하고 나머지는 CNAME으로 지정해서 사용하고 있습니다.
#!/bin/bash
### CloudFlare A Recoard Updater by varins.com
Login_Email=로그인 이메일주소
Global_API_Key=글로벌API키
Domain=도메인명(예:aaa.com)
A_Record=아이피를 넣을 A레코드(예:aaa.com,www.aaa.com)
Proxied=false
TTL=1
#IP 가져오기
CIP=$(curl -s "https://ipv4.icanhazip.com/")
if [ "$CIP" == "" ]; then
CIP=$(curl -s "http://ipv4.icanhazip.com/")
fi
#저장된 IP 불러오기
PIP=$(cat /usr/local/share/ip.txt)
echo -e "CloudFlare A Recoard Updater"
echo -e "Current IP: $CIP"
echo -e "Previous IP: $PIP"
#IP가 같을 경우 끝냄, 다를 경우 IP업데이트
if [ "$CIP" == "$PIP" ]; then
echo "No need to update"; exit 0
elif [ "$CIP" != "$PIP" ]; then
echo "Updating A recoard......"
fi
#IP 저장
echo $CIP > /usr/local/share/ip.txt
#CloudFlare
V4="https://api.cloudflare.com/client/v4/zones"
H1="-HX-Auth-Email:$Login_Email"
H2="-HX-Auth-Key:$Global_API_Key"
H3="-HContent-Type:application/json"
ZN=$(curl -s -X GET "$V4?name=$Domain" \
$H1 $H2 $H3 | grep -Po '(?<="id":")[^"]*' | head -1)
string=$A_Record
IFS=',' ARARY=(${string})
function AID() {
for AREC in "${ARARY[@]}"
do
(curl -s -X GET "$V4/$ZN/dns_records?name=$AREC" \
$H1 $H2 $H3 | grep -Po '(?<="id":")[^"]*' | head -1)
done
}
IFS=$'\n' AIDARY=($(AID))
ATOTAL=${#ARARY[*]}
for ((i=0; i<$ATOTAL; i++))
do
(curl -s -X PUT "$V4/$ZN/dns_records/${AIDARY[$i]}" $H1 $H2 $H3 \
--data "{\"type\":\"A\",\"name\":\"${ARARY[$i]}\",\"content\":\"$CIP\",\"proxied\":$Proxied,\"ttl\":$TTL}" \
| grep -Po '(?<="name":")[^"]*|(?<="content":")[^"]*|(?<=Z"},)[^}]*|(?<="success":false,)[^$]*|(?<=\s\s)[^$]*' | xargs)
done
추후 IP가 갱신되었는데 IP가 업데이트되지 않으면, 댓글로 주신 스크립트를 실행해 보겠습니다.
답변 정말 감사합니다!!

IP가 바뀌면 접속이 안될 거에요. (실제로 불가로 만들어도 테스트 해봄)
그래서 IP RENEW 하는 스크립트를 돌리시면 됩니다. 저도 이문제로 고민하다가 찾아보다가
발견하고 적용 해 보았는데 잘 더라구요. 클플 토큰은 기본적으로 발급 받으셔야 하구요.
https://www.wsgvet.com/home/451
https://techjourney.net/update-cloudflare-as-dynamic-dns-ddns/
그리고 클플 https://github.com/namukcom/SynologyCloudFlareDDNS 이건 만약 스케줄 하시다면
부팅시 한번만 트리거로 하시면 됩니다. IP RENEW 하는 스크립트는 스케줄로 돌리셔야 하구요.
5분 정도면 충분 할거에요.
좋은 정보 감사합니다! 덕분에 Github 소스의 스케줄과 A 레코드 관련 설정은 확실하게 맺었습니다!!
다만 시놀로지 내 DDNS 설정에서 Cloudflare의 외부 주소를 변경(LAN 포트 1)로 변경했을 때, 클플 대시보드에서 루트 도메인의 A 레코드 콘텐츠가 변경된 주소로 잘 바뀌어있던데, 이런 경우에도 IP Renew가 필요할까요...?

cmt alert