DNS服务器
一.DNS服务基础知识
1. 名称解析
(1) netbios名称解析
-广播解析
-lmhosts解析
-Wins解析
(2) FQDN名称解析
-hosts解析
-NIS解析
-DNS解析
2. DNS体系结构
(1) 域名空间
(2) DNS服务器
-主DNS服务器
-从DNS服务器
-缓存DNS服务器
(3) DNS客户机
3. 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. 申请区域管理权
2. 配置静态IP地址
#netconfig -d 接口名
3. 安装bind软件
(1) rpm安装方式
#rpm -ivh bind-9.2.1-16.i386.rpm
#rpm -ivh bind-utils-9.2.1-16.i386.rpm
#rpm -ivh caching-nameserver-7.2.7.i386.rpm
(2) 编译安装方式
#tar -xzvf bind-9.2.1.tar.gz
#cd bind-9.2.1
#./configure --prefix=/usr/local/bind
--enable-threads
--disable-ipv6
#make
#make install
#cd /usr/local/bind
#mkdir etc var var/run
#groupadd named
#usreadd -g named named
#chown -R named.named var
4. 修改named.conf文件
#vi /etc/named.conf
named.conf的配置语句
(1) options {
.........
配置子语句;
.......
};
作用: 定义DNS服务器全局选项
子语句:
-version "版本号"; //定义bind的版本号
-directory "路径";
设置数据文件存放的位置
-recursion yes/no;
设置服务器是否递归查询
-forwarders { ip地址; };
定义服务器的转发器地址
-allow-query { ip地址列表; };
定义允许DNS服务器发送查询请求的客户机列表
-allow-transfer { ip地址列表; };
定义服务器能够向哪些服务器进行区域复制
-allow-recursion { ip地址列表; };
设置服务器允许哪些客户机进行递归查询
-black-hole { ip地址列表; };
设置拒绝查询的客户机列表
-listen-on [port 端口号] {ip地址列表;};
设置监听端口
(2) zone "区域名" IN {
......
子语句;
.....
};
作用:设置服务器管理的区域信息
子语句:
-type master/slave/hint;
设置区域的类型
-file "文件名";
设置区域数据库文件名
-masters { ip地址; };
设置主服务器位置,当type=slave时才需要设置
-allow-update { none;/key "密钥名";/ip地址; };
当type=master时,用于设置区域是否允许动态更新
(3) include "文件路径";
包含其他配置文件
(4) controls {
inet ip地址 allow { 主机名;/ip地址; } keys {密钥名称; };
设置rndc工具的参数
(5) key "名称" {
.....
子语句;
.....
};
作用: 定义密钥
子语句:
-algorithm hmac-md5;
定义加密算法
-secret "密文";
设置密钥的内容
(6) logging {
.......
channel 通道名 {//定义日志的记录通道
.........
通道选项;
.........
};
.......
category 类别 {//设置指定类别的日志使用哪个通道
................
通道名;
............
};
};
作用: 定义DNS服务器的内部日志的记录方式
通道选项:
-file "文件名" [versions 数字] [size 数字];
设置将日志记录到指定的文件中
-syslog 对象类型
设置使用syslog服务进行日志记录
-severity 等级
设置事件的等级
-print-category yes/no;
设置是否在日志中记录日志的类别
-print-time yes/no;
设置是否在日志中记录事件发生的时间
-print-severity yes/no;
设置是否在日志中记录事件的等级
事件类别:
-queries //查询事件
-config //配置文件的高级处理
-update //动态更新事件
-xfer-in //从其他服务器复制区域数据事件
-xfer-out //向其他服务器复制区域数据事件
-db //所有数据库的操作事件
-default //所有未分类的事件
(7) view "名称" {
match-clients { ip地址列表; };
.....
zone ...
......
};
定义解析视图
注: -利用named-checkconf可检查named.conf的语法错误
4.创建区域数据库
(1) 区域数据库文件的格式
......
区域命令
.........
名称 [TTL] IN 类型 值
......
(2) 记录类型
-SOA记录
作用:设置区域的授权信息
实例:
. 1D IN SOA ns..admin..(
1111 //序列号
1H //更新间隔
15M //重试间隔
1D //有效期
1D) //默认TTL
-NS记录
作用:设置区域名称服务器位置
实例:
. IN NS ns..
-A记录
作用:设置主机名对应的IP地址
实例:
www.. IN A 192.168.3.1
ftp IN A 192.168.44.1
-MX记录
作用:设置邮件交换器
实例:
. IN MX 10 mail..
-CNAME记录
作用:设置主机CNAME
实例:
ftp.. IN CNAME www..
-PTR记录
作用:定义反向指针,将IP地址指向域名
实例:
1 IN PTR www..
(3) 区域指令
-$TTL 数字 定义默认TTL
-$ORIGIN 区域名 定义默认区域名
-$INCLUDE 文件路径 包含指定的文件
(4) 区域数据库文件的样本
-正向区域数据库文件
$TTL 86400
$ORIGIN .
. IN SOA ns.. admin..(
2222
1H
10M
1D
1D)
. IN NS ns..
ns.. IN A 192.168.1.1
ftp..IN A 192.168.1.2
mail.. IN A 192.168.1.3
. IN MX 10 mail..
-反向区域数据库文件
$TTL 86400
@ IN SOA ns.. admin..(
111
1H
10M
1D
1D)
IN NS ns..
1 IN PTR ns..
2 IN PTR ftp..
注:-可利用"named-checkzone 区域名 区域数据库文件"命令检查区域数据库文件的语法问题
4. 启动dns服务
(1) rpm方式安装的bind
-设置自动启动
#ntsysv [--level 数字]
-手工启动
#service named start
(2) 编译安装的bind
-手工启动
#/usr/local/bind/bin/named -c 配置文件路径 -p 53 -u 用户名
-设置自动启动
#vi /etc/rc.d/rc.local
..........
/usr/local/bind/bin/named -c 配置文件路径 -p 53 -u 用户名
三. DNS客户机配置与测试
1. Windows客户机
(1) ping
(2) nslookup
2. Linux客户机
(1) ping
(2) host
(3) dig
(4) nslookup
四. DNS服务器配置案例
案例一:现需要架设一台DNS服务器,具体要求如下:
(1) 关闭递归,允许与从服务器进行区域传递
(2) 该DNS服务器负责正向区域和反向
192.168.1.0网段的解析,并作为主服务器
(3) 为和192.168.1.0区域添加从服务器,减轻主服务器的负载
(4) 为保证DNS服务器安全,要求将两台DNS服务器配置chroot模式
实例实施过程:
1.主服务器的配置
(1) 安装bind
(2) 修改named.conf
#vi named.conf
...........
options {
.....
directory "/var/named";
recursion no;
allow-transfer { 192.168.1.222; };
.....
};
.....
zone "" IN {
type master;
file "linux.zone";
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "192.zone";
};
(3) 创建区域数据库
#vi /var/named/linux.zone
$TTL 1D
$ORIGIN .
. IN SOA dns.. admin.. (
333
1H
15M
1D
1D)
. IN NS dns..
dns.. IN A 192.168.1.2
www.. IN A 192.168.1.1
#vi /var/named/192.zone
$TTL 1D
@ IN SOA dns.. admin.. (
444
1H
15M
1D
1D)
IN NS dns..
1 IN PTR www..
2 IN PTR dns..
(4) 设置chroot运行环境
-创建相关目录
#mkdir /chroot/bind -p
#cd /chroot/bind
#mkdir dev etc var var/named var/run var/run/named
-创建设备文件
#cd /chroot/bind/dev
#mknod random c 1 8
#mknod zero c 1 5
#mknod null c 1 3
-复制相关文件到相应目录中
#cp /etc/rndc.key /chroot/bind/etc
#cp /etc/rndc.conf /chroot/bind/etc
#cp /etc/named.conf /chroot/bind/etc
#cp /etc/localtime /chroot/bind/etc
#cp /var/named/* /chroot/bind/var/named
-修改相关目录及文件的权限
#chown -R named.named /chroot/bind/var/run/
#chmod 644 /chroot/bind/etc/rndc.*
(5) 启动dns服务(以chroot运行模式)
#/usr/sbin/named -t /chroot/bind -u named -p 53
2. 配置从服务器
(1) 安装bind
(2) 修改named.conf
#vi named.conf
...........
options {
.....
directory "/var/named";
recursion no;
allow-transfer { 192.168.1.2; };
.....
};
.....
zone "" IN {
type slave;
file "linux.zone";
masters { 192.168.1.2; };
};
zone "1.168.192.in-addr.arpa" IN {
type slave;
file "192.zone";
masters { 192.168.1.2; };
};
(3) 设置chroot运行环境
-创建相关目录
#mkdir /chroot/bind -p
#cd /chroot/bind
#mkdir dev etc var var/named var/run var/run/named
-创建设备文件
#cd /chroot/bind/dev
#mknod random c 1 8
#mknod zero c 1 5
#mknod null c 1 3
-复制相关文件到相应目录中
#cp /etc/rndc.key /chroot/bind/etc
#cp /etc/rndc.conf /chroot/bind/etc
#cp /etc/named.conf /chroot/bind/etc
#cp /etc/localtime /chroot/bind/etc
#cp /var/named/* /chroot/bind/var/named
-修改相关目录及文件的权限
#chown -R named.named /chroot/bind/var/run/
#chmod 644 /chroot/bind/etc/rndc.*
(4) 启动dns服务(以chroot运行模式)
#/usr/sbin/named -t /chroot/bind -u named -p 53
案例二:现有一企业网,要实现DNS名称解析,具体要求如下:
(1) 企业网中所有客户采用DHCP自动获取
(2) 架设DNS服务器提供区域的解析,并能够转发请求到202.102.192.68服务器上
(3) 为每个客户机在DNS服务器上定义主机记录,实现主机间可用各自的DNS主机名相互访问
案例实施过程:
1. 配置DNS服务器
(1) 安装bind
....
(2) 修改named.conf
#vi /etc/named.conf
options {
directory "/var/named";
forwarders { 202.102.192.68; };
}
......
zone "" IN {
type master;
file "hfsje.zone";
allow-update { key "rndckey"; };
};
......
(3) 创建区域数据库
......
(4) 启动DNS服务
......
2. 配置DHCP服务器
(1) 安装dhcp软件
....
(2) 修改/etc/dhcpd.conf
#vi /etc/dhcpd.conf
ddns-update-style interim;
default-lease-time 3600;
max-lease-time 7200;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.3 192.168.100;
option routers 192.168.1.254;
option domain-name "sje.cn";
option domain-name-servers 192.168.1.2;
}
key "ddns" {
algorithm hmac-md5;
secret "123asdljfoqwewe";
};
zone sje.cn {
primary 127.0.0.1;
key "ddns";
}
(3) 启动dhcp服务
#service dhcpd start
案例三:配置DNS服务器,实现对双线主机进行解析,能够让不同区域的客户机对同一个主机名解析可获得不同的IP地址
配置过程:
1. 安装bind软件
....
2. 修改named.conf
#vi /etc/named.conf
.....
options {
directory "/var/named";
allow-transfer { none; };
forwarders { 202.102.192.68; };
};
view "lan" {
match-clients { 192.168.1.0/24; };
.....
zone "sje.cn" IN {
type master;
file "sje.zone";
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "192.zone";
};
};
view "wan" {
match-client { any;!192.168.1.0/24; };
zone "sje.cn" IN {
type master;
file "sjewan.zone";
};
};
.....
3. 创建区域数据库
....
4. 启动服务
...