闲情逸致 http://EZ38.com
分类: LINUX
2010-03-05 16:19:06
以前在我的FC3上一直用上提供的ez-ipupdate做动态dns,解析家里因拨号不断改变的机器ip地址,没什么问题 但自从我昨天把机器升到FC6后,问题来了 一开始也没注意,后来想从公司远程登录主机发现死活登不上,dns解析出的地址不对 郁闷了一天,回到家发现貌似FC6新的LIBC和ez-ipupdate用的老的有些不兼容,运行失败 于是从3322.org上下了源码本来想自己编译,没想到居然编译也通不过 再仔细一看代码,原来这东西用的http协议,极其简单,curl即可代替 高兴之余,特此把经验拿来给大家分享: ez-ipupdate被我放在/etc/ppp/ip-up.local里执行,每次PPPoE拨号上去就自动更新dns: 代码:
代码:
-s是silence,不产生进度条等没用的输出 -u是http认证用户名密码 &> /dev/null &把所有输出扔掉并在后台运行,这样不浪费启动时间 url里的值都不要改,否则服务器可能会不认,除了最后一个hostname=myhost.3322.org改成自己的 其实wget也可以用来做这个,我已经用了curl就不高兴研究了,有兴趣的可以看看man wget,命令格式应该差不多 我是这样解决的: 不用ez-ipupdate; 改用: fetch "" username password yourhost.ourdomain.ext 这里不要忘记改成自己的啊! 再把这条命令写进cron,定时执行就行了。 希网动态域名——相关协议 Client的请求应该使用HTTP/1.0以上协议,Server的相应一定为HTTP/1.0 支持HTTP和基于SSL的HTTPS协议 需要事务处理,Client发送完整的请求,并且解析服务器端的相应,保证域名更新的成功 1. 通过URL认证 (所有的在一行) 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 返回码 安装成功之后编辑 /etc/crontab 文件 vi /etc/crontab 加入 */5 * * * * /usr/local/bin/lynx -mime_header -auth=username:password "" 目的就是每 5 分钟自动更新一次 ip,username 与 password 分别为你在 3322.org 所注册的用户名与密码,your.3322.org 就是你所注册的 3322.org 域名。 标题: 用lynx实现3322动态域名指向[原创] |