Sử dụng ứng dụng khách DNS động dd-wrt với CloudFlare


8

Tôi đang cố gắng định cấu hình máy khách DNS động trên bộ định tuyến của mình bằng phần mềm dd-wrt (v24-sp2) để nó tự động thay đổi địa chỉ IP trong một trong các bản ghi DNS. Thật không may, tôi gặp phải một vấn đề, đây là một yêu cầu ví dụ từ cấu hình ddclient của họ :

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

Nó hoạt động nếu tôi sử dụng nó trong trình duyệt, nhưng trong dd-wrt tôi nhận được kết quả này:

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

URL từ "Vị trí" hoạt động hoàn hảo và tham số "a" được bao gồm. Có vấn đề gì vậy?


Tôi không rõ những gì bạn đang cố gắng đạt được ở đây, bạn có thể rõ ràng hơn được không.
Chopper3

Tôi đang thử thay đổi Bản ghi trong CloudFlare bằng dịch vụ trong bộ định tuyến quản lý thay đổi địa chỉ IP và cập nhật thông tin tên miền một cách linh hoạt.
La Mã

Tôi có cùng một vấn đề nhưng tôi đã tìm thấy một cái gì đó có thể giúp chỉ cho chúng tôi đi đúng hướng. Nhập cùng một chuỗi URL trong wget thể hiện cùng một vấn đề nhưng firefox thì không.

Bạn đã bao giờ con số này ra?
bjtitus

Chưa, thật không may. Tôi đã viết một kịch bản python đơn giản và sử dụng nó để cập nhật IP thủ công.
La Mã

Câu trả lời:


9

Tôi không nghĩ rằng bạn có thể thiết lập nó ở nơi DD-WRT gọi trực tiếp CloudFlare. Cách tôi đã cấu hình là để DD-WRT gọi tập lệnh PHP trên máy chủ web từ xa, sau đó phát hiện IP của máy khách và gửi yêu cầu cập nhật tới CloudFlare thông qua API của chúng.

Cài đặt DDNS DD-WRT

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);

Thay vì sử dụng HTTP auth cơ bản, tôi chỉ sử dụng một khóa ngẫu nhiên.

Đảm bảo bạn tạo mục nhập DNS cho tên miền bạn muốn cập nhật trên CloudFlare; tham số hành động DIUP sẽ chỉ cập nhật IP cho mục nhập đã tồn tại.


2
Cảm ơn bạn đã gợi ý. Tôi đã phải sửa mã của bạn một chút vì nó không thể phát hiện chính xác địa chỉ IP của tôi. Tôi đã sử dụng mã từ câu trả lời này cho câu hỏi khác. Đây là kết quả - https://gist.github.com/3149751 .
La Mã

3

Nếu bạn muốn thực hiện cập nhật từ bộ định tuyến của mình thì không có gì phải lo ngại rằng bạn cần thêm một chút 'thứ gì đó' ở giữa để chuyển cuộc gọi của bạn sang định dạng CloudFlare (nếu chỉ DNS-O-Matic sẽ thêm chúng vào dịch vụ được hỗ trợ của họ ...). Thay vì phải tự lưu trữ một tập lệnh trung gian, bạn chỉ có thể sử dụng Google AppEngine (miễn phí) để thực hiện việc đăng lại này cho bạn. Tôi sử dụng cái này:

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

Được rồi, bạn vẫn phải gọi một cái gì đó ngoài CloudFlare để phát hành bản cập nhật nhưng ít nhất bạn không cần phải chạy thêm máy chủ hoặc VPS, v.v. để tự làm điều đó. Nó hoàn toàn minh bạch - chỉ có vấn đề là bạn không nhận được lỗi, vì vậy bạn cần tự kiểm tra xem nó có hoạt động không. Một khi nó hoạt động, nó chỉ nên chạy và chạy.


Tôi đã nhận được lỗi: Lỗi khi xác thực câu trả lời sND của DYNDNS. Kiểm tra usr, vượt qua, tên máy chủ! (Đã tìm thấy HTTP / 1.0 302
ayr-ton

1

Nhận thấy đây là tất cả lỗi thời và bây giờ yêu cầu mã api v4 để hoạt động.

đã thử nghiệm trên một lỗi - người dùng xấu, thông tin, thông tin xxxx.

xem xét phương pháp này https://github.com/ScottHelme/CloudFlareDDNS


0

Được quản lý để làm việc này bằng cách sử dụng này: https://github.com/dcerisano/Cloudflare-dynamic-dns

Khi bạn đã thiết lập tài khoản Cloudflare, thông tin cần thiết rất dễ xác định:

Bạn cần: ID khu vực

Khóa ủy quyền (còn gọi là khóa api toàn cầu)

ID bản ghi cho tên miền của bạn (điều này có được bằng cách chạy tập lệnh cloudflare-dns-id.sh) Tôi đã phải cắt bớt tập lệnh một chút để làm cho nó hoạt động ..

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 "Khóa X-Auth: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \ -H "Loại nội dung: application / json"

Tôi đã lưu trữ cả hai tập lệnh trong / jff làm cho chúng có thể thực thi được.

Về mặt Cloudflare của mọi thứ, tôi thiết lập theo hướng dẫn này chỉ cho các bản ghi tên miền 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- và-a-FritzBox

Tại Cloudflare, bạn phải thiết lập các bản ghi sau:

  • Loại: A | Tên: năng động | Giá trị: Đổi mạng IP IP của bạn *** ***

  • Loại: CNAME | Tên: hung yourdomain.xyz | Giá trị: năng động. Your yourdomain.xyz

  • Loại: CNAME | Tên: www | Giá trị: hung yourdomain.xyz

Tôi thiết lập một công việc định kỳ để chạy cloudflare-ddns.sh cứ sau 5 phút để kiểm tra các thay đổi IP.

Bộ định tuyến DD-WRT của tôi hiện tự động cập nhật Cloudflare bất cứ khi nào IP IP được thay đổi ...

Ở trên mất khoảng 10 phút để thiết lập.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.