NDS domain name server (域名服务)
协议: DNS
UDP :53
TCP :53
实现软件 : bind(Berkeley Internet Name Domain) PowerDNS , dnsmasq
名称解析:将一种格式的信息转化为另外一种格式,以某关键字为标准查找某一数据库的过程
passwd <--> nsswitch转换
login:nsswitch为login提供服务
nsswitch配置文件在/etc/nsswitch
hosts:files dns
files /ect/hosts (存放主机名或者别名和IP)
dns 不用host文件 集中向一个服务器提出申请
根域(.)-->一级域(ICCNA)-->二级域(组织域)
namespace:名称空间 容纳名称的整体范围
一级域:
组织域:.com , .org , .mil , .gov , .edu , .net,.jp,.ir(伊朗),.iq(伊拉克),.us,.uk
国家域: .cn , .hk , .tw
反向域: .in-addr.arpa
FQDN:Full Qualified Domain Name 完全域名解析
FQDN –> IP 正向解析
IP –> FQDN 反向解析
递归查询 :只发出一次请求对方给出最终答案
迭代查询 :发起一次请求,不一定得到答案
课户端指向的DNS服务器,一定是允许给本地主机做递归的
数据库每一个条叫一个资源记录(Resource Record),资源记录有类型 ,用于表示资源的功能
SOA : start of authority 起始授权
NS : Name Server, 域名服务器
MX : Mail eXchanger 邮件交换器
A:Address,(FQDN-->IP) 地址记录 正解
PTR: PoiTeR,(IP-->FQDN) 指针记录 反解
AAAA: Address,FQDN-->IPv6
CNAME:Canonical Name,正式名称(别名记录)
<!-- 早期的DNS 只支持 FODN-->iP ,正方向解析数据不同,不能存放于同一个数据库进行 -->
域: Domain ,逻辑概念
区域: zone ,物理概念 也就是数据文件
DNS服务器类型:
主DNS服务器
辅助DNS服务器
缓冲名称服务器
转发服务器
DNS的数据库文件(区域数据文件,区域自身有名字):文本文件,只能包含资源记录或宏定义,每行一个
资源记录的格式
name [ ttl 缓存纪录] IN RRtype(资源记录类型) Value
列子:
www 600 IN A 1.2.3.4
www.magedu.com. 600 IN A 1.2.3.4
SOA: 只能一个
name : 只能是区域名称,通常可以简写为@,例如:magedu.com.
value: 有n个数值,最主要的是主DNS服务器的FQDN,点不可省略
<!-- 注意:SOA 必须是区域数据库文件第一条记录-->
例子:
@ 600 IN SOA na.magedu.com. 邮箱地址(dnsadmin.magedu.com. ;把@变为.了 )( 序列号(serial number) ; 注释内容,十进制数据,不能超过10位,通常使用日期,例如2014031001
刷新时间(refresh time) ;即每隔多久到主服务器检查一次
重试时间(retry time) ;应该小于refresh time
过期时间(expire time)
netgative answer ttl ;否定答案的ttl 客户端可以缓存多久的
)
<!-- ;是注释-->
NS: 可以有多条
name: 区域名称,通常可以简写为@
value : DNS 服务器的FQDN(可以使用相对名称)
例如: @ 600 IN NS ns
A:
name : FQDN ( 可以使用相对名称)
value: IP
列子:
www 600 IN A 1.2.3.4
www 600 IN A 1.2.3.5
ftp 600 IN A 1.2.3.5
AAAA : ipv6
MX :可以有多个
name : 区域名称,用于标示 smtp 服务器
value :包含优先级和FQDN
优先级的: 0-99 数字越小,级别越高
列子:
@ 600 IN MX 10 mail
@ 600 IN MX 20 mail2
CNAME : 别名
name : FQDN
value :FQDN
列子: ftp IN CNAME www
PTR: 指针纪录 IP-->FQDN 只能记录在方向区域数据文件中,反向区域名称为逆向网络地址加 .in-addr.arpa. 后缀组成
name: IP ,主机地址反过来写 例如: 172.16.100.7 的name 为7.100,完全格式为:7.100.16.172
value : FQDN
列子:
4.3.2 600 IN PTR www.maged.com.
定义: 辅助DNS服务器从主DNS服务器或其他的辅助DNS服务器请求数据传输过程
完全区域传送:传送区域的所有数据,AXFR
增量区域传送:传送区域中改变的数据部分,IXFR
acl telecom{
1.2.0.0/16
4.5.8.0
}
acl unicom{
6.4.0.0/16
4.5.3.0
}
view { //一个逻辑的dns服务器
recursion no; 不给递归
match-clients {telecom}; //telecom 是一个acl 范围
zone "magelinux.com" IN {
type master ;
file "magelinux.com.internal"; //文件可以是同一个
};
};
view {
match-clients{ unicom }; //unicom 是一个 acl 范围
zone "magelinux.com" IN {
type master;
file "magelinux.com.external";
};
};
缺陷: 如果IP地址没有收集齐全,就悲剧了, 所以最好还是定义一个Other (默认)
view {
match -clients {any ;}
zone "magelinux.com" IN {
type master;
file "magelinux.com.other";
};
};
只要写入view,所有的都应该写在view中
自上而下匹配
主配置文件: :定义区域 /etc/named.conf
案例: magelinux.com
主配置文件 定义区域 /etc/named.conf
至少有三个区域:
根,localhost ,127.0.0.1
options {
listen -on port 53 { any;};
//全局选项
directory "/var/named" ;
allow-query { any; }; 允许所有客户端查询
recursion yes | on ; 是否运行递归
} ;
zone "zone name" IN {
//定义区域的
type{hint(根)|master(主)|slave(从)|forward(转发)}
file “named.ca”
} ;
loggin {
//定义日志的
};
include "文件位置" 加载别的文件
<!--
named-checkconf 检查主配置文件 service named configtest
named -u named 手动启动
name-checkzone "区域" “区域文件位置” 检查配置文件 -->
定义监听的地址
recursion 是否允许递归查询
dig 命令
dig [-t type] [-x a ddr] name @DNS服务器
+[no]trace [不]适用迭代
+[no]tcp 是否使用tcp
+[no]recurse:是否使用递归
host
host[-t type] {name} [server]
nslookup
nslookup>
server DNS_SERVER_IP
set q=TYPE
{name}
区域数据文件 /var/named/
用户: named
组: named
第一条必须SOA
应该具有NS记录,但不能出现MX和A 记录
较常见的即为PTR纪录
名称为逆向的主机地址
反解:
zone "100.16.172.in-addr.arpa " IN {
type master ;
file "172.16.100.zone";
}
在 /var/named/下创建172.16.100.zone
![](media/14595736364157/14601888712923.jpg)
tail /var/log/messages 检查日志
dig -x 172.16.100.7
检查区域 named-checkzone "100.16.172.in-addr.arpa" 172.16.100.zone
用dig 模拟完全区域传送
#dig -t axfr 区域名称 @server
主从同步: /etc/resolv.conf
nameserver Master_DNS_IP
nameserver SLAVE_DNS _IP
主从版本:
主: bind版本可以低于从的版本
从: 主的版本不能高于从的版本 兼容问题
向区域中添加从服务器的关键两步 :
1. 在上级获得授权)
2. 在区域数据文件中为从服务器添加一天ns记录和对应的A记录 或PTR纪录
在/etc/named.rfc1912.zones下
zone "magelinux.com" IN {
type slave;
masters { 172.16.100.7 ; };
file "slaves/magelinux.com.zone";
}
区域传送安全控制:
allow-transfer { IP ; }; 指定IP做区域传送
远程管理bind的工具
Rndc : 密钥
rndc :保存于rndc 的配置文件中
bind: 持有一半点的密钥,保存于主配置文件中
rndc 的配置文件 /etc/rndc.conf
CentOS ,RHEL : /etc/rndc.key
reconfig 只重新读取配置文件并且加载新增加的区域
querylog: 关闭或开启查询日志
stop 关闭服务
flush 清空服务器的缓存
flushname name:只清空指定名称相关的缓存
trace:打开debug,调试模式,debug有级别的概念,每执行一次提升一个等级
trace LEVEL:指定debug的级别
如果rndc无法正常工作,可尝试使用rndc-confgen生成/etc/rndc。conf配置文件,并将配置文件中的后半部分复制到BIND的主配置文件中按指示启用即可
rndc-confgen > /etc/rndc.conf
定义: 在父域的配置文件中添加如下项:
授权的子区域名称
子区域的名称服务器
子区域的名称服务器的IP地址
名称 IN NS IP dns.tech 子域名
glue record 胶水效果
定义: 解析某本机不负责的区域内的名称时不转发给根,而是转给制定的主机 转发非本机负责解析的所有区域
options{
forward only|frist
forwarders{ ip; }
}
转发某特定区域
zone"特定区域" IN{
type forward;
forwarders{ ip; }
forward only | frist
<!-- only:服务器将只会请求 forwarders中的DNS主机
frist: 服务器首先请求 forwarders list ,如果 forwarders list 中的DNS主机不应答,该主机将自己去找应答-->
}
运行使用转发的前提: 本机要在对方的允许的递归主机列表中
allow-transfer{};通常都需要启用,从服务器
allow-query{};此项仅用于服务器是缓存名称服务器时,只开放查询功能给本地客户端
allow-recursion{可以使用网段};允许递归的白名单
allow-update{ none; }:允许动态更新数据文件的主机白名单
acl ACL_NAME{
172.16.0.0/16
192.168.0.0/24
127.0.0.0/8
}
访问控制列表只有定义后才能使用,通常acl要定义在named.conf的最上方
BIND有四个内置的acl
any:任何主机
none:无一主机
local:本机
localnet:本机所在的网络
view,编译安装named,如何实现对named做压力测试,BIND dlz
1.修改/etc/named.conf
listen-on port 53 {any;};
allow-query {any;};
2.修改/etc/named.rfc1912.zones 添加要解析的域
zone "xxx.com" IN {
type master;
file "xxx.com.zone";
allow-update {none;};
} ;
3. 添加数据库文件/var/named/xxx.com.zone
xxx.com. IN SOA ns1.xxx.com. root.xxx.com. (20160402 1d 1h 1w 1h)
xxx.com. IN NS ns1.xxx.com.
ns1.xxx.com. IN A 192.168.30.98
www.xxx.com IN A 192.168.30.98
4.重启服务
service named restart
5. 修改/var/named/xxx.com.zone 文件的用户和用户组
chown named.named /var/named/ —R
6.检查nameserver 是否为本机IP
nameserver 192.168.30.98
7.重启服务
service named restart
8. nslookup 测试 nslookup IP
$TTL 600
@ IN SOA dns.magelinux.com. dnsadmin.magelinux.com. (
20160410 1H 5M 3D 12H)
IN NS dns
IN MX 10 dns
www IN A 192.168.1.11
dns IN A 192.168.1.10
mail IN A 192.168.1.12
pop IN CNAME mail
ftp IN CNAME www
//加入信息
tech IN NS dns.tech.magelinux.com.
dns.tech.magelinux.com. IN A 192.168.10
要在另外一台服务器中增加
vim /etc/named.rfc1912.zones
zone "tech.magelinux.com" IN {
type master;
file "tech.magelinxu.com.zone";
}
创建一个 techo.magelinux.com.zone
$TTL 600
@ IN SOA dns.tech.mageliunx.com (20160410 1H 5M 3D 1D)
IN NS dns
IN MX 10 mail
dns IN A 192.168.2.10
www IN A 192.168.2.11
ftp IN A 192.168.2.12
更改属组 和权限