Linux实用小技巧之动态DNS绑定

其实动态DNS绑定是个很水很水的东西……所以这篇blog也没什么技术含量,不过算是比较实用了,还是放上来让大家嘲讽一番。

为什么要做动态DNS绑定呢?众所周知,中大在宿舍区是通过DHCP分配地址的,DHCP租期一到,再上线时就有可能重新分配IP地址。而很多人都有远程连接自己宿舍的电脑的爱好,每天出门前都要看看自己的IP地址实在是一件反人类的事情,最方便的状态当然是有一个东西可以自己记住你的IP地址。嗯,域名就是干这事的嘛,搞一个域名能同步你的IP地址,多科学啊。因此动态DNS绑定还是比较实用的东西。

第一件要做的事情是找一个域名,免费的二级域名满地都是,著名的鸟爷用的也是一个叫3322的二级域名(就是这个,不用试图点开了……)我测试的时候也是用的3322。如果你自己已经有了顶级域名,大多数DNS提供商也会给你提供相应的API的。

然后要把自己的IP抠出来。这个也不难。ifconfig里的东西用正则表达式一抠就出来了。接着是要把他同步到dns那,一般dns都会提供一个get的接口,直接发过去就行,用lynx神马的也是一句话的事,3322都把命令写出来了。

总的来说就是两句脚本。

IP=$(ifconfig  | grep ‘inet ‘| grep -v ’127.0.0.1′ | cut -d: -f2 | awk ‘{ print $2}’)

lynx -mime_header -auth=omegaga:我才不告诉你密码 “http://members.3322.net/dyndns/update?myip=$IP&hostname=omegaga.3322.org”

现在你就可以通过这个脚本更新IP地址了。可是这还不够,我们希望可以一连上网就更新一次。不同发行版的处理方法不同,在debian上有一个/etc/network/if-up.d/专门放up起来时候执行的脚本。在arch里面默认是通过守护进程/etc/rc.d/network来接入网络的,也可以直接写到里面。我是抛开了network直接写了一个脚本把yah3c啊dhcp啊还有更新IP这些乱七八糟的事情一次性写了。无线的话在/etc/wicd/里也有跟大便相类似的配置文件。

写到这里我感觉接入网络这个事情还是不够智能。每次都要自己跑一次,如果可以根据不同网络环境自动执行不同的命令就再好不过了。其实事实上可以通过下面这条命令来判断端口是否插上网线,再根据这个来判断接入有线网还是无线网。

ethtool eth0 | grep “Link detected: yes”

但是考虑到还有static IP跟自动dhcp的多种不同情况,上面这个方法还是略显粗糙了。水平有限,暂时就玩到这里,有待大牛来喷。

Comments