cloudflare에 ddns 업데이트 호출하려고 하는데 zone_identifier, identifier 정보는 어디에서 보는지 아실까요?
cloudflare로 ddns를 사용하려고 도메인을 이전 했습니다.
업데이트 API가 있어서 바로 호출해보려고 하는데 잘 안되서요.
호출한 API는 아래와 같습니다. (링크)
https://api.cloudflare.com/client/v4/zones/{zone_identifier}/dns_records/{identifier}
로 호출하는데 zone_identifier, identifier 정보를 정확히 알 수가 없어서요.
도메인 페이지 Overview에 있는 Zone ID, Account ID를 사용하면 되는걸까요?
요청 정보에 content에 아이피주소, name은 www 이렇게 보내고 있는데 404 Record does not exist.이 발생 합니다.
Curl로 하셨나요?
1. 404 오류는 요청한 데이터가 없거나 서버가 반응하고 싶지 않은경우입니다.
먼저 레코드 관련해서 설정을 한것을 업데이트 하는 방식을 사용하신것 같네요.
2. DNS레코드 관련은 아닙니다만, 혹시 참고 한번 해보실래요?
https://navystack.com/2023/12/클라우드플레어-무료-범용-인증서-인증기관-변경/
Overview에 있는거 사용하시면 됩니다.
API키는 새로 발급하셔서 하는 것을 권장드립니다.
다만 처음에 하실때는 모든 권한이 있는 걸로 연습 한번 해보시고 점점 권한을 제한해서 사용하세요 :)
3. Python이랑 PHP를 활용한 것도 있어요
시놀로지에 사용하려고 그리고 도메인을 10개 관리할 수 있도록 수정한 코드입니다.
https://github.com/NavyStack/SynologyCloudFlareDDNS-WithMultiple
언제 했는지 기억도 안나지만 Global API Key 발급하는것도 기록해 두었네요 ;;
이렇게 테스트 하고 있는데 잘 안되네요. ㅠ.ㅠ
name에는 full로 넣어도 보고 www만 넣어 보기도 했습니다.
curl --request PUT \
--url https://api.cloudflare.com/client/v4/zones/83r8yr38f3hfe83rhfwe/dns_records/8tefhef8efhufe \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer e9fe9jefj9efj9efef' \
--data '{
"content": "21.17.19.19",
"name": "www",
"proxied": false,
"type": "A",
"comment": "Domain verification record",
"tags": [
"owner:dns-team"
],
"ttl": 3600
}'
도메인 이관 하려고 하는데 쉽지 않네요.
- API 키 및 이메일 획득
- 존 ID 찾기
- 기존 A 레코드의 ID 찾기
- DNS 레코드 업데이트
curl -X GET "https://api.cloudflare.com/client/v4/zones?name=[업데이트할 도메인]" \
-H "X-Auth-Email: [나의 이메일]" \
-H "X-Auth-Key: [나의 api key]" \
-H "Content-Type: application/json"
3. 레코드 ID는 존 ID를 사용하여 조회할 수 있습니다.
curl -X GET "https://api.cloudflare.com/client/v4/zones/[업데이트할 도메인의 Zone ID]/dns_records?type=A&name=[업데이트할 도메인]" \
-H "X-Auth-Email: [나의 이메일]" \
-H "X-Auth-Key: [나의 api key]" \
-H "Content-Type: application/json"
현재 타입 A로 되어있습니다. 확인하세요
위의 결과로
{"result":{"id":"xxxxxxxxxxxxxxxxxxxxxxxxxxx","
이런식으로 시작하는 id가 나옵니다.
4. 레코드 ID를 찾았으니 업데이트 합니다.
curl -X PUT "https://api.cloudflare.com/client/v4/zones/[업데이트할 도메인의 Zone ID]/dns_records/[업데이트할 도메인의 레코드 ID]" \
-H "X-Auth-Email: [나의 이메일]" \
-H "X-Auth-Key: [나의 api key]" \
-H "Content-Type: application/json" \
--data '{"type":"A","name":"[업데이트할 도메인]","content":"[업데이트할 A레코드]","ttl":1,"proxied":false}'
도움 되셨으면 좋겠네요.
가끔.... 클라우드 플레어 문서가 실제 상황과 다르거나, 조금 부실한 경향이 있더라구요... ㅠㅠ
답변 감사합니다.
엄청 삽질을 했네요. ㅠ.ㅠ
함 해보고 결과 공유 하겠습니다.
WebUI에 없거나, 짱박혀 있을 가능성이 높습니다.
제 블로그 글인 무료 범용 에지 인증서 변경도 WebUI에서는 못찾겠어서 문서 뒤집은거라서요... ㅎㅎ
혹시 새로 추가하는거라면 POST로 집어넣으시면 됩니다.
제가 삽질한건 Overview에 있는 zone id는 동일한데 도메인의 Account ID가 다르네요.
서브도메인(www)의 id는 별도로 조회를 해야 하는것으로 보입니다.
그래서 www의 identifier를 조회 해서 업데이트를 하니 제대로 업데이트가 됩니다.
NavyStack 님 다시 한번 감사드립니다.
넵 레코드별로 ID가 다릅니다.
한 도메인 내에 같은 A레코드라도 특정해서 찝어서 수정할 수 있거든요.
제가 설명이 부족했나봅니다 ㅎㅎ
도움 되셨다니 다행입니다 :)
늘 시간이 부족하다는 핑계를 대봅니다 :)
cmt alert