学习本章必备技巧:
在这一章当中,我们除了使用了相当大量的 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 来进行侦测的技巧啦!
