标题: 巧用curl代替ez-ipupdate更新动态dns[zt]
以前在我的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]相关推荐
- curl获取站点的各类响应时间(dns解析时间,响应时间,传输时间)
有时候为了测试网络情况,需要返回每个阶段的耗时时间,比如DNS解析耗时,建立连接所消耗的时间,从建立连接到准备传输所使用的时间,从建立连接到传输开始所使用的时间,整个过程耗时,下载的数据量,下载速度, ...
- 利用Dnspod api批量更新添加DNS解析【python脚本】 - 推酷
利用Dnspod api批量更新添加DNS解析[python脚本] - 推酷 利用Dnspod api批量更新添加DNS解析[python脚本] - 推酷 undefined posted on 20 ...
- DO447管理高级清单--创建和更新动态清单
DO447管理高级清单–创建和更新动态清单
- 解决网站更新之巧借QQ弹窗实现网站更新
网站更新是网站发展的前提,只有不断更新才能不断获得流量和人气,一些站长不知道去哪里找话题,也就无法天天更新,他们到处去找话题,始终无法找到适合网站更新的内容,其实完全不必要到处去,只需要借助QQ弹窗, ...
- PHP也玩并发,巧用curl 并发减少后端访问时间
说明:本人源自3篇博文 http://blog.csdn.net/zuiaituantuan/article/details/7048782 首先,先了解下 php中的curl多线程函数: # cur ...
- 【无标题】微信小程序:强制更新(测试编译)
如图,当小程序发布新的版本后,用户如果之前访问过该小程序,通过已打开的小程序进入(未手动删除),则会弹出这个提示,提醒用户更新新的版本.用户点击确定就可以自动重启更新,点击取消则关闭弹窗,不再更新. ...
- 巧用 Curl 命令测试 Unix Socket 接口
公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 经常遇到一些监听地址不是 IP:Port 而是 Unix Socket 的程序,这些程序如果使用的是 HTTP 协 ...
- 使用shell脚本自动更新动态域名
背景 开发服务器放在公司内网,但需要从外网可以随意访问.而公司是通过拨号,因此IP不能固定. 传统的做法是:在路由器上将DDNS帐号密码填上去,然后就可以不管了.但这需要DDNS服务提供商,一般大型靠 ...
- 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域名是通的. ...
最新文章
- [ Luogu 4626 ] 一道水题 II
- 使用 Boost.Math 计算 Jacobi Zeta 函数的简单示例, 并使用相应的 WolframAlpha 命令
- 7、Flutter banner_view 轮播图的使用
- LeetCode 69. x 的平方根(二分查找)
- 如何正确的停掉线程?这里面大有门道!
- AndroidStudio安卓原生开发_SwipeRefreshLayout_下拉刷新控件---Android原生开发工作笔记119
- 亲密关系沟通-【唤起亲密】-在平淡关系中创造高质量沟通
- postgresql授权和撤销
- 6.18-GTest
- MySQL实验作业_数据库实验四作业及答案
- 颜色表大全 颜色中英文对照表
- 一款黑科技神器:uTools
- Linux系统:基本开发工具
- 2021年电工(初级)考试资料及电工(初级)考试技巧
- android 自定义menu菜单按键功能
- C虾仔笔记 - ScrollView垂向滚动视图
- 电信流量卡代理月入过万,怎么做到的?
- 实验十八 CISCO设备IOS的备份与升级
- VMware® Workstation 16 Pro创建WIN7虚拟机教程
- win10“网络属性”选项卡空白怎么办