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.