[葱头原创] 动态IP更新攻略
时间:2008-01-16 13:15:16 来源: 作者:
|
葱头一直使用希网3322.org动态DNS,至于如何下载和设置客户端我就不详细说明了,3322.org里面有详细的设置方法。 使用的过程中我发现了一些问题,虽然ADSL自动拨号可以利用3322.org来更新DNS,但有些时候却会失效,这是在ADSL有时候会产生一些死IP,如果不手工删除这些"死IP",即使运行希网的客户端程序也没有用,它只会提交旧的那个"死IP"。就是这样,使葱头决心要把整个更新的过程自动化而不需要手工介入。 操作系统:FreeBSD 4.7 第一、以root身份在/sbin中创建一个叫ipupdate.sh的文件: ipp=$(ifconfig |grep -- '-->;' | awk '/inet/{print $2}') #echo $ipp oldip=$(echo $ipp|awk '//{print $1}') newip=$(echo $ipp|awk '//{print $2}') if [ "$newip" != "" ]; then /sbin/ifconfig tun0 delete $oldip echo "It have deleted the old ip address and updated the DNS"; else echo "There is no New IP Addess." ; fi /usr/local/ez-ipupdate/ez-ipupdate -c /usr/local/ez-ipupdate/qdns.conf (这一行是希网客户端提交IP地址) 然后,chmod 744 ipaddress.sh,为什么只能root执行? 因为脚本里面删除ip地址只能root操作,所以其他人运行了这个脚本也没用。 第二,建立/etc/ppp/ppp.linkup 文件,目的是拨号后执行里面的脚本 adsl: !bg /sbin/ipupdate.sh (注意,!bg之前必须有一个空格!) 这样,当ADSL拨号的时候就会自动删除旧的IP地址,将新IP提交到希网。 欢迎大家指正! 夜未眠 回复于:2003-05-22 18:58:05 希网的解析慢得要死。而且10次4次不成功。 以上只是个人观点,仅供参考 redfox 回复于:2003-05-22 21:11:11 我一直用自己的脚本更新,希网自己的有问题,ip一换就不行了。 zkinsz 回复于:2003-05-22 23:10:48 引用:原帖由 "redfox"]我一直用自己的脚本更新,希网自己的有问题,ip一换就不行了。 发表: 也就是不用希网啦?难道你自己有域名?到现在我还是用希网,问题多多,唉。 问个题外话,域名到底该向谁申请? yaako 回复于:2003-05-22 23:38:38 1. 关于ADSL有时候会产生一些死IP的问题,是FreeBSD的问题,修改配置可以解决的,只要在 ppp.linkup 里面加上"iface clear",如: adsl: iface clear !bg /usr/local/bin/ez-ipupdate -c /usr/local/bin/qdns.conf 这在希网的说明里面已经说清楚了,你没有按照说明来做: http://www.3322.org/help/help_service.html#service_8 2、我从来没有发现希网域名解析慢的问题,请问是什么现象? yaako 回复于:2003-05-22 23:42:47 关于 iface clear 的使用,可以参见ppp的手册: man ppp 夜未眠 回复于:2003-05-22 23:49:22 问题是: 我这儿 update successful. 并且能够能过动态域名取得更新后的IP地址 别人那儿(和我使用的是不同的dns服务器) cannot resolve <eg.domain>;: Unknown host yaako 回复于:2003-05-23 00:02:34 dns 是分级授权的,如果一个域名,如 aa.com 归3322来管理,则只要你这里的域名服务器解析正确了,说明3322就工作正常了。如果其他地方的DNS不能解析,一般是由于那里的服务器工作不正常,不能将错误归结到aa.com的属主服务器3322的错误。 现在电信很多域名服务器的设置和管理有问题,解析的时候有问题的。 你将出问题的域名以及解析出错的dns服务器的IP贴出来看看,一起分析一下,到底是3322的问题,还是其他地方域名服务器的问题。 红袖添香 回复于:2003-05-23 00:23:16 引用:原帖由 "葱头"]" != "" 发表: ; then /sbin/ifconfig tun0 delete $oldip /usr/local/ez-ipupdate/ez-ipupdate -c /usr/local/ez-ipupdate/qdns.conf (这一行是希网客户端提交IP地址) echo "It have dele.......... 有些地方不明白的地方:
第1行:如果用 awk 了,当中还用 grep 就显多余了,其实既然你用 -->; 作为参照了,直接在 awk 中匹配就可以了。 ipp=$(ifconfig -a | awk '/-->;/{print $2}') 第3、4行,它们输出有什么不同吗?都是对一个IP进行处理, 没有第二域呀。“/ /” 又是干什么用的? 夜未眠 回复于:2003-05-23 00:29:21 很多地方 ( 其实也不是很多地方,夸张一下,呵呵,哈尔滨哈工大,杭州古荡区,广东揭阳,上海长宁,重庆江津,我只在这些地方有朋友,:-) ) 的dns服务器解析(都用的是电信给他们的)都有超时的问题,都说要试好几次才能解析成功, 有时候我这儿更新好了。并且能够解析。不过过了一段时间和我同一幢楼的哥们,居然无法解析,也试了几次才成功。 yaako 回复于:2003-05-23 00:35:25 那么你将你在3322的域名贴出来,让这里的朋友解析着看看。 如果不成功,就贴出是哪里的DNS(著名 DNS 的IP) zkinsz 回复于:2003-05-23 00:36:01 红袖都有不明白的地方啊!上次的shell程序还是先用你的才改好的! 夜未眠 回复于:2003-05-23 00:42:01 引用:原帖由 "yaako" 发表: 那么你将你在3322的域名贴出来,让这里的朋友解析着看看。 如果不成功,就贴出是哪里的DNS(著名 DNS 的IP) 早就没用3322的了,现在用的是dns0755的。 葱头 回复于:2003-05-23 00:49:14 引用:原帖由 "红袖添香" 发表: 第1行:如果用 awk 了,当中还用 grep 就显多余了,其实既然你用 -->; 作为参照了,直接在 awk 中匹配就可以了。 ipp=$(ifconfig -a | awk '/-->;/{print $2}') 第3、4行,它们输出有什么不同吗?都是对?.......... 1.Shell编程的方法有多种,只要得到最终结果的话就可以了.采用awk的确是可以直接得到结果而不需要grep 2.当你存在"死IP"的时候,第1行的代码将在一行中同是列出旧IP和新IP, 第三行$1为旧,第四行$2为新,判断$2是否为空作为条件. 葱头 回复于:2003-05-23 00:56:23 引用:原帖由 "yaako" 发表: 1. 关于ADSL有时候会产生一些死IP的问题,是FreeBSD的问题,修改配置可以解决的,只要在 ppp.linkup 里面加上"iface clear",如: adsl: iface clear !bg /usr/local/bin/ez-ipupdate -c /usr/local/bin/qdns........... 关于你的问题,即使是设置了iface clear,也偶然会出现死IP的情况. 没有设置iface clear,也不是每次都会出现死IP,断线了正常拨号的话也是正常的. 产生死IP并不完全是在ppp.linkup添加iface clear可以解决的. ADSL重新分配IP有很多种情况,例如断线,局端DHCP重新分配IP等等. 红袖添香 回复于:2003-05-23 01:01:02 引用:原帖由 "葱头"]2.当你存在"死IP"的时候,第1行的代码将在一行中同是列出旧IP和新IP,$1为旧,$2为新,判断$2是否为空作为条件.......... 发表: 是这样?从来没碰到过死 IP 的情况。 yaako 回复于:2003-05-23 01:07:39 引用:原帖由 "葱头" 发表: 关于你的问题,即使是设置了iface clear,也偶然会出现死IP的情况. 没有设置iface clear,也不是每次都会出现死IP,断线了正常拨号的话也是正常的. 产生死IP并不完全是在ppp.linkup添加iface clear可以解决的. A.......... 使用 iface clear ,则 FreeBSD在每次重新拨号的时候,自动调用 /sbin/ifconfig tun0 delete [IP addr]来清除老的IP。 我在家里、公司、很多网吧都使用这种方法来拨号和自动更新希网的动态域名,都没有出现死地址的问题。 iface clear [INET | INET6] If this command is used while ppp is in the OPENED state or while in -auto mode, all addresses except for the NCP negotiated address are deleted from the interface. If ppp is not in the OPENED state and is not in -auto mode, all interface addresses are deleted. If the INET or INET6 arguments are used, only addresses for that address family are cleared. redfox 回复于:2003-05-23 09:33:26 引用:原帖由 "yaako" 发表: 1. 关于ADSL有时候会产生一些死IP的问题,是FreeBSD的问题,修改配置可以解决的,只要在 ppp.linkup 里面加上"iface clear",如: adsl: iface clear !bg /usr/local/bin/ez-ipupdate -c /usr/local/bin/qdns........... 这个到没注意,有空试试。 redfox 回复于:2003-05-23 09:37:46 引用:原帖由 "yaako" 发表: 1. 关于ADSL有时候会产生一些死IP的问题,是FreeBSD的问题,修改配置可以解决的,只要在 ppp.linkup 里面加上"iface clear",如: adsl: iface clear !bg /usr/local/bin/ez-ipupdate -c /usr/local/bin/qdns........... 对了,你指的"死ip"是啥意思?电信的服务器会不定时的更换客户adsl的ip,用这个可能不行把? darkcc 回复于:2003-07-01 23:39:24 >;>;>;>;>;>;>;>;>;>;>;>;>;ddns.csh>;>;>;>;>;>;>;>; You do #csh /root/ddns.csh & or ./ddns.csh & >;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>; #!/bin/csh set num=1 set oldip="" while($num) set newip=`ifconfig -a|awk '/-->;/{print $2}'` if($newip !~ $oldip)then set oldip = $newip /usr/local/bin/lynx 'http://www.XX.org/XXX/XXX.cgi?XXXX' -dump >;/dev/null endif sleep 180 end powerplane 回复于:2003-07-04 23:35:51 我觉得oldip应该是ping你的域名得出的ip,然后跟你现在的ip比较。 个人认为,应该搞定时查询,像darkcc那样。但是用corntab搞比较好。 电讯可能会动态更换你拨号得到的ip的。 我用的是adsl路由,如何才能够知道自己在internet上的ip呢? |
原文链接:http://bbs.chinaunix.net/viewthread.php?tid=74365 转载请注明作者名及原文出处 |










文章评论
共有 位网友发表了评论 查看完整内容