标题: 巧用curl代替ez-ipupdate更新动态dns



以前在我的FC3上一直用www.3322.org上提供的ez-ipupdate做动态dns,解析家里因拨号不断改变的机器ip地址,没什么问题
但自从我昨天把机器升到FC6后,问题来了
一开始也没注意,后来想从公司远程登录主机发现死活登不上,dns解析出的地址不对
郁闷了一天,回到家发现貌似FC6新的LIBC和ez-ipupdate用的老的有些不兼容,运行失败

于是从3322.org上下了源码本来想自己编译,没想到居然编译也通不过
再仔细一看代码,原来这东西用的http协议,极其简单,curl即可代替

高兴之余,特此把经验拿来给大家分享:

ez-ipupdate被我放在/etc/ppp/ip-up.local里执行,每次PPPoE拨号上去就自动更新dns:
代码:/usr/local/bin/ez-ipupdate -i ppp0 -h myhost.3322.org -S qdns -u user:pass现在只要改成
代码:curl -su user:pass 'http://members.3322.org/dyndns/update?system=dyndns&hostname=myhost.3322.org' &> /dev/null &即可发送http包给3322.org的服务器,更新dns记录

-s是silence,不产生进度条等没用的输出
-u是http认证用户名密码
&> /dev/null &把所有输出扔掉并在后台运行,这样不浪费启动时间
url里的值都不要改,否则服务器可能会不认,除了最后一个hostname=myhost.3322.org改成自己的

其实wget也可以用来做这个,我已经用了curl就不高兴研究了,有兴趣的可以看看man wget,命令格式应该差不多

http://www.linuxsir.org/bbs/showthread.php?t=291951

我是这样解决的:

不用ez-ipupdate;

改用:
fetch "http://username:password@members.3322.org/dyndns/update?system=dyndns&hostname=yourhost.ourdomain.ext&myip=ipaddress&wildcard=OFF"

username
password
yourhost.ourdomain.ext

这里不要忘记改成自己的啊!

再把这条命令写进cron,定时执行就行了。

希网动态域名——相关协议 Client的请求应该使用HTTP/1.0以上协议,Server的相应一定为HTTP/1.0

支持HTTP和基于SSL的HTTPS协议

需要事务处理,Client发送完整的请求,并且解析服务器端的相应,保证域名更新的成功

1. 通过URL认证 (所有的在一行)
http://username:password@members.3322.org/dyndns/update?system=dyndns&hostname=yourhost.ourdomain.ext&myip=ipaddress&wildcard=OFF
&mx=mail.exchanger.ext&backmx=NO&offline=NO

2. HTTP GET 请求
1) dyndns, statdns
GET /dyndns/update?system=statdns&hostname=yourhost.ourdomain.ext
&myip=ipaddress&wildcard=OFF&mx=mail.exchanger.ext&backmx=NO
&offline=NO HTTP/1.1
Host: members.3322.org
Authorization: Basic username:pass
(note: username:pass must be encoded in base64)
User-Agent: myclient/1.0 me@null.net

2) webhop
GET /dyndns/update?system=webhop&hostname=yourhost.ourdomain.ext&url=dest_url
&title=cloak_title&cloak=cloak HTTP/1.1
Host: members.3322.org
Authorization: Basic username:pass
(note: username:pass must be encoded in base64)
User-Agent: myclient/1.0 me@null.net

3) subdom
GET /dyndns/update?system=subdom&hostname=yourhost.ourdomain.ext&ip1=address1&ip2=address2 HTTP/1.1
Host: members.3322.org
Authorization: Basic username:pass
(note: username:pass must be encoded in base64)
User-Agent: myclient/1.0 me@null.net

username:password System:All Optional: No
用户名和密码用来登录

system=dyndns|statdns|webhop|subdom System:All Optional: Yes
只能使用二者之一,否则出错。如果没有这个参数,缺省是dyndns
(webhop, subdomain只能使用web更新,而用户自己的域名(3322.org的custom方式)
可以归并到现有的四种方式)

hostname=host.3322.org System:All Optional: No
需要更新的域名

myip=ipaddr System:All Optional: Yes
域名对应的IP。如果不指定,则服务器将选择最佳的IP(一些Proxy会传递客户端的IP,
这会被服务器检测到)。如果传递的地址格式错误,则忽略这个参数,而用服务器检测
到的IP。

wildcard=ON|OFF System:DynDNS, StatDNS Optional: Yes
是否支持通配符,缺省为OFF。ON意为着 *.host.3322.org等同于host.3322.org

mx=mailexchanger System:DynDNS, StatDNS Optional: Yes
指明Mail eXchanger。必须能够解析到一个IP,否则被忽略。如果不提供该参数或者
不能解析到一个IP,mx记录会被删除。

backmx=YES|NO System:DynDNS, StatDNS Optional: Yes
指明前面的mx参数会被设置成备份邮件服务器,即邮件会首先发送到你的机器上,如果
不成功,才会发送到备份邮件服务器上。

offline=YES|NO System:DynDNS Optional: Yes
使域名暂时失效。

url=dest_url System:WebHop Optional: No
webhop指向的URL地址

cloak=YES|NO System:WebHop Optional: Yes
指明webhop时是否使用frame,将转向的url包装起来。缺省是YES

title=cloak_title System:WebHop Optional: Yes
cloak时,frame的标题。缺省是 "Bentium DynDns System"

ip1=address1 System:SubDom Optional: YES
第一个域名服务器的IP地址,必须是正确的IP。如果不指定,则服务器将选择最佳的IP
(一些Proxy会传递客户端的IP, 这会被服务器检测到)。如果传递的地址格式错误,
则忽略这个参数,而用服务器检测到的IP。

ip2=address2 System:SubDom Optional: YES
第二个域名服务器的IP地址,必须是正确的IP

返回码
http://www.3322.org/dyndnspage/codes.html
http://www.3322.org/dyndnspage/protocol.html

安装成功之后编辑 /etc/crontab 文件

vi /etc/crontab

加入

*/5 * * * * /usr/local/bin/lynx -mime_header -auth=username:password "http://www.3322.org/dyndns/update?system=dyndns&hostname=your.3322.org"

目的就是每 5 分钟自动更新一次 ip,username 与 password
分别为你在 3322.org 所注册的用户名与密码,your.3322.org
就是你所注册的 3322.org 域名。

标题: 用lynx实现3322动态域名指向[原创]



其实这是个老话题了,重复一下

适用于类Unix平台,已经在Gentoo Linux和FreeBSD上测试通过。

软件需求:
1、lynx
2、cron (各种cron都可以,此处以linux vixie-cron 和 freebsd 默认cron为例)
3、一个用来测试的web服务器,如apache。
4、系统能访问internet,也能被外网访问(不考虑防火墙)。

详细步骤:
1、建立一个文本文件,如3322.org,输入以下东西
代码:*/5 * * * * /PATH/TO/lynx -mime_header -auth=ACC:PASS "http://www.3322.org/dyndns/update?system=dyndns&hostname=MYDOMAIN.3322.org&mx=MYMAIL.3322.org"红色文字表示需要根据你的实际情况设定。描述如下:
a、5表示每隔5分钟更新一下
b、/PATH/TO/lynx 指 lynx的位置,FreeBSD下常在 /usr/local/bin/lynx
c、ACC:PASS 指你在3322.org上注册的用户名和密码。
d、MYDOMAIN指你在3322.org上设立的域名记录(域名)。
e、MYMAIL指你在3322.org上设置的mx邮件记录。

2、运行crontab,载入cron信息:
代码:$ crontab 3322.org
$ crontab -l //查看下是否已经载入,若有以下内容,说明成功。
*/5 * * * * /PATH/TO/lynx -mime_header -auth=ACC:PASS "http://www.3322.org/dyndns/update?system=dyndns&hostname=MYDOMAIN.3322.org&mx=MYMAIL.3322.org"如果要清空cron table ,可以用 crontab -r 命令。

3、过5分钟后,测试
代码:$ ping MYDOMAIN.3322.org //若能正确显示ip,则成功
$ host -t mx MYDOMAIN.3322.org //若有类似如下显示,则成功
MYDOMAIN.3322.org mail is handled by 10 MYMAIL.3322.org.4、用浏览器测试你的MYDOMAIN.3322.org指向的web服务器页面。

转载于:https://blog.51cto.com/axlrose/1292876

标题: 巧用curl代替ez-ipupdate更新动态dns[zt]相关推荐

  1. curl获取站点的各类响应时间(dns解析时间,响应时间,传输时间)

    有时候为了测试网络情况,需要返回每个阶段的耗时时间,比如DNS解析耗时,建立连接所消耗的时间,从建立连接到准备传输所使用的时间,从建立连接到传输开始所使用的时间,整个过程耗时,下载的数据量,下载速度, ...

  2. 利用Dnspod api批量更新添加DNS解析【python脚本】 - 推酷

    利用Dnspod api批量更新添加DNS解析[python脚本] - 推酷 利用Dnspod api批量更新添加DNS解析[python脚本] - 推酷 undefined posted on 20 ...

  3. DO447管理高级清单--创建和更新动态清单

    DO447管理高级清单–创建和更新动态清单

  4. 解决网站更新之巧借QQ弹窗实现网站更新

    网站更新是网站发展的前提,只有不断更新才能不断获得流量和人气,一些站长不知道去哪里找话题,也就无法天天更新,他们到处去找话题,始终无法找到适合网站更新的内容,其实完全不必要到处去,只需要借助QQ弹窗, ...

  5. PHP也玩并发,巧用curl 并发减少后端访问时间

    说明:本人源自3篇博文 http://blog.csdn.net/zuiaituantuan/article/details/7048782 首先,先了解下 php中的curl多线程函数: # cur ...

  6. 【无标题】微信小程序:强制更新(测试编译)

    如图,当小程序发布新的版本后,用户如果之前访问过该小程序,通过已打开的小程序进入(未手动删除),则会弹出这个提示,提醒用户更新新的版本.用户点击确定就可以自动重启更新,点击取消则关闭弹窗,不再更新. ...

  7. 巧用 Curl 命令测试 Unix Socket 接口

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 经常遇到一些监听地址不是 IP:Port 而是 Unix Socket 的程序,这些程序如果使用的是 HTTP 协 ...

  8. 使用shell脚本自动更新动态域名

    背景 开发服务器放在公司内网,但需要从外网可以随意访问.而公司是通过拨号,因此IP不能固定. 传统的做法是:在路由器上将DDNS帐号密码填上去,然后就可以不管了.但这需要DDNS服务提供商,一般大型靠 ...

  9. curl php 禁用ip6,CentOS 6禁用IPv6解决curl Couldn’t resolve host或dns解析慢

    说明: 在使用curl获取某接口时会curl: (6) Couldn't resolve host 'www.coolnull.com'.奇葩的是ping www.coolnull.com域名是通的. ...

最新文章

  1. [ Luogu 4626 ] 一道水题 II
  2. 使用 Boost.Math 计算 Jacobi Zeta 函数的简单示例, 并使用相应的 WolframAlpha 命令
  3. 7、Flutter banner_view 轮播图的使用
  4. LeetCode 69. x 的平方根(二分查找)
  5. 如何正确的停掉线程?这里面大有门道!
  6. AndroidStudio安卓原生开发_SwipeRefreshLayout_下拉刷新控件---Android原生开发工作笔记119
  7. 亲密关系沟通-【唤起亲密】-在平淡关系中创造高质量沟通
  8. postgresql授权和撤销
  9. 6.18-GTest
  10. MySQL实验作业_数据库实验四作业及答案
  11. 颜色表大全 颜色中英文对照表
  12. 一款黑科技神器:uTools
  13. Linux系统:基本开发工具
  14. 2021年电工(初级)考试资料及电工(初级)考试技巧
  15. android 自定义menu菜单按键功能
  16. C虾仔笔记 - ScrollView垂向滚动视图
  17. 电信流量卡代理月入过万,怎么做到的?
  18. 实验十八 CISCO设备IOS的备份与升级
  19. VMware® Workstation 16 Pro创建WIN7虚拟机教程
  20. win10“网络属性”选项卡空白怎么办

热门文章

  1. 【转】各种License介绍
  2. 2019年,中国顶尖名校毕业生都去哪儿了?
  3. 电商大数据 API接口 数据挖掘 淘宝拼多多京东1688数据抓取
  4. #python 坐标转换 以CGCS2000转WGS84为例
  5. Echarts数据转换transform
  6. 开源一个代码画板工具
  7. 【反欺诈】浅析新形势下反保险欺诈举措
  8. js mysql date format,将MySql DateTime戳记转换为JavaScript的Date格式
  9. c语言编写虚拟光驱软件下载,Daemon Tools
  10. 【uniApp 个推推送功能】