DNS 域名解析, 在LINUX常用的DNS软件为BIND
一、DNS常识
1、DNS查询:分为递归查询和迭代查询两种
(1) 递归查询: 即客户端向本地DNS服务器请求查询域名,本地DNS服务器收到查询任务后如自身无法回答则向其他服务器查询,直到查到结果后返回结果给客户端。期间DNS服务器可能要查询很多其他DNS服务器。
(2)迭代查询:即客户端向本地服务器请求查询域名,本地DNS服务器无法回答,则给客户端返回另一个能查询域名的服务器地址,客户端再向另一服务器查询,期间可能客户端需查询多个DNS服务器,最终查到结果。
2、DNS服务器分类:
DNS服务器分为:
(1)master(主DNS服务器):拥有区域数据的文件,并对整个区域数据进行管理。
(2)slave(从服务器或叫辅助服务器):拥有主DNS服力器的区域文件的副 本,辅助主DNS服务器对客户端进行解析,当主DNS服务器坏了后,可以完全接替主服务器的工作。
(3)forward:将任何查询请求都转发给其他服务器。起到一个代理的作用。
(4)cache:缓存服务器。
(4)hint:根DNS internet服务器集。
二、bind的安装及运行目录
1、安装
一般安系统时都会选择安装,查看是否安装: rpm -qa |grep bind
如果没有安装下载如下几个包安装:(下面是我在rh5中运行 rpm -qa |grep bind 后显示的结果)
bind-libs-9.3.6-4.P1.el5 //提供实现域名解析功能必备的库文件
bind-chroot-9.3.6-4.P1.el5 //将bind主程序关在家里面(鸟哥是这样描述的,不懂)
bind-9.3.6-4.P1.el5 //必须安装的主文件,后面的是版本号
ypbind-1.19-12.el5
bind-utils-9.3.6-4.P1.el5 //客户端工具,用于客户端搜索主机名的相关指令,必须装
caching-nameserver-9.3.3-7.e15.i386.rpm //配置缓存域名服务器的话就需要安装。安装后一些模板文件和named.ca就会有,会方便很多。建议安装.
2、运行目录
我们通过查看/etc/sysconfig/named中的内容,可以看到系统将named的目录指向哪里。 最后一行为ROOTDIR=/var/named/chroot ,即指向了/var/named/chroot里面。所以我们的配置文件和数据库文件的存放点为:
/var/named/chroot/etc/named.conf //配置文件
/var/named/chroot/var/named //数据库文件存放位置
/var/named/chroot/run/named //named程序默认将pid文件放置此目录下
而我们自已把配置文件和数据库文件存放到了以下地点:
/etc/sysconfig/named 由该文件控制是否动chroot及其他参数
/etc/named.conf //配置文件
/var/named/ //数据库文件(如正向、反向、根文件)存放位置
/var/run/named: //named程序默认将pid文件放置此目录下
一般系统会为我们默认做链接,把系统默认的存放点都做了链接到我们自已的存放点。如果系统没有做,我们就手工做链接。
三、配置主配置文件 named.conf
注意:我现在装的rh5版本,默认没有named.conf这个文件,需手工建 立。
touch /etc/named.conf //建立主配置文件
vi /etc/named.conf //编辑配置文件,并后工添加配置文件,最好是找到范例文件复制过来,然后在里面更改。
1、全局配置
options {
directory "/var/named"; //指定配置文件所在目录,必须配置此科
dump-file "/var/named/data/cache_dump.db;; //保存DNS服务器搜索到的对应IP地址的高速缓存
statistics_file "/var/named/data/named_stats.txt; //dns的一些统计数据列出时就写入这个设置指定的文件中。即搜集统计数据。
pid-file "/var/run/named/named.pid ; //用于记录named程序的PID文件,可在NAMED启动、关闭时提供正确的PID
allow_query (any;); //是否允许查询,或允许哪 些客户端查询,可以把any换上网段 地址,以设置允许查询的客户端)
allow_transfer(none;); //是否允许MASTER 里的信息传到SLAVE服务器, 只有在同时拥有MASTER服务器和SLAVE服务器时才设置此项。none为不允许
forwarders{ 192.168.3.11;192.168.3.44;} ;//设置向上查找的哪个“合法”的DNS。地址之间要用; 分隔。 (我的理解是此处定义的如同windows里定义的转发一样,当本地DNS服力器解析不了时,转发到你指定的一个DNS服务器上去解析)。当不配置此项时,本机无法解析的都会用name.ca中配置的根服务器上查询,但如果配置了此项,本机查找不到的,就丢给此项中配置的DNS服务器处理。
forward only //让DNS服务器只作为转发服务器,自身不作查询。
motify //当主服务器变更时,向从服务器发送信息。 有两个选项,yes 和no
}; //以上是全局配置中常用到的选项,根据实际情况配置。
2、根域服务器的指向 ,最好是找一个文件复制过来即可,此文件一般不用更改。
可从此处下载更新 ftp://ftp.rs.internic.net/domain/
zone "."IN {
type hint;
file" named.ca";
};
3、 定义正向解析文件,此处以域 29zjt.com域为例。
zone "29zjt.com" IN {
type master; //定义服务器类型
file "29zjt.com"; //指定正向解析文件名。
};
4、定义反向解析文件
zone "9.168.192.in-addr.arpa" {
type master; //服务器类型
file "named.192.168.9" ; //反向解析文件名
};
四、配置正向解析文件及反向解析文件
touch /var/named/29zjt.com
touch /var/named.192.168.9
1、正向解析文件的编辑
vi /var/named/29zjt.com
$ORIGIN 29zjt.com.
$TTL 86400 //外DNS服务器请求本DNS服务器的查询结果,在外DNS服务器上的缓存时间,以秒为单位
@ IN SOA WWW.29zjt.com. admin.29zjt.com. ( //格式为:
【主机名或域名】ttl] [calss] [type] [orgin] [mail]
主机名或域名:一般 用@代替。每个区域都有自已的SOA记录,此处的为指定的域名。用@表示当前的源,也可以手工指定域名。
ttl:通常省略
class:类别,SOA记录的类别对internet乖哦说缺省为IN
type:类型,SOA记录的类型就是SOA,指明哪个DNS服务器对这个区域有授权。
origin:域区文件资 源,这个域区文件源就是这个域主DNS服务器的主机名,注意这里要求是完整的主机名,后面一定要加上“."。上例中:www.29zjt.com. 而不是www.29zjt.com 如果没有加后面的点,结果将是:www.29zjt.com.29zjt.com
mail:一般指管理员的邮箱。但和一般 的邮箱不同,用"."代替了"@",尾部也 要加上“."
2009121001 //作为版本控制,当域区文件修改时,序号就增加,辅助服务器对比发现与自已的不同后,就会做出更新,与主服力器同步
28800 //辅助服务器与主服务器进行更新的等待时间。间隔多久与主服务器进行更新,单位为秒。
14400 //重试间隔。当辅助服务器请求与主服务器更新失败后,再间隔多久重试传递
720000 //到期时间。当辅助服务器与主服务器之间刷新失败后,辅助服务器还提供多久的授 权回答。因为当与主服务器失去联系一定时间后,(这个时间就是此处定义的时间),辅助服务器会把本地数据当作不可靠的数据,将停止提供查询。
如果主服务器恢复正常,则辅助服务器重新开始计时。
86400 ) //最小TTL,即最小有效时间,表明客户端得到的回答在多长时间内有效。如果TTL时间长,客户端缓存保存时间长,客户端在收到查询结果时开始计时(TTL)时间内有相同的查询周日不再查询服输务器,直接查自已的缓存。如果TTL时间短,则缓存更新的频率快
@ IN NS www.29zjt.com. //ns记录
www IN A 192.168.9.4 //A记录
ftp IN CName www.29zjt.com. //别名类型
mail IN MX 10 192.168.9.100 //邮件交换器
mail2 IN MX 20 192.168.9.101 //邮件交换器
2、反向解析文件的编辑
vi /var/named/named.192.168.9
$TTL 86400
@ IN SOA 9.168.192.in-addr.arpa admin.29zjt.com. (
2009121001
1H
15M
720000
86400 )
@ IN NS www.29zjt.com.
4 IN PTR WWW.29zjt.com. //反向指针类型
下面来详解上面所遇到的记录类型:
NS记录: 指出该区域的名字服务器的名字。指定一个区域的权威DNS服务器。如果有一个以上的域名服务器,可以在NS记录中全部列出来。这些记录一般在SOA后面。格式为: 【域名】 【 IN 】【 NS】 【 DNS服务器电脑名】 ,域名可以用@代替或省略。
A记录:(地址记录) A类资 源记录是记录域名和IP地址的记录。通常为主机名。 任何没用“."结尾的主机名都会自动在后面加上域名。 一定要给NS记录指定一条A记录。
MX记录:,指定某个邮件服务器。以接受主机传送邮件。 这两条记录中的10和20代表优先级,级别越小,优先级越高。如果优先级高的发不出去,再以低级别的发送。
别名: cname. 为主机建别名。可把一台主机赋予多个别名
指针记录:PTR 用于执行从IP到主机的逆向映射,保存逆向映射的IP地址。
如果安装了bind-chroot-9.3.4-10.P1.el5这个软件,
就得把named.conf文件建在/var/named/chroot/etc/目录下。
正向和反向解析文件就得在:/var/named/chroot/var/named 目录下。如果想在默认目录下的就话,就得手工链接。
ln -s /var/named/chroot/etc/named.conf /etc/named.conf //把主配置文件做软链接到/etc/目录下。
directory "/var/named";
pid-file "/var/run/named/named.pid";
type hint;
file "named.ca"; //这个file后面要空格后,再加引号,不然会启动不了。
};
type master;
type master;
2、正向解析文件及向向解析文件的配置
touch /var/named/29zjt.com
touch /var/named.192.168.9
vi /var/named/29zjt.com
$ORIGIN 29zjt.com.
$TTL 86400
@ IN SOA WWW.29zjt.com. admin.29zjt.com. (
2009121001
14400
@ IN NS www.29zjt.com.
@ IN NS dns2.29zjt.com.
2、反向解析文件的编辑
vi /var/named/named.192.168.9
$TTL 86400
@ IN SOA 9.168.192.in-addr.arpa admin.29zjt.com. (
2009121001
1H
720000
86400 )
@ IN NS www.29zjt.com.
@ IN NS dns2.29zjt.com
4 IN PTR WWW.29zjt.com.
(二)SLVAE辅助服务器的配置
1、主配置文件配置
vi /etc/named.conf
directory "/var/named";
type hint;
file" named.ca";
};
type slave;
type master;
注意: 此 时SLAVE服务器的 /var/named目录下面不能有 上述的slave_29ztj.com 正向解析文件和 slave_named.192.168.9反向解析文件。因为是辅助服务器,这两个文件会自动从主服务器更新过来。所以此处就不用再创建 这两个文件了。就此服务器建好。
@ IN SOA WWW.29zjt.com. admin.29zjt.com. (
2009121001
14400
@ IN NS www.29zjt.com.
@ IN NS dns2.29zjt.com.
tk3y.29zjt.com. IN NS manager.tk3y.29zjt.com.
manager IN A 192.168.9.10
@ IN SOA 9.168.192.in-addr.arpa admin.29zjt.com. (
2009121001
1H
720000
86400 )
@ IN NS www.29zjt.com.
@ IN NS dns2.29zjt.com
高级别的配置,另开一篇作笔记,这里不记了。