惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Blog — PlanetScale
Blog — PlanetScale
Y
Y Combinator Blog
G
Google Developers Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
L
LangChain Blog
S
SegmentFault 最新的问题
J
Java Code Geeks
V
Visual Studio Blog
H
Help Net Security
Stack Overflow Blog
Stack Overflow Blog
aimingoo的专栏
aimingoo的专栏
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
Tailwind CSS Blog
Microsoft Azure Blog
Microsoft Azure Blog
博客园_首页
H
Hackread – Cybersecurity News, Data Breaches, AI and More
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - Franky
B
Blog RSS Feed
The Cloudflare Blog
MyScale Blog
MyScale Blog
月光博客
月光博客
Microsoft Security Blog
Microsoft Security Blog
美团技术团队

方永、南天紫雲

linux透明代理 技术的边界 停机问题通俗说明 Rust与oracle、redis集群的纠结 学习能力的增长 微信调试的原语 mac外接移动硬盘安装ArchLinux linux的死机问题 linux下全键盘操作 漂亮又好用的bspwm linux本机透明代理 ssh、mosh、autossh linux不能待机又一例 从WordPress切换到Hugo 折腾电脑开机 linux系统QQ新思路 Arch Linux的字体渲染 svn管理之submin OpenWrt自动fucking墙記錄 二维码(qrcode)名片的一些事儿 用lua nginx module搭建一个二维码(qr code)生成器 CentOS 7 安裝註記 php程序連接MySQL时只能127.0.0.1而localhost無法連接的問題 ThinkPad之FAN_ERROR、hi fi聲卡 jetty多端口部署 OpenWrt簡單暴力限網 linux中cron之PATH变量 OpenWrt的WDS無線橋接模式 再敘OpenWrt下的rtl8187無線中繼 sed之模擬tail
OpenWrt使用dnspod的动态域名解析(ddns)功能
zola · 2012-06-10 · via 方永、南天紫雲

折腾了一下,在OpenWrt里用上了dnspod的ddns。

缘起:前俩天看到dnspod开源了他们的dns服务器软件,虽然以前也注册了,但没怎么用,这次看了dnspod的轶事,以及官网上对免费用户的大度,全开放的特性,完善的用户API及文档,较之于花生辣椒之类果然有大家风范,另一个原因就是之前一直用3322,3322只支持电信线路,偶尔会用移动的网,这个真伤不起。

先在dnspod.cn注册个帐户,然后添加域名,这个域名当然得自己买,一些后缀的域名也不贵,我就用上了之前基本上闲置的一个域名,记得在域名注册商那里把DNS服务器改为dnspod的,再在这个域名下添加一个子域的A记录,然后用api查询这个记录的id,和下面cron中的命令基本一致,只是将api换成Record.List。具体去看dnspod官网的pdf说明吧。再将之前添加的A记录的id替换到下面cron中命令的record_id项。

首先安装curl或者wget,然后在luci中加入计划任务ddns,若没有luci则crontab -e加入如下内容:

\*/15 * * * *  curl –cacert /etc/ssl/cacert.pem -A “sddns/0.0.1([email protected])” -d “login_email=xxxx@xxxx&login_password=xxxxxxx&format=json&error_on_empty=no” -d “domain_id=9999999&record_id=99999sub_domain=openwrt&record_line=默认” https://dnsapi.cn/Record.Ddns

上面curl的–cacert选项指定CA证书文件,内容如下:

Equifax Secure CA
=================
—–BEGIN CERTIFICATE—–
MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE
ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT
B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB
nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR
fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW
8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAG
A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UE
CxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoG
A1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvS
spXXR9gjIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMB
Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAFjOKer89961
zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y7qj/WsjTVbJmcVfewCHrPSqnI0kB
BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95
70+sB3c4
—–END CERTIFICATE—–

其它的根证书可wget http://curl.haxx.se/ca/cacert.pem 下载。 -A选项指定客户端类型,一定如上面的格式。

-d选项指定post数据,一个-d选项指定了基本的参数,登录帐号密码之类,第二个-d选项指定了Record.Ddns这个api所需的参数。

最终应该是在重启OpenWrt之后cat /etc/crontabs/root能看到上面的内容。

呃,整理了一下,做了个ipk包出来: 下载最新版 以下是简介及更新说明,更详细的使用说明请看这里

sddns,dnspod ddns client for OpenWrt.

sddns是OpenWrt下面dnspod的动态域名更新的客户端。有如下特点:

  1. 使用posix兼容shell语法,能够运行在包括OpenWrt、DDwRT等嵌入式及其它linux/UNIX甚至Windows操作系统上。
  2. 代码短小精悍,符合dnspod API开发规范。0.0.6版本100行左右,在IP未发生变化时,只执行一次curl来检测IP,并不向dnspod提交任何数据。低碳环保 ^_^ 。
  3. 采用MIT开源协议,可轻易地获得源代码。

配置文件(/etc/config/sddns):

config base_arg
option 'login_email' '[email protected]'   #登录邮箱
option 'login_password' 'ccdd'  #登录密码
option 'main_domain' 'baidu.com'  #域名,形如"baidu.com"
option 'sub_domain' 'xx' #主机记录,形如"xx.baidu.com"
 
# 下面这个区域不需做任何配置,sddns会存放一些临时数据,如果更改了上面的域名与主机记录,删除下面区域中的"xxx_id"项
 
config tmp_arg
# ssl cacert file or directory
option 'cacert' '/etc/ssl/cacert.pem'   # 证书文件位置,默认不用修改

sddns 2012年8月25日更新:

配置文件中增加一项”net_ip”,这个地址用来获取外部IP地址的,即”curl xxx.com”返回的是当前设备的公网IP,默认是 netip.sinaapp.com,是新浪的SAE,ping值小。

添加”net_ip”的目的是减少dnspod的资源消耗,至少会减小日志文件的大小,虽然从netip取公网IP消耗了一定的资源,但取公网IP的PHP代码本身很少,而且这个netip可以更换,若n*个ddns同时运行,这个分流效果还是明显的。

2012年9月5日更新:

“/etc/config/sddns”配置文件中 option 'net_ip' 'ifconfig.me' 更改为 option 'wlan_ip' 'ifconfig.me'

2012年9月22日更新:

分析外网IP的sed语句重写,更健壮。

2012年10月16日更新:

0.0.6版本发布。

OpenWrt部分继续优化,现在已支持linux/FreeBSD,配置文件为$HOME/.sddnsrc/etc/sddns.conf ,前者的优先级高于后者。格式如下:

[email protected]
login_password=xxxxxxxxx
main_domain=baidu.com
sub_domain=me
wanip=c.lexun.com/ip

2013年05月09日更新:

0.0.7版本發布。

修正OpenWrt版本在12.09以上時,functions.sh目錄調整問題。

2013年06月08日更新:

0.0.8版本發佈。

此版本與之前的版本有些不同,沒有使用OpenWrt的配置文件解析庫,故是一個高度兼容的版本,可以運行在OpenWrt、dd-Wrt、general linux、FreeBSD上,而只依賴wget、POSIX shell、sed。(注意,busybox的wget不支持https,故無法使用)詳情請穿越到此。

2013年08月02日更新:

0.0.9版本发布。

更多请移步至此。

本文不再更新,更多請看這裏。