DNS 是计算机域名系统 (Domain Name System 或Domain Name Service) 的缩写。主要提供域名解析服务。将IP地址转换为相对应的域名,或者将域名解析为相应的IP地址。
DNS查询分为迭代查询和递归查询两种查询方式。
迭代查询:当服务器使用迭代查询时能使其他服务器返回一个最佳的查询点提示或主机地址,若此最佳的查询点中包含需要查询的主机地址,则返回主机地址信息,若此时服务器不能够直接查询到主机地址,则是按照提示的指引依次查询,直到服务器给出的提示中包含所需要查询的主机地址为止,一般每次指引都会更靠近根服务器(向上),查寻到根域名服务器后,则会再次根据提示向下查找。B访问C、D、E、F、G,都是迭代查询,首先B 访问C,得到了提示访问D的提示信息后,开始访问D,D又返回给B提示信息,告诉B应该访问E,依次类推。
递归查询:域名服务器将代替提出请求的客户机(下级DNS服务器)进行域名查询,若域名服务器不能直接回答,则域名服务器会在域各树中的各分支的上下进行递归查询,最终将返回查询结果给客户机,在域名服务器查询期间,客户机将完全处于等待状态。
以下是两种查询方式的具体示例图:
1.主DNS服务器
主DNS服务器拥有最原始的记录,可以修改。
2.辅助DNS服务器
辅助DNS服务器的资源记录主要从主DNS服务器上进行复制。
3.存根DNS服务器
存根DNS服务器主要作用是管理存根区域,它与主DNS服务器之间存在着区域复制。
4.缓存DNS服务器
缓存DNS服务器没有管理任何区域的功能,也不会产生区域复制,它只能缓存DNS名字并且使用缓存的信息来答复DNS客户端的解析请求。缓存DNS服务器可以通过缓存减少DNS客户端访问外部DNS服务器的网络流量,并且可以降低DNS客户端解析域名的时间。
1.正向查找区域
正向查找区域主要是提供域名到IP地址的解析服务。正向查找区域包括SOA (授权起始记录)、NS (负责该区域的dns服务器)、A (主机记录)、CNAME(别名)、 MX (邮件交换记录)
2.反向查找区域
反向查找区域主要提供IP地址到域名的解析服务。反向查找区域包括SOA (授权起始记录)、NS (负责该区域的dns服务器)、PTR(指针)。
1.SOA(授权起始记录)
主要表明该区域的主dns服务器、管理员邮箱、刷新策略等。
2.NS (负责该区域的dns服务器)
表明该区域的dns服务器。主要有两行表明NS记录,格式如下:
@ IN NS ns.abc.com.(注意:只能写名称,而且是完全名称)
ns(可以写相对的名称) IN A 1.1.1.1
3.A (主机记录)
记录名称和地址的对应关系。格式如下:
www.abc.com IN A 2.2.2.2
4.CNAME 别名
可以将多个名称映射到某个地址。格式如下:
pop3 IN CNAME mail.abc.com.(要么写相对的,要么写绝对的)
5.MX (该区域的电子邮件服务器)
MX邮件交换机路,指向一个邮件服务器。格式如下:
@ IN MX 10(优先级) mail.abc.com
6.PTR(指针)
它是电子邮件系统中的邮件交换记录的一种,常被用于反向地址解析。格式如下:
若反向区域为:101.168.192.in-addr.arpa.dns
PTR记录:10 IN PTR www.sina.com.
用来表示,地址为192.168.101.10的主机名称为www.sina.com.
利用通配符 * (星号)来做次级域名以实现所有的次级域名均指向同一IP地址。
例如您的域名是abc.cn:做一个*.abc.cn的次级域名A记录指向222.222.222.222,那么生效后当访问者无论是输入“123.abc.cn”还是“123.123.abc.cn”甚至可以是“!@#.$%$.3ww.a.abc.cn”这样的 任意字符 均可以指向到222.222.222.222这个IP地址。
1、DNS根目录
DNS的根目录主要位于/var/named/chroot/
2、 DNS配置文件
DNS的配置文件主要位于/var/named/chroot/etc
3、区域文件
DNS的区域文件主要位于/var/named/chroot/var
1.检测区域文档
named-checkzone 工具可以方便您检测区域文档,您所要遵循的格式为: named-checkzone 域名 区域文档
例如,您所配置的区域为abc.com,那么 named-checkzone abc.com /var/named/chroot/var/named/abc.com.db
2.检测主配置文档
named-checkconf工具可以方便您去检测主配置文档。您可以参照以下模式:
named-checkconf /var/named/chroot/etc/named.conf
3.使用日志
当您使用以上两种方式无法解决问题时,您可以求助系统日志。日志位于/var/log/messages
1.nslookup工具
nslookup工具可以很方便的为您提供解析工作。您可以在命令行模式下直接使用nslookup 名称 ,来解析主机的地址,你也可以直接nslookup后回车,接下来使用set来帮您完成解析工作。如set q=ns之后输入abc.com (只能是区域名称)或者set q=any 之后输入www.abc.com(可以是区域)或者set q=mx (邮件)之后输入 abc.com
2.dig工具
dig工具同样可以帮您完成解析域名工作。您只须遵循以下格式:dig -t(表示查询的记录类型) 类型 区域,如dig -t ns sina.com
3.host工具
host工具同样可以完成域名解析工作。例如:host www.sina.com
搭建DNS服务应用的软件为:BIND(Berkeley Internet Name Daemon)
官方站点:https://www.isc.org/
相关软件包:
bind-9.3.3-7.el5.i386.rpm
bind-utils-9.3.3-7.el5.i386.rpm
bind-chroot-9.3.3-7.el5.i386.rpm
caching-nameserver-9.3.3-7.el5.i386.rpm
cache-nameserver软件包实际上只是提供了一些配置样例文件,对于熟悉BIND配置文件的系统管理员来说,也可以不用安装该软件包
bind,提供了域名服务的主要程序及相关文件
bind-utils,提供了对DNS服务器的测试工具程序(如nslookup、dig等)
bind-chroot,为bind提供一个伪装的根目录以增强安全性(将“/var/named/chroot/”文件夹作为BIND的根目录)
caching-nameserver,为配置BIND作为缓存域名服务器提供必要的默认配置文件,这些文件在配置主、从域名服务器时也可以作为参考
named作为标准的系统服务脚本,通过”service named start/stop/restart“的形式可以实现对服务器程序的控制
named默认监听TCP、UDP协议的53端口,以及TCP的953端口:
其中UDP 53端口一般对所有客户机开放,以提供解析服务;
TCP 53端口一般只对特定从域名服务器开放,提高解析记录传输通道;TCP 953端口默认只对本机(127.0.0.1)开放,用于为rndc远程管理工具提供控制通道
如果没有安装bind-chroot软件包,则主配置文件默认位于 /etc/named.conf,数据文件默认保存在 /var/named/ 目录
以下是dns配置步骤:
拓扑图:
c.com 是远端分支,b.com 是临近的分支。
一、主dns的配置,主域的创建。
1. 挂载光盘
[root@server ~]# cd /mnt/cdrom/Server/
2.安装bind的相关包:
[root@server Server]# rpm -ivh bind-* --nodeps –force
[root@server Server]# rpm -ivh caching-nameserver-9.3.4-10.P1.el5.i386.rpm(提供了一些配置样例文件)。
[root@server etc]# cp -p named.caching-nameserver.conf name.conf 复制配置文件为name.conf。
3、vim etc/name.conf
options {
listen-on port 53 { any; };改成any
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
// Those options should be used carefully because they disable port
// randomization
// query-source port 53;
// query-source-v6 port 53;
allow-query { any; };改成any
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
view localhost_resolver {
match-clients { any; };改成any
match-destinations { any; };改成any
recursion yes;
include "/etc/named.rfc1912.zones";
};
保存退出。
4、vim named.rfc1912.zones
zone "a.com" IN {
type master;
file "a.com.db"; #添加主域
allow-update { none; };
};
zone "b.com" IN { #添加子域
type master;
file "b.com.db";
allow-update { none; };
};
5、数据库的修改
[root@server named]# cp -p localhost.zone a.com.db 复制文件为a.com.db
然后vim a.com.db
输入:$TTL 86400
@ IN SOA ns.a.com. root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
@ IN NS ns.a.com.
ns IN A 192.168.101.253
www IN A 1.1.1.1
然后再[root@server named]# cp -p a.com.db b.com.db
[root@server named]# vim b.com.db
加入:$TTL 86400
@ IN SOA ns.b.com. root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
@ IN NS ns.b.com.
ns IN A 192.168.101.253
www IN A 2.2.2.2
6、然后再次
vim a.com.db
输入:$TTL 86400
@ IN SOA ns.a.com. root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
@ IN NS ns.a.com.
ns IN A 192.168.101.253
www IN A 1.1.1.1
c.com. IN NS ns.c.com.
ns.c.com. IN A 192.168.101.201
修改完需要使用rndc reload 重启服务。
7.windows server 2003系统中做另一dns
首先安装dns服务器,在windows添加删除程序里,选择添加windows组件,然后选择网络服务,安装里面的dns服务。
安完后,打开dns服务器,在正向区域处新建一区域,
新建完区域后,需要设置属性:
然后新建主机:
最后找一台主机测试,可以使用nslookup www.a.com 测试。
域名是ns.c.com
named-checkzone a.com /var/named/chroot/var/named/a.com.db 检测区域文档。
Name-checkconf /var/named/chroot/etc/named.conf 检测配置文档。