최근에 구글이 도메인사업을 철수 하면서..
저도 클라우드 플레어로 도메인 이전을 했습니다.
그런데 구글도 그렇고 클라우드플레어도 cname dns레코드에 루트도메인을
만들지 못하더군요..
가비아 쓸때야 cname에 루트도메인 입력이 가능해서 공유기 ddns를 연결 해놓으니 신경쓸일이 없었는데
다시 가비아로 가야하나 싶었는데...
클라우드 플레어가 도메인 연장 비용이 싸더군요......
그래서 a레코드를 만들어 놓으면 아이피가 항시 바뀌니 바뀔때마다 입력 해줄수도 없고 피곤하죠...
결론은 시놀로지 ddns서비스에서 클라우드플레어를 만들어 주시면 됩니다.
구글도메인은 시놀로지 ddns서비스에 있죠..
그런데 클라우드플레어는 cname에 루트도메인 쓸수 있게 해주는 cname평면화인가 서비스인가 있더군요..
전 이게 기본 제공인줄 알고 난왜 안되지 했는데 알고보니 유료 서비스 항목 이였더군요.
시놀로지 ssh로 접속해서 만들어 주는 과정인데 해보니 잘되더군요..
시놀로지 스케줄러에 아래 DDNS Updater를 주기적으로 실행하면 바로바로 변동된 IP 업데이트 됩니다....
스크립트가 실행 되면 아래와 같이 반영이 됩니다.
-------------------------------------------------------------------
작업 스케줄러가 예약 작업을 완료했습니다.
작업: DDNS Update
시작 시간: Sun, 04 Feb 2024 00:00:02 +0900
중지 시간: Sun, 04 Feb 2024 00:00:02 +0900
현재 상태: 0 (정상)
표준 출력/오류:
CloudFlare A Recoard Updater v1.0.9
Current IP: xxx.xxx.xxx.xxx
Previous IP: xxx.xxx.xxx.xxx
No need to update
-----------------------------------------------------------------------
작성할 sh스크립트는 아래와 같습니다.
아래 4개 변수값만 맞게 수정하심 되고요....
-------------------------------------------------------------------
Login_Email=CLOUDFLARE_EMAIL_ID
Global_API_Key=CLOUDFLARE_GLOBAL_API_KEY
Domain=DOMAIN
A_Record=A_RECORD주소
-------------------------------------------------------------------
#!/bin/bash
### CloudFlare A Recoard Updater
### A_Record : Separate the contents with commas (,)
### Proxied : true or false
### TTL : Between 120 and 2147483647 seconds, or 1 for automatic
### To force updating, run with -f
Login_Email=CLOUDFLARE_EMAIL_ID
Global_API_Key=CLOUDFLARE_GLOBAL_API_KEY
Domain=DOMAIN
A_Record=A_RECORD주소
Proxied=false
TTL=1
[ ! -f /var/tmp/ip.txt ] && touch /var/tmp/ip.txt
CIP=$(curl -s "https://ipv4.icanhazip.com/")
PIP=$(cat /var/tmp/ip.txt)
echo -e "CloudFlare A Recoard Updater v1.0.9"
echo -e "Current IP: $CIP"
echo -e "Previous IP: $PIP"
if [ "$CIP" == "$PIP" ] && [[ $1 != "-f" ]]; then
echo "No need to update"; exit 0
elif [[ $1 == "-f" ]]; then
echo "Force updating A recoard......"
elif [ "$CIP" != "$PIP" ]; then
echo "Updating A recoard......"
fi
echo $CIP > /var/tmp/ip.txt
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
https://gist.github.com/Tras2/cba88201b17d765ec065ccbedfb16d9a#file-cloudflare-ddns-update-sh
https://github.com/linuxserver/docker-ddclient