Linux의 Cloudflare DDNS

1. 선택한 DNS 영역에 대한 My profile → API Tokens → Create Token 권한으로 Zone.DNS에서 토큰을 생성합니다.*

하나의 하위 도메인만 선택할 수 없으며 토큰에는 모든 DNS 항목을 변경할 수 있는 권한이 있습니다.

2. 다음 스크립트를 사용하여 서버에서 DNS 항목을 자동으로 업데이트하고 /usr/local/bin/ddns로 저장합니다.

#!/bin/bash

# Check for current external IP
IP=`dig +short txt ch whoami.cloudflare @1.0.0.1| tr -d '"'`

# Set Cloudflare API
URL="https://api.cloudflare.com/client/v4/zones/DNS_ZONE_ID/dns_records/DNS_ENTRY_ID"
TOKEN="YOUR_TOKEN_HERE"
NAME="DNS_ENTRY_NAME"

# Connect to Cloudflare
cf() {
curl -X ${1} "${URL}" \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer ${TOKEN}" \
      ${2} ${3}
}

# Get current DNS data
RESULT=$(cf GET)
IP_CF=$(jq -r '.result.content' <<< ${RESULT})

# Compare IPs
if [ "$IP" = "$IP_CF" ]; then
    echo "No change."
else
    RESULT=$(cf PUT --data "{\"type\":\"A\",\"name\":\"${NAME}\",\"content\":\"${IP}\"}")
    echo "DNS updated."
fi


3. crontab에 스크립트를 추가하여 1분마다 실행되도록 합니다.

# crontab -e



* * * * * /usr/local/bin/ddns > /dev/null 2>&1

좋은 웹페이지 즐겨찾기