CloudFlare와 함께 dd-wrt 동적 DNS 클라이언트 사용


8

dd-wrt (v24-sp2) 펌웨어를 사용하여 라우터에서 동적 DNS 클라이언트를 구성하려고하므로 DNS 레코드 중 하나에서 IP 주소를 동적으로 변경합니다. 불행히도 문제가 발생했습니다 ... 다음은 ddclient 구성의 요청 예입니다 .

https://www.cloudflare.com/api.html?a=DIUP&u=<my_login>&tkn=<my_token>&ip=<my_ip>&hosts=<my_record> 

브라우저에서 사용하면 작동하지만 dd-wrt 에서이 출력을 얻습니다.

Tue Jan 24 00:36:47 2012: INADYN: Started 'INADYN Advanced version 1.96-ADV' - dynamic DNS updater. 
Tue Jan 24 00:36:47 2012: I:INADYN: IP address for alias '<my_record>' needs update to '<my_ip>' 
Tue Jan 24 00:36:48 2012: W:INADYN: Error validating DYNDNS svr answer. Check usr,pass,hostname! (HTTP/1.1 303 See Other 
Server: cloudflare-nginx 
Date: Mon, 23 Jan 2012 14:36:48 GMT 
Content-Type: text/plain 
Connection: close 
Expires: Sun, 25 Jan 1981 05:00:00 GMT 
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Pragma: no-cache 
Location: https://www.cloudflare.com/api.html?a=DIUP&u=<my_login>&tkn=<my_token>&ip=<my_ip>&hosts=<my_record> 
Vary: Accept-Encoding 
Set-Cookie: __cfduid=<id>; expires=Mon, 23-Dec-2019 23:50:00 GMT; path=/; domain=.cloudflare.com 
Set-Cookie: __cfduid=<id>; expires=Mon, 23-Dec-2019 23:50:00 GMT; path=/; domain=.www.cloudflare.com 

You must include an `a' paramiter, with a value of DIUP|wl|chl|nul|ban|comm_news|devmode|sec_lvl|ipv46|ob|cache_lvl|fpurge_ts|async|pre_purge|minify|stats|direct|zone_check|zone_ips|zone_errors|zone_agg|zone_search|zone_time|zone_grab|app|rec_se

"Location"의 URL이 완벽하게 작동하고 "a"매개 변수가 포함됩니다. 뭐가 문제 야?


여기서 달성하려는 것이 확실하지 않습니다.보다 명확하게 말씀해 주시겠습니까?
Chopper3

변경되는 IP 주소를 관리하고 도메인 정보를 동적으로 업데이트하는 라우터의 서비스를 사용하여 CloudFlare의 레코드를 변경하려고합니다.
로마

나는 같은 문제가 있지만 올바른 방향으로 우리를 지적하는 데 도움이 될만한 것을 발견했습니다. wget에 동일한 URL 문자열을 입력하면 동일한 문제가 발생하지만 firefox는 그렇지 않습니다.

이것을 알아 낸 적이 있습니까?
bjtitus 2016 년

아직 안타깝게도 간단한 파이썬 스크립트를 작성하고 수동으로 IP를 업데이트하는 데 사용했습니다.
로마

답변:


9

DD-WRT가 CloudFlare를 직접 호출하는 곳에 설정할 수 있다고 생각하지 않습니다. 내가 구성한 방법은 원격 웹 서버에서 DD-WRT가 PHP 스크립트를 호출하도록하는 것입니다. 그러면 클라이언트 IP를 감지하고 API를 통해 업데이트 요청을 CloudFlare로 보냅니다.

DD-WRT DDNS 설정

DDNS Service: Custom
DYNDNS Server: <yourserver.com>
Username: <anything>
Password: <anything>
Host Name: <your domain name to update on cloudflare>
URL: /cloudflare_update.php?key=<your secret key>&hostname=

cloudflare_update.php

if(empty($_GET['key']) || ($_GET['key'] != "<your secret key>")) die;
$hostname = $_GET['hostname'];
$ip = $_SERVER['REMOTE_ADDR'];
$username = "<yourcloudflareusername@email.com>";
$api = "<your cloudflare api key>";
$curl = "https://www.cloudflare.com/api_json.html?a=DIUP&hosts=$hostname&u=$username&tkn=$api&ip=$ip";
$ch = curl_init($curl);
curl_exec($ch);
curl_close($ch);

HTTP 기본 인증을 사용하는 대신 임의의 키를 사용합니다.

CloudFlare에서 업데이트하려는 도메인 이름에 대한 DNS 항목을 생성해야합니다. DIUP 조치 매개 변수는 이미 존재하는 항목의 IP 만 업데이트합니다.


2
제안 해 주셔서 감사합니다. 내 IP 주소를 올바르게 감지하지 못하여 코드를 약간 수정해야했습니다. 이 답변의 코드 를 다른 질문에 사용했습니다. 다음은 결과입니다 - https://gist.github.com/3149751 .
로마

3

라우터에서 업데이트를 실행하려는 경우 통화를 CloudFlare 형식으로 변환하기 위해 중간에 약간의 '무언가'가 필요하다는 사실을 알 수 없습니다 (DNS-O-Matic만이 추가 할 경우 지원되는 서비스 ...). 중간 스크립트를 직접 호스팅하지 않고 Google AppEngine (무료)을 사용하여 다시 게시 할 수 있습니다. 나는 이것을 사용한다 :

https://cloudflare-updater.appspot.com/

그래도 업데이트를 발행하기 위해 CloudFlare 이외의 다른 것을 호출해야하지만 적어도 직접 호스트 나 VPS 등을 실행할 필요는 없습니다. 그것은 완전히 투명합니다-유일한 문제는 오류가 반환되지 않으므로 스스로 작동하는지 확인해야한다는 것입니다. 일단 작동하면 실행하고 실행해야합니다.


DYNDNS svr 응답을 확인하는 동안 오류가 발생했습니다. usr, pass, hostname을 확인하십시오! (HTTP / 1.0 302 Found
ayr-ton


0

https://github.com/dcerisano/Cloudflare-dynamic-dns를 사용 하여이 작업을 수행하도록 관리했습니다.

Cloudflare 계정을 설정하면 필요한 정보를 쉽게 찾을 수 있습니다.

필요한 것 : 존 ID

인증 키 (일명 글로벌 API 키)

도메인의 레코드 ID (cloudflare-dns-id.sh 스크립트를 실행하여 얻음) 스크립트를 약간 잘라서 작동하도록했습니다 ..

curl -X GET " https://api.cloudflare.com/client/v4/zones/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/dns_records?type=A&name=dynamic "\ -H "X-Auth-Email : you@youremail.com"\ -H "X-Auth-Key : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"\ -H "콘텐츠 유형 : application / json"

두 스크립트를 모두 / jffs에 저장하여 실행 가능하게 만들었습니다.

Cloudflare 측면에서이 가이드에 따라 Cloudflare 도메인 레코드에 대해서만 설정했습니다.

https://support.opendns.com/hc/en-us/community/posts/115000937008-How-to-set-up-DNS-O-MATIC-for-Cloudflare-and-the-other-way-around- 그리고 프리츠 박스

Cloudflare에서 다음 레코드를 설정해야합니다.

  • 유형 : A | 이름 : 동적 | 값 :“귀하의 WAN IP”***

  • 유형 : CNAME | 이름 :“yourdomain.xyz”| 값 : dynamic.”yourdomain.xyz”

  • 유형 : CNAME | 이름 : www | 값 :“yourdomain.xyz”

IP 변경을 확인하기 위해 5 분마다 cloudflare-ddns.sh를 실행하도록 cron 작업을 설정했습니다.

내 DD-WRT 라우터는 WAN IP가 변경 될 때마다 Cloudflare를 자동으로 업데이트합니다.

위의 설정에는 약 10 분이 소요됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.