动态DNS申请与侦测小技巧

来源:岁月联盟 编辑:zhuzhu 时间:2007-02-11
动态DNS申请与侦测小技巧内容简介: 动态 DNS 申请与侦测小技巧


------------------------------------------------------------------------------------------------

1.

2.

3. :

4.

5.

6.

7.

------------------------------------------------------------------------------------------------


学习本章必备技巧:

  在这一章当中,我们除了使用了相当大量的 scripts 编写组件,所以请特别留意 BASH Shell 与 shell scripts 的内容;而要编写 scripts ,呵呵!那个 vi 不能不知道;再来,我们使用了例行性命令来自动的更新我们的 DNS 名称,所以自然这个也要了解啰!所以:

· BASH shell

· shell scripts

· vi

· 例行性命令的建立

· 网络基础

  无论如何,将 Linux 基础文件全部看完是一件很好的事情!


------------------------------------------------------------------------------------------------

什么是 DNS :

  DNS 的全名是『 Domain name server 』是也,中文译名为『领域名称服务器』,这个咚咚的用途是什么哇!为什么我们的计算机或者是 Internet 一定需要他 ( 尤其是以 WWW 的方式来上网时 ) ?呵呵!他最大的用途就是『造福懒惰与记忆性薄弱的人类~』哈哈!没错!为什么说他是造福人类呢?且听我娓娓道来:

· /etc/hosts 的历史:

  还记得我们在 网络基础 里面提过的吧?目前在 Internet 上面通用的通讯协议为 TCP/IP ,那么资料传送是以 TCP 封包来传送,他还是建置在 IP 协议之上的,而众所皆知的, IP 是由四组 8 bit 的号码组成的,也就是类似『 xxx.yyy.zzz.www 』这样的型态,好啦,那么如果我们要连上某一部计算机,就要在网址列输入该计算机主机的 IP 才能连接的上,如果是一部或两部计算机那还无所谓,如果像目前这种 Internet 的主机数目.....嘿!谁记得住这么多的 IP 呀!?由于 IP 是一堆没有意义的数字所组成的,实在不容易被懒惰与记忆性薄弱的人类所接受 ( 说的是鸟哥自己 ....) ,那如果将这些数字以『名字』来取代呢?那又如何?嘿嘿!早期的人类早就想到这个简单又偷懒的方式了,那就是 /etc/hosts 这个档案的由来!例如,只要你输入『 ping -c 5 localhost 』你的 Linux 马上可以印出 127.0.0.1 这个 IP , Why ?你去看一下 /etc/hosts 就知道为什么了!所以啰,只要将你常常上网的『网址对应的 IP 』写到这个 /etc/hosts 底下,你的 IP 搜寻速度就会快上很多~

· DNS 的历史:

  但是, Internet 上面这么多主机,总不能一个一个的将他输入在 /etc/hosts 里面吧!?对呀!真不聪明!所以后来的这个时候就有所谓的『领域名称解析服务器, DNS』出现啦!DNS 利用类似树状目录的型态,将主机名称的管理分配在不同层级的 DNS 主机当中,经由分层管理,所以每一部主机的记忆的信息就不会很多,而且异动上面也相当的容易修改!那么这个 DNS 的功能你知道了吗?对啦!就是『将计算机主机的名称转译成 IP 』就是了!当然啰,他的额外功能还很多,关于 DNS 的详细的解析部分我们将在后续的章节当中在持续的加强内容,这里先谈个大概即可!总之,他的最大功能就是『让有意义的,人类较容易记忆的主机名称(英文字母),转译成为计算机所熟悉的 IP 地址!』举个例子来说好了,奇摩雅虎的网站的 IP 是 202.1.237.21 ,所以你可以在你的浏览器上面输入『 http://202.1.237.21 』来连上奇摩雅虎!不过,我想没有几个人能够将这个 IP 背的起来的吧?!反之,我们却都知道奇摩雅虎的网址为 tw.yahoo.com ,那么你只要输入『 http://tw.yahoo.com 』就可以连上 Internet 啦!很容易记忆吧!不过,计算机怎么知道 tw.yahoo.com 就是 202.1.237.21 呢?底下我们以我们的主机 aerosol.ev.ncku.edu.tw 来说明 DNS 的搜寻原理吧!

· DNS 的查询流程:

  刚刚说过 DNS 是以类似『树状目录』的型态来进行名称的管理的!所以每一部 DNS 主机都『仅管理下一层 DNS 主机的名称转译』而已,至于下层的下层,则『授权』给下层的 DNS 主机来管理啦!这样说好象很绕口,好吧!我们就以下图来说一说原理啰:



  首先,当你在网址列输入 http://aerosol.ev.ncku.edu.tw 时,你的计算机就会依据 /etc/resolv.conf 所提供的 DNS 的 IP 去进行联机查询,好了,用最常见的 Hinet 的 168.95.1.1 这个 DNS 主机好了,这个时候, hinet 的这部主机会这样工作:

1. 先查看本身有没有纪录:因为 hinet 并没有纪录到学术网络上面的信息,所以自然也就没有办法直接提供给 client 端关于 aerosol.ev.ncku.edu.tw 这部机器的 IP 了,好了,这个时候 168.95.1.1 就会向 .tw 这部机器查询;

2. 向最顶层查询:由于 168.95.1.1 没有纪录我们主机的 IP ,这个时候他就会向『最顶层』的 .tw 这部主机来查询资料了!而.tw 这部机器管理的只有 .com.tw, .edu.tw ... 那一行的几部主机的 IP 而已,所以他也不晓得 aerosol 那部主机的 IP ,但是他却可以告诉 168.95.1.1 说『嘿!你可以到 .edu.tw 那部机器去查询!我这里有 .edu.tw 的 IP 呦!』;

3. 向第二层查询:168.95.1.1 接着又到 .edu.tw 去查询,而该部机器管理的又仅有 .ncku.edu.tw, .nsysu.edu.tw, .... 那几部主机,所以这个时候 .edu.tw 又告诉 168.95.1.1 说:『你要去 .ncku.edu.tw 那里查询,我有他的 IP !』;

4. 向下层持续查询:好了,一步一步下来, .ncku.edu.tw 可以查到 .ev.ncku.edu.tw 的 IP ,而最后我们 aerosol.ev.ncku.edu.tw 就可在 .ev.ncku.edu.tw 当中查询到啦!
5. 记录暂存内存:查到了 IP 之后, 168.95.1.1 会先记录一份对应 IP 的信息在自己的暂存内存当中,以方便下一次同一个主机名称的要求之查询!然后再将结果回报给 client 端!
  就是这样的分层负责,所以当你的主机名称要修改时,你只要向你的上层 DNS 要求修改,那么全世界就都可以找到你修改过后的主机名称对应的 IP 了!很简单维护吧!机动性也很高吧!好啦!那么我们需要架设 DNS 了吗?!哈哈!当然不是,为什么呢?这个就牵涉到『授权』的问题了!

· 关于授权的 DNS 主机:

  很多朋友都认为『我要架站,因为主机要有名字,所以一定需要架设 DNS ?』是这样吗?当然不是!这是错误的观念,怎么说呢?从上面的图标当中,你应该不难发现,当我要搜寻 aerosol.ev.ncku.edu.tw 时,就需要由 .ev.ncku.edu.tw 这部机器上面查到,而 .ev.ncku.edu.tw 则需要在 .ncku.edu.tw 上面查到!好了,那么 .ncku.edu.tw 怎么知道 .ev.ncku.edu.tw 的 IP 呢?这是因为『 .ncku.edu.tw 已经授权给 ev.ncku.edu.tw 这部机器,当有人要查询 .ev.ncku.edu.tw 时, .ncku.edu.tw 将把查询的任务直接转给 .ev.ncku.edu.tw 去管理了!』所以啰,如果你要架设 DNS ,而且是可以连上 Internet 上面的 DNS 时,你就必须要透过『上层 DNS 主机的授权』才行!

  那么我要怎么架站呢?很简单阿!刚刚不是说过吗? DNS 系统最大的功能就是『主机名称转译成 IP 』这个动作,那么你只要向任何一个合法的 DNS 主机申请一个『主机名称, hostname 』给你的 Linux 主机,让大家都可以藉由该 DNS 主机来查询到你的 Linux 之 IP ,就可以使用该主机名称来架站啦!就是这么简单!

· 关于网址列的意义:

  那网址列的名称有没有什么意义呢?其实是有的,网址列的最后几个字母代表的意义如下:



· 动态 DNS 系统:


  好了,既然知道了 DNS 系统了,那什么叫 动态DNS 呢?刚刚我们上面提到的大都是属于『一个主机名称对应一个固定的 IP 地址!』的型态,但是由于近年来拨接网络的盛行,而拨接网络所分给你的 IP 并非固定的,例如以 seednet 为例,你每次重新开机而 seednet 就会随机分配给你一个 IP ,也就是说,你的 Linux 主机的 IP 在每次重新拨接上网时都会不一样!

  那就会产生一个问题,如果你架设了一个网站,但是你的 IP 却一直变来变去,那客户端如何跟你联机呢?这时就有所谓的动态 DNS 出现了,他的运作原理是这样:

1. Client 端(就是你啦)每次开机或者是重新拨接后,取得一个新的 IP 之后,会向 DNS Server 端提出要求,希望 Server 端变更主机名称与 IP 的对应(这个步骤你可以使用 scripts 来自动判读与达成!);

2. Server 端接受 Client 端的要求之后,会先去查询 Client 提供的帐号密码是否正确,正确之后就会立即修改 Server 本身对于你的主机名称的设定值,

  因此,只要别人知道你的主机名称,不论你的 IP 为何,他一定可以连上你的主机(因为 IP 跟着你的主机而变!)这对于我们这种使用动态 IP 的人是很有帮助的!(阿!真是造福我们这些穷苦人家的孩子呀!)底下我们就是要使用这个动态 DNS 来进行侦测的技巧啦!

返回页首


------------------------------------------------------------------------------------------------

哪里申请 DNS :

静态 DNS 主机注册:


  好了!既然知道了 DNS 的用途,那么自然我们就需要来申请 DNS 啦!不然怎么架设网站呢?目前的静态 IP 对应主机名称的注册网站有底下几个!当然还不止啦!我们仅提出几个出来分享就是了!

· 台湾网络信息中心

· http://www.netsol.com/

· http://www.dotster.com/

· 荻恩斯科技

动态 DNS 主机注册:

  那么有没有免费的 DNS 系统呀!呵呵!当然有啰!我们要感谢造福我们这些穷苦人家的孩子的大好人~~你可以在底下找到相关的信息:

· 台湾地区免费动态DNS系统(中文)

· http://dns2go.deerfield.com/

· http://www.dyndns.org/

返回页首


------------------------------------------------------------------------------------------------

动态 DNS 侦测与自动更新小技巧:


  好了,既然已经申请了 动态 DNS 了,那么要架设主机的时候,当然就不希望还要手动的来更新你的 IP 对应主机名称啰,对吧!所以这个时候就需要使用 shell scripts 的方式来自动的更新 ( update ) 你的 IP 对应的动态 DNS 主机名称啰!除此之外,如果你并不想要更新动态的 DNS 的话,那么也可以在 ADSL 拨接断线的时候可以传送 IP 给你吧!这样的话,也比较能够让你了解目前主机的状态,不是吗?!嘿嘿!没错!接着下来,我们将要使用一组 script 来进行我们的 IP 侦测工作!在实际进行 scripts 之前,你应该先要了解一下我是如何设计这个 script 的吧?!

· 仅 e-mail 给管理员:

适用的环境:没有申请 www.adsldns.org 的主机名称;

功能:不会更新 DNS ,仅会将新的 IP e-mail 给系统管理员。

原理:利用简单的 IP 分析,如果新的 IP 分析出来的结果是没有联机的,那么系统将先激活 Internet 联机,如果旧的 IP 与新的 IP 不一样,那么就将新的 IP 寄给系统管理员!

· E-mail 之外,还会更新 DNS 组态:


适用环境:申请 www.adsldns.org 主机名称者;

功能:除了新的 IP 将 e-mail 给系统管理员之外,亦将会分析 DNS 主机的 IP 。

原理:利用 IP 分析,若发现断线,则自动加以联机,而联机之后的 IP 除了 e-mail 给系统管理原之外,亦将与 Internet 上面的主机名称 IP 比对,若不相同,则直接予以更新 DNS 的 IP !

· 在 IP 分享器后端的 Linux 来更新 DNS 的 IP :

适用环境:在 IP 分享器的后端的 Linux 主机,可用来判断 IP 分享器的 IP

功能:除了判断 IP 分享器的 IP ,并将 IP mail 给系统管理原之外,亦将更新 DNS 的 IP ;

原理:利用 www.adsldns.org 可以判断自己的 IP 的原理,用来将该 IP 整个的更新!

  上述的功能我将他全部都写在同一个 script 里面了,你必须要选择你所需要的环境,而这个 script 将可同时适用 ADSL 与 Cable 的浮动式 IP 的状态!












  上面的 script 你可以在 这里下载,至于安装的方法就相当的简单啦!你只要下载该 script ,然后将他移动到适当的目录之下,修改一下上面显示黄色的地方,然后再修改你的 /etc/crontab !嘿嘿!那就成功啰!



  嘿嘿!这样一来,如果你的主机不正常的断电之后,在三分钟之内就会自动的拨接,此外,还会自动的上网去更新你的 DNS 主机名称!还会 e-mail 到你的信箱去!告诉你最新的 IP 是几号!哈哈!简不简单呀!?(注:因为我没有 cable modem ,所以在 cable 的部分我是经由网友回报而做成的 script !此外,我也没有 IP 分享器!所以第三个 jobs=3 还没有测试过!无论如何, jobs=1 是完全没有问题的!此外,针对朋友们常常发生的 lynx 没有安装的问题,这是我也先将他写了一个小小的检查档案,可以告诉朋友们!嘿!你的 lynx 安装了没?!)