一. 域名解析的基本概念
1. 域名解析的意义
实现域名和IP地址之间的转换过程
2. 域名解析的方法
HOSTS:在网络中的每台主机都用一个文本文件来存放域名和IP地址的对照表,适用于小型网络
NIS:存放的解析记录,适用于中型网络
DNS:域名解析信息分布存储在网络中每台主机,实现分布式解析(适用于大型网络)
二. DNS的工作体系
1. 组成
(1) 域名空间
DNS域名空间是命名机制,它提供DNS数据库的层次树状结构,由根域、顶级域、子域与主机名组成,如下图所示:
DNS域名空间最上面的是根域,可以用圆点“.”表示,它由InterNIC(因特网网络信息中心)管理。根域下定义了许多顶级域,如下表所示。
域名称 | 说明 |
Com Edu Net Org Gov Mil 其他的国码 | 商业机构 教育,学术研究单位 网络服务机构 财团法人等非营利机构 官方政府机构 国防军事单位 如.cn表示中国 |
(2) DNS名称服务器
DNS名称服务器保存有资源记录并能响应名称查询的计算机。如果DNS服务器负责管理一个或多个区域,就称此DNS服务器为这些区域的授权名称服务器。授权服务器负责管理所管辖的区域中的数据,并为查询的DNS客户提供这些数据。DNS名称服务器有以下三种类型:
l 主名称服务器
主要名称服务器负责存储授权区域的一切数据且管理该区域和对区域具有解析功能。
l 辅助域名称服务器
辅助名称服务器可以从主名称服务器中转移一整套区域信息。并且辅助名称服务器会定时从主名称服务器中更新数据,同时可以接受客户机的查询.
l 唯高速缓存服务器
缓存服务器负责临时存储主名称服务器己解析过域名记录
(3) 客户机
DNS客户机利用一个简单的程序或子程序库,从服务器中提取信息以响应对域名空间的主机查询
2. DNS的解析过程
(1) 正向解析
当DNS客户端向DNS服务器查询IP地址时,或DNS服务器在向另外一台DNS服务器查询IP地址时,有以下三种查询方式:
l 直接从缓冲存储器解析
可以直接从DNS客户端或DNS服务器的高速缓冲器中获得查询结果。
l 递归查询
也就是DNS客户端送出查询要求后,如果本地DNS服务器内没有需要的数据,则DNS服务器会代替客户端向其他的DNS服务器查询,一般由DNS客户端所提出的查询要求是属于递归查询。
l 循环查询
一般DNS服务器与DNS服务器之间的查询属于这种查询方式,当第1台DNS服务器在向第2台DNS服务器提出查询要求后,如果第2台DNS服务器内没有所需要的数据,则它会提供第3台DNS服务器的IP地址给第1台服务器,让第1台DNS服务器向第3台DNS服务器查询。具体解析过程,如下图所示:
(2) 反向解析
域名反向解析可以让DNS客户端利用IP地址查询其主机名称,服务器利用in-addr.arpa反向指针,将一个ip地址指点向域名。
三. DNS的配置:
1.安装DNS服务器软件
#rpm –ivh bind-9.2.1-16.i386.rpm
#rpm –ivh bind-utils-9.2.1-16.i386.rpm
#rpm –ivh redhat-config-bind-1.9.0-13.noarch.rpm
#rpm –ivh caching-nameserver-9.2-7.noarch.rpm
相关文件:
/etc/named.conf dns服务器核心配置文件
/etc/rc.d/init.d/nameddns服务器守护进程所对应的程序
/var/named/named.ca dns服务器根区域文件
/var/named/localhosts.zone dns服务器localhost区域的正向文件
/etc/named.conf dns服务器的区域和服务器选项设置文件
/var/named/named.local 127.0.0.0的反向解析文件
2. 修改/etc/named.conf
作用:建立区域
文件内容:
//说明语句
配置语句
...........
配置语句
..........
配置语句
..........
..........
说明:常用的配置语名有以下几种
(1) options声明
作用:定义DNS服务器的全局选项
格式:options {
........;
........;
全局选项;
........;
........;
};
全局选项:
directory “路径名”;
定义区域服务器区域文件的存放目录
recursion yes/no;
是否使用递归查询方式,默认为yes
transfer-format one-answer/many-anser;
是否允许一条消息中放入多条应答信息,默认值为one-answer
forwarders {ip地址;…….};
定义转发器
allow-query {ip址址;/网络号;/any;};
定义允许向服务器发送查询请求的客户机地址
allow-transfer {ip地址;/网络号;/any;};
定义允许从主服务器中更新的从服务器地址
listen-on [port 端口号] {ip地址;};
定义dns服务绑定的端口和地址
(2) zone声明
作用:定义管理区域
格式:zone “域名” IN {
…………;
…………;
区域设置选项;
…………;
…………;
};
区域设置选项:
type master/hint/slave;
定义区域的类型,
master表示一个区为主域名服务器
hint 说明一个区为启动时初始化高速缓存的域名服务器
slave 说明一个区为辅助域名服务器
file “文件名”;
说明一个区域的区域文件名称
allow-update {none;/key 密钥名称;};
说明区域是否允许动态更新
masters {ip地址;};
定义主服务器的地址
(3) key声明
作用:定义授权的安全密钥
格式:key “密钥名称” {
…………;
…………;
密钥设置选项;
…………;
…………;
};
密钥设置选项:
algorithm hmac-md5;
定义密钥加密算法
secret “密钥”;
定义加密的密钥
(4) include语句
作用:将其他文件包含到本配置文件中
格式:include “路径名”;
(5) controls声明
作用:定义rndc命令使用的控制通道
格式:controls {
inet {ip地址} [port 端口号] allow {主机名;} keys {密钥名称;}
};
实例:
(1) 默认named.conf文件内容
options {
directory "/var/named";
// query-source address * port 53;
};
controls {
inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
include "/etc/rndc.key";
(1) 根据以下要求修改/etc/named.conf
n 建立正向主区域abc.com,区域文件名为abc.zone
n 建立反向主区域192.168.0.0,区域文件名为192.rev
#vi /etc/named.conf
添加如下内容:
zone “abc.com” IN {
type master;
file “abc.zone”;
};
zone “0.168.192.in-addr.arpa” IN {
type master;
file “192.rev”;
};
3.创建区域文件
作用:存放区域的信息记录
格式:区域文件指令
[记录名称] [生存周期] IN 类型 值
说明:
(1)记录名称
记录名称根据记录类型的不同可以下的值:
ip地址
区域名
FQDN
@
空格
(2)生存周期
设置记录被解析后在缓存中保存的最长时间长度
(3)记录类型
记录用于决定记录的格式及记录的取值,具体可以分为以下几种类型:
A记录
功能:用于设置主机IP地址
实例: www IN A 192.168.0.1
www.abc.com. IN A 192.168.0.l
IN A 192.168.0.2
NS记录
功能:设置区域的域名服务器地址
实例:abc.com. IN NS www.abc.com.
IN NS 192.168.0.1
IN NS www.abc.com.
CNAME记录
功能:设置主机的别名
实例:ftp IN CNAMEwww
mail.abc.com. IN CNAME www
mail.abc.com. IN CNAME www.abc.com.
SOA记录
作用:设置区域的授权信息
实例:
@(区域名) IN SOA @ (授权的主机名) root.abc.com.(管理员的mail地址) (
43 (序列号,递增量)
1D (辅助域名服务器多长时间更新数据库)
15M (若辅助域名服务器更新数据失败,多长时间再试)
2W (若辅助域名服务器无法从主服务器上更新数据,原有的数据何时失效)
86400 (设置生存周期,如果资源记录栏未设定ttl,则以这里提供的时间为准)
)
MX记录
作用:设置区域的mail服务器的地址
实例: linux.com. IN MX 10 www.linux.com.
注:
PTR
作用:将地址转换为主机名
实例: 1 IN PTR www.abc.com.
1.0.168.192.in-addr.arpa IN PTR ftp.abc.com.
(4) 区域文件指令
$ORIGIN 区域名
设置管辖的默认区域
$TTL 数字
为没有定义精确的生存周期的记录定义缺省的TTL值
$INCLUDE 文件的路径
包含外部的配置文件
文件实例:
(1) 根区域文件的例子
根区域文件主要用于定义互联网中13台根域服务器的位置,其文件的内容主要由A记录和NS记录构成,看下面的文件内容:
. 3600000 IN NS A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4
. 3600000 NS B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107
. 3600000 NS C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12
. 3600000 NS D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90
. 3600000 NS E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10
. 3600000 NS F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241
. 3600000 NS G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4
. 3600000 NS H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53
. 3600000 NS I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17
. 3600000 NS J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET. 3600000 A 198.41.0.10
. 3600000 NS K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129
. 3600000 NS L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12
. 3600000 NS M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33
(2) 正向区域文件的例子
正向区域文件主要存放指定正向区域内的信息记录,下面是localhost正向区域的区域文件:
$TTL86400
$ORIGIN localhost.
@1D IN SOA@ root (
42; serial (d. adams)
3H; refresh
15M; retry
1W; expiry
1D ); minimum
IN NS@
1D IN A127.0.0.1
(3) 反向区域文件的例子
反向区域文件负责存储反向指针,下面127.0.0.0反向区域的区域文件:
$TTL86400
@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS localhost.
1 IN PTR localhost.
(4) 根据以下要求建立名为abc.zone的区域文件
管辖区域名为abc.com,并授权给本机,管理员的mail地址为root@abc.com
授权的序列号为48,刷新时间为3小时,重试时间为15分钟,默认TTL为86400秒
n abc.com区域的域名服务器的完整名称为www.abc.com.
n 建立主机记录www.abc.com指向192.168.0.1
n 并且给abc.com区域定义IP地址为192.168.0.l
n 给www.abc.com建立别名记录ftp.abc.com
n 建立abc.com区域的邮件服务器位置记录指向www.abc.com
$TTL86400
$ORIGIN abc.com.
@ 1D IN SOA@ Z_an_d@163.net(
48; serial (d. adams)
3H; refresh
15M; retry
1W; expiry
1D ); minimum
1D IN NSwww.abc.com.
1D IN A192.168.0.1
www IN A 192.168.0.1
ftp IN CNAME www
abc.com. IN MX 10 www.abc.com.
4.启动服务
#service named start
四. DNS客户端的设置和测试方法
1.客户端设置
(1)Linux的客户端的设置
#vi /etc/resolv.conf
添加以下选项:
nameserver DNS服务器的IP地址
(2)Windows客户端设置
右击”网络邻居”----双击”本地连接”-----属性-----tcp-ip---输入DNS服务器的地址
2.测试方法
(1)Linux的客户端可的测试方法
方法一:nslookup
方法二:dig
方法三:hosts
(2)Windows客户端的测试方法
方法一:nslookup
五. 配置案例:
案例一:
要求:
利用bind软件将主机dns.linux.net主机制作成一个dns服务器,具体要求如下:
(1) 该服务器负责正向区域linux.net的解析,且ip 地址为192.168.3.1
(2) linux.net 区域的域名服务器为dns..linux.net,且该主机名的ip为192.168.3.1
(3) 如果dns.linux.net不能解析某个域名时,该DNS服务器会转发给192.168.3.10
(4) 在linux.net区域中分别建立记录www指向192.168.3.1,mail主机指向192.168.3.2
(5) linux.net区域内的mail服务器为mail.linux.net
配置过程:
1.安装软件包
#rpm –ivh bind-9.2.1-16.i386.rpm
#rpm –ivh bind-utils-9.2.1-16.i386.rpm
#rpm –ivh redhat-config-bind-1.9.0-13.noarch.rpm
#rpm –ivh caching-nameserver-9.2-7.noarch.rpm
2.建立区域
# vi /etc/named.conf
添加以下内容:
options {
directory “/var/named”;
forwarders {192.168.3.10;}; //添加的内容
};
zone “linux.net” IN { //添加的内容
type master;
file “linux.zone”;
};
3.建立区域文件/var/named/linux.zone
#vi /var/named/linux.zone
$TTL86400
$ORIGIN linux.net.
@1D IN SOA@ root (
49; serial (d. adams)
3H; refresh
15M; retry
1W; expiry
1D ); minimum
1D IN NSdns.linux.net.
1D IN A192.168.3.1
dns IN A 192.168.3.1
www IN A 192.168.3.1
mail IN A 192.168.3.2
linux.net. IN MX 10 mail.linux.net.
4.启动服务
#service named start
案例二:
要求:
利用bind软件建立一台linux.net区域的辅助dns服务器,主服务器ip地址为192.168.3.1
配置过程:
辅助DNS服务器只要在DNS服务器上建立一个辅助区域指向主服务器,不用手工建立区域文件,辅助DNS服务器会自动从主服务器中复制区域文件。
1. 安装相关软件
#rpm –ivh bind-9.2.1-16.i386.rpm
#rpm –ivh bind-utils-9.2.1-16.i386.rpm
#rpm –ivh redhat-config-bind-1.9.0-13.noarch.rpm
#rpm –ivh caching-nameserver-9.2-7.noarch.rpm
2. 建立从区域
#vi /etc/named.conf
添加如下内容:
zone “linux.net” IN {
type slave;
file “linux.zone”;
};
3. 启动服务
#service named start
案例三:
要求:
利用bind和dhcpd制作一台动态DNS服务器; DHCP和DNS同为一台主机,该主机的IP地址为192.168.3.1,DHCP服务器分配作用域范围为192.168.3.2-192.168.3.200;DNS服务器管辖的区域为abc.com
配置过程:
1. DHCP服务器的配置
(1) 安装DHCP服务相关软件
#rpm -ivh dhcp-3.0pl1-23.i386.rpm
(2) 运行ddns-keygen命令产生动态更新的密钥(当前路径为/etc)
#dnssec-keygen -a HMAC-MD5 -b 128 -n USER DHCP_UP
(记下生成密钥)
(3) 建立配置文件/etc/dhcpd.conf
#vi /etc/dhcpd.conf
添加如下内容:
ddns-update-style interim;
ignore client-updates;
key “DHCP_UP” {
algorithm hmac-md5;
secret qhB++OR5yWo8BTXwk/m4ng;
};
zone abc.com {
primary 127.0.0.1;
key “DHCP_UP”;
}
subnet 192.168.3.0 netmask 255.255.255.0
{
defaulst-lease-time 36000;
max-lease-time 72000;
option routes 192.168.3.1;
option domain-name “abc.com”;
option domain-name-servers 192.168.3.1;
range 192.168.3.2 192.168.3.200;
}
(4) 启动服务
#service named start
2. DNS服务器的配置
(1) 安装相关的软件
#rpm –ivh bind-9.2.1-16.i386.rpm
#rpm –ivh bind-utils-9.2.1-16.i386.rpm
#rpm –ivh redhat-config-bind-1.9.0-13.noarch.rpm
#rpm –ivh caching-nameserver-9.2-7.noarch.rpm
(2) 建立区域
# vi /etc/named.conf
添加以下内容:
options {
directory “/var/named”;
};
key “DHCP_UP” {
algorithm hmac-md5;
secret qhB++OR5yWo8BTXwk/m4ng;
};
zone “abc.com” IN {
type master;
file “abc.zone”;
};
(3) 建立区域文件/var/named/abc.zone
#vi /var/named/abc.zone
$TTL86400
$ORIGIN abc.com.
@1D IN SOA@ root (
49; serial (d. adams)
3H; refresh
15M; retry
1W; expiry
1D ); minimum
1D IN NSwww.abc.com.
1D IN A192.168.3.1
www IN A 192.168.3.1
(4) 启动服务
#service named start