2009年5月11日

用djbdns代替BIND

  最近无法上网,只能看书了。看出了很多以前似懂非懂的很多知识!下面就算一个吧!
看这个可以先看下算DNS的原理吧(我的理解)
这文章之前是写在CU上的,现在转到这里来了!

djbdns是用来代替bind的很好的一个高速DNS缓存服务器。
  以下是我安装djbdns的一个过程:
  资料上说过安装一个标准的djbdns就必须安装daemontools,因为daemontools是一个companiaon package, 是djbdns必需的。它提供了一些支持djbdns开始和管理的程序给djbdns.
  
一:.安装daemontools(in FreeBSD):
%whereis daemontools
%cd /usr/ports/sysutils/daemontools
#make install clean

 这时会弹出个对话框让你选择。在这里你不要选择MAN,因为如果选上了会在下载MAN的时候找不着,会一直停住。我就这样,最后我只能通过源码安装。安装如下:
#mkdir -p /package
#chmod 755 /package
#cd /package //以上三部是新建一个目录来放daemontool
#wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz //下载daemontool源码
#tar xzvf daemontools-0.76.tar.gz     //解压
#cd admin/daemontools-0.76
#package/install               //安装

安装完后它会自动创建一个/service目录
二:2.1安装djbdns
%cd djbdns
%cd /usr/ports/dns/djbdns
#make install clean

2.2. 设置dnscache:

2.2.1 新建两个帐号,一个给dnscache使用, 而另一个记录日志信息
#adduser -s /bin/false dnscache
#adduser -s /bin/false dnslog

2.2.2 决定将dnscache放到哪个接口上。如果只想服务你主机本身的话就选127.0.0.1(这是dnscache默认使用的地址),若要服务内部网络的话则选择与内部网络相连的IP地址(如192.168.1.100)

2.2.3 选择一个存放dnscache服务文件的目录,如/etc/dnscache(这不用你创建,有稍后的执行命令中会自动创建)。

2.2.4 执行指令:
#dnscache-conf dnscache dnslog /etc/dnscache 127.0.0.1 //只供个人使用的IP
  or
#dnacache-conf dnscache dnslog /etc/dnscache 192.168.1.100  //供内部网络使用的IP
  前两个参数是先前创建的系统帐号,第三个参数是服务目录,最后一个参数是dnscache所要绑定接口的IP,该地址的UDP port 53会被dnscache占用。
 
  2.2.5 修改ICANN服务器(*.root-servers.net)的地址列表。列表文件位于/etc/dnscache/root/servers/@里面(这是你选择的服务目录是/etc/dnscache)该文件的每行代表一个根服务器地址。你可直接到http://www.internic.net /zone/named.root取得最新地址列表。然后动手修改/etc /dnscache/root/servers/@文件。还有一个更好的办法就是用djbdns的工具:
#dnsip `dnsqr ns . | awk '/answer:/ {print $5 ;}'`| \
sort > /etc/dnscache/root/servers/@

这样就会有好几个ip 在你的/etc/dnscache/root/servers/@里面了

 2.2.6 让daemontools 开始管理新的server
#ln -s /etc/dnscache /service
2.2.7 如果服务内部网络,那还得让内网能访问高速缓存数据库:
#touch /etc/dnscache/root/ip/192.168.1.100
如果你只用来服务本身主机的话就不用这一步了。

2.2.8 编辑/etc/resolv.conf,将第一个nameserver 指向dnscache所在的地址,使resolver使用新的dnscacheserver,当你的服务范围是你本身主机的话,那就:
nameserver 127.0.0.1
如果是内部网络的话:
nameserver 192.168.1.100
如果做一个外网的话:
nameserver 你的外网地址

2.2.9 到这里就算是完成了,你可利用djbdns 的 dnsqr, dnsip, dnsname等工具查询,不过避免使用nslookup测试以,因为在这种情况下会产生一些无法预料的事情会发生 

以下是一些安装好djbdns的一些command:
dnsqr - 是要求输出域名的类型。
格式是: dnsqr t domain
t 就是类型,而t有以下几种: any, a, ns, mx, ptr, txt, cname, soa, inifo, rp, sig, key, aaaa, axtr.

dnsip - 解析域名的IP地址!
格式是: dnsip domain

dnsname - 用IP来解析域名!
格式是: dnsname IP


三: 接下来就是架设区域授权服务器,那就得设定tinydns。安装的步骤如下:
3.1. 创建一个新的用户: tinydns
#adduser -s /bin/false tinydns
3.2. 为tinydns选取服务目录和公有IP,注意,dnscache和tinydns必须分不同IP,否则它们会抢占同一个UDP port 53.
#tinydns-conf tinydns dnslog /etc/tinydns 公有IP
这个指令跟上面设置dnscache的目的其实是一样的。

3.3. 创建符号链接,使svscan自动启动tinydns服务
#ln -s /etc/tinydns /service
四:. 在这里算是完成啦。不过还得借助tinydns的辅助工具来进行设定:

  4.1. 成为root并切换到/etc/finydns目录下:
#cd /service/tinydns/root
  4.2. 指定区域的主授权服务器(NS记录)
#./add-ns M-gtuiw.com 192.168.1.1
  4.3. 指定区域次授权服务器(NS记录)
#./add-childns M-gtuiw.com 192.168.2.1
  4.4. 设定主机名称与IP addr 的对应关系(A记录)
#./add-host OS.M-gtuiw.com 192.168.1.1
  4.5. 设定地址别名(CNAME记录)
#./add-alias www.M-gtuiw.com 192.168.1.1
  4.6. 指定邮件交换站(MX记录)
#./add-mx mail.M-gtuiw.com 192.168.1.1
  4.7. 公开先前增加的记录:
#./add-data
 说一下吧,从第二步到第六步的add-* script将你给定的参数回到data文件中。./add-data 会将该 文件换成data.cdb数据库文件。 tinydns会关注data.cdb 的变化,并自动加载新版区域数据

  到这里算完成了一部分啦。

Dns-我的理解

BIND的全称是Berkeley InterNet Domain(伯利克Internet域名服务器)

其实域名只是好记,IP才是主机之间的通讯记号!!

DNS是一种用于TCP/IP应用程序的分布式数据库,它提供主机名和IP地址间的转换有关的电子邮件的选路信息。当架设一个DNS服务器的时候,一定要配置两个名字服务器,一个主域名服务器,一个是次域名服务器,次域名服务会映射主域名服务器的所有信息的。这样当主域名服务器出现故障的时候还会有一个后备的。

分布式数据库,顾名思义就是很多地方都有的。DNS就是这样一个过程,它作为服务器,会将客户请求的主机名字与IP地址来进行转换,当遇到没法解析的时候它会去找其它的DNS服务器来帮忙解析这个看似很困难的主机与IP之间的转换的!这就是它的原理了

下面说一个缓存服务器吧,这是BIND的一个特点。当一个DNS服务器收到有关映射过来的信息(也就是主机到IP地址),它会将这个信息放到高速缓存中,这样若以后遇到相同的映射请求时就能直接使用缓存中的结果而无需再通过其他的服务器来查询了

当我们输入域名的时候,我们就会得到域名所带来的信息,而却不知有背后电脑做了多少事啊,不过这些也不必要我们去理的吧!

在配置DNS的时时候,会遇到类似于MX CNAME A PTR HINFO 这些信息的,这些都被叫做资源记录。在这里我觉得MX是最重要的,也是我最近才明白它的含义:MX(邮件交换记录)它提供一个无法直接连接Internet的主机可以和Internet上的主机们说话。它和可以连上Internet的主机有个协议就是:你一定要让我和其它的主机通讯,要不然我也没办法给你。我告诉你我的想法:就是当人想跟我通讯的时候,你就把话筒给我就得了。不过连上Internet的主机也肯这么做。于是就有MX的诞生了。其实不仅DNS用到它,连Email都会用到它的。

用host命令就可以查出一个IP或域名的MX记录,如查google的就是:
host -t mx www.google.com

用host还可以查询所有的资源记录。格式如下

host -t 资源记录 IP/域名

用缓存的好处就是快,不过也有它的坏处,那就是吃内存。开始有疑问了:缓存是活在内存中的吗?如果是的话重启后所有缓存不是不见了吗??如果是活在硬盘中,这样会命大一点,不过这样的话有它没它没什么分别啊。

很多服务器都用到缓存,如squid, Bind....

文件和目录的权限

普通文件的权限包含三个基本属性:读,写执行;显然,读和写权限允许用户从某个文件中读取数据,或向文件写入新的数据。如果用户有写权限,那么还可以将该文件当成一个程序或Shell脚本使用。用于描述这些权限的字符是r, w and x.

目录也使用这些相同的权限,但是意义不同。如果某个目录具有

读权限意味着用户可以查看该目录中有哪些文件。
写权限意味着用户可以用户可以在目录中增加,删除或重命名文件。
执行权限允许用户在访问某个目录中的文件时使用该目录的目录名。

假设用户有对某个目录的读权限,但是并没有该目录中文件的执行权限。那么用户仍可以阅读这个目录,或文件的索引节点信息。该信息是由stat系统调用返回的。即用户可以看到文件名,权限,文件大小,访问次数,所有者,所在的组和链接数目,但不能阅读文件的内容。

目录的写权限允许用户修改目录的内容。因为文件名被保存在目录而不是文件中,所以目录中的写权限就允许创建,重命名或删除文件。具体的说,如果有人对你的主目录有写权限,他就可以重命名或删除.login文件并且在该外插入一个新文件。那.login文件的权限对此并没有影响。即使不能阅读文件的内容,也可以重命名一个文件。

目录的执行权限有时也被称为搜索权限。如果用户发现某个目录提供了执行权限,但没有提供读权限,那也可以使用该目录中的任何文件,但是必须知道文件名,用户不能深入到目录中找出文件的名称。这类目录就如一个黑盒子,用户可以将文件名放入该目录,但能不能找得到文件就不一定了。

文件权限很容易理解,但目录+文件的权限要同时适当的话就有点复杂了!

通过以上可以让我知道,当创建目录的时候,特别是提供给WEB服务器使用的时候, 一定要注意权限的问题。目录的读,写和执行权限并不就代表目录里面的文件的读,写和执行权限。在用chmod来构建权限的时候要考虑到目录的权限的时候同时也要考虑到文件的权限,这样才是上好计策,而不是盲目的给目录一个777!

初始化权限

新建一个目录,希望这个目录的里面的文件的默认的权限统一一个数。如果想做得这样,那就得用umask了。
umask命令为新创建的文件设置默认的模式。它的参数是一个三位数字的模式来表示访问将被禁止,在文件被创建的时候。那么它所期望的值是用户所希望的文件模式的八进制补码。为了决定这个值,那只要简单的指出代表所希望的文件模式的数字的等价值。然后将它从777减去即可。例如,要默认的获得模式751的文件权限,那就计算777-751=026,026就是用户送给umask的值:

%cd dir_name
%umask 026

这样当给“dir_name”这个目录里创建文件的权限会统一为751了。

2009年4月29日

出来混,迟早要还

原来,学历是我混得不好的证据。

昨天,腾讯在广州举行一个现场招聘会。而我又没头没脑的闯了进去,直递简历给面试官看了几MS,就说了一句雷我的话:“你是专科的啊,不好意思,我们要求的最低学历是本科。”

请问,面试官在怪我当初为什么不好好学习吗??

身体敏捷

从前,我只以为我身手敏捷,直至今天,我才发现,我不止身手敏捷,还有就是身体敏捷,竟然可以用身体把蚊子压死!!!

证据: 我穿来睡觉的衣服上留下的血;拿去验检的话肯定是ABC型的,因为我的血型就是ABC型的。

注:绝对不是我自己流的,因为血在衣服的外表,并没渗入到内表,SO..............

顿时,我佩服我自己!