花生壳动态域名解析曾经风靡一时,把域名指向某台随时改变IP的机器。我从来没用过花生壳,不过大致也明白它的基本道理,自己也时常遇到需要访问某动态IP机器的问题,其实可以用很简单的方式来实现类似的功能。
现在有许多专门做查询IP的网站,一个基本功能就是你一上去马上就可以看到自己的IP. 嗯,一般情况下你访问网站时对方就会获知你的IP地址。
实现这个功能,只要在外网有一个固定IP的服务器(或者共享空间)就可以了。比如说,我的网站有个子目录叫”ip”. 第一步,我想在访问http://qingbo.org/ip/的时候,显示出我家计算机的IP地址。
- 在ip子目录里放一个ip.php文件,内容如下: `
` > > 2. 在家里的计算机上访问http://qingbo.org/ip/ip.php > 3. 不论我在哪里,打开地址”http://qingbo.org/ip/”都可以看到家里的IP了。因为访问ip.php的时候,它把IP写入了index.html文件。
这样有几个问题存在。首先,家里用的是ADSL(其它的网络提供商大部分也都如此),IP地址是不定期变化的,总不能家里老是放个人不停上网吧 🙂 其次,如果别人在别的地方访问ip.php,这不是捣乱吗?这个捣蛋鬼的IP会被记录下来,而家里的IP则不见了。最后,我们想访问http://qingbo.org/ip/的时候,直接转到家里的服务器去浏览网页(这是一台不太正规的web server)。
第一个可以用cron来解决,让它定期自动执行。执行命令”crontab -e”,然后加入这一行:
0 * * * * wget -q -O /dev/null http://qingbo.org/ip/ip.php
Windows应该可以用计划任务,不过我没有试过。
第二个,应该加个认证码(相当于密码)。只要在ip.php里记录IP的时候加一个判断:
`
if ($_POST["code"] === "strongauthenticationcode") {
...
}
?>
`
这样,只有提供了正确的认证码,IP才会被记录下来,防止别人瞎捣乱。(这是cron task的最终版本)
0 * * * * wget -q -O /dev/null –post-data ‘code=strongauthenticationcode’ http://qingbo.org/ip/ip.php
第三个问题,只要把写入index.html的内容改一下,让它作自动转向就可以了(最终版本):
`
Redirecting... You have crossed the oceans of time, to find me.