主机名:FQDN:Full Qualified Domain Name 完全限定域名
互联网查询分两段,第一段:递归,客户端找NS
第二段:迭代,NS找答案并缓存
DNS服务器类型:
主DNS服务器:数据修改
辅助DNS服务器:请求数据同步
serial number
refresh
retry
expire
nagative answer TTL
数据库中的每一个条目,都称作资源记录(Resource Record,RR)
资源记录格式:
NAME TTL IN RRT VALUE
www.ckl.com 300 IN A 2.2.2.2
2.2.2.2 300 IN PTR www.ckl.com
解释:
NAME:名称
TTL:生存时间
IN:Inter Net
RRT Resource Record Type:资源记录类型
VALUE:数据
资源记录类型:
SOA(Start Of Authority):
ZONE NAME TTL IN SOA ADMIN_MAILBOX (
serial number
refresh
retry
expire
na ttl
)
时间单位:M:(分钟)、H(小时)、D(天)、W(周),默认单位是秒
邮箱格式:[email protected] -> admin.ckl.com
ckl.com. 600 IN SOA ns1.ckl.com. admin.ckl.com. (
201505291716 #序列号
1H #刷新时间
5M #重试时间
1W #过期时间 1D #否定回答TTL值
)
NS(Name server):Domain Name -> FQDN
ckl.com. 600 IN NS ns.ckl.com.
ns.ckl.com. 600 IN A 3.3.3.3
ns1.ckl.com 600 IN A 1.1.1.2
ns2.ckl.com 600 IN A 2.2.2.4
MX(Mail Exchange):ZONE NAME --> FQDN
ZONE NAME TTL IN MX Pri VALUE
优先级,数字越小级别越高
ckl.com. 600 IN MX 10 mail.ckl.com.
mail.ckl.com. 600 IN A 1.1.2.3
A(Address): FQDN -> IPv4
AAAA : FQDN -> IPv6
PTR:IP-> FQDN
CNAME: FQDN -> FQDN.
区域传送类型:
完全区域传送:axfr
增量区域传送:ixfr
区域类型:
主区域:master
从区域:slave
提示区域:hint
转发区域:forward
bind:
/etc/named.conf
bind进程工作属性
区域的定义文件
/var/named:
区域数据文件
named.ca 13根节点文件
查询根节点记录:
# dig -t NS .
named.localhost:
专门将localhost解析成127.0.0.1
named.loopback:
DNS端口:
53/udp
53/tcp
953/tcp,rndc
定义配置文件:
(1)创建配置文件
#mv /etc/named.conf /etc/named.conf.bak
#编辑定义配置文件
#vi /etc/named.conf
options {
directory "/var/named";
allow-recursion { 192.168.1.0/24; };
#允许192.168.1.0网段递归查询
allow-quey {} #定义只允许谁来查询
allow-transfer {} #允许谁来传送
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "named.localhost";
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
};
zone "ckl893.com" IN {
type master;
file "ckl.com.zone";
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "192.168.1.zone";
};
#编辑区域配置文件
#正向区域配置文件
#vi ckl.com.zone
$TTL 600
ckl893.com. IN SOA ckl893.com. admin.ckl893.com (
201505301240
1H
5M
1W
2D)
IN NS ns1.ckl893.com.
IN MX 10 mail
ns1 IN A 192.168.1.189
mail IN A 192.168.1.190
www IN A 192.168.1.190
ftp IN CNAME www
#编译反向区域配置文件
# cat 192.168.1.zone
$TTL 600
@ IN SOA ckl893.com. admin.ckl893.com (
201505301240
1H
5M
1W
2D)
IN NS ns1.ckl893.com.
189 IN PTR ns1.ckl893.com.
189 IN PTR mail.ckl893.com.
190 IN PTR www.ckl893.com.
修改权限
# chown root.named /etc/named.conf
# chown root.named /var/named/ckl.com.zone
# chown root.named /var/named/192.168.1.zone
# chmod 640 /etc/named.conf
# chmod 640 /var/named/ckl.com.zone
# chomd 640 /var/named/192.168.1.zone
(2)检查语法错误:
# named-checkconf
(3)检查区域:
# named-checkzone "ckl893.com" /var/named/named.localhost
# named-checkzone "1.168.192.in-addr.arpa" 192.168.1.zone
(4)测试解析
# dig -t A www.ckl893.com
# dig -t MX ckl893.com
dig 用法:
-t 资源记录 #host -t A www.ckl893.com 一样的
# dig -t SOA ckl893.com
# dig -t A www.ckl893.com #查询www.ckl893.com A记录
# dig -t CNAME ftp.ckl893.com #查询ftp.ckl.com CNAME 记录
# dig -t NS ckl893.com. #查询ckl893.com NS 记录
# dig -t MX ckl893.com
-x IP
根据IP查找FQDN 记录
nslookup:
server IP
set q=RT
NAME
递归查询:
# dig +recurse -t A www.sohu.com @192.168.1.189
不递归查询(迭代):
# dig +norecurse -t A www.xiaomi.com @192.168.1.189
返回结果是根,让自己去查找根
追踪查询过程:
# dig +trace -t A www.baidu.com @192.168.1.189
建立slave
1.安装bind bind-utils 略过
2.修改slave配置文件:
zone "ckl893.com" IN {
type slave;
masters { 192.168.1.189; }; #定义传送的主服务器地址
file "slaves/ckl.com.zone"; #定义传送的文件,不需要建立,自动同步
};
zone "1.168.192.in-addr.arpa" IN {
type slave;
masters { 192.168.1.189; }; #定义传送的主服务器地址
file "slaves/192.168.1.zone"; #定义传送的文件,不需要建立,自动同步
};
3.启动服务器
# /etc/init.d/named start
4.查看文件是否同步
# ls /var/named/slaves/
192.168.1.zone ckl.com.zone
salve增量传送:
(1).在主服务上修改:
$TTL 600
@ IN SOA ckl893.com. admin.ckl893.com (
201505301245 *** 如果修改,此处序列号必须加1 ***
1H
5M
1W
2D)
IN NS ns1
IN NS ns2 #增加从服务器,主服务上必须定义
IN MX 10 mail
ns1 IN A 192.168.1.189
ns2 IN A 192.168.1.190 #同理A记录也必须添加
mail IN A 192.168.1.190
www IN A 192.168.1.190
bbs IN A 192.168.1.193 #这是添加的行
ftp IN CNAME www
重新加载服务器:
# /etc/init.d/named reload
(2).在从服务器上查看
$ORIGIN .
$TTL 600 ; 10 minutes
ckl893.com IN SOA ckl893.com. admin.ckl893.com.ckl893.com. (
3936805629 ; serial
3600 ; refresh (1 hour)
300 ; retry (5 minutes)
604800 ; expire (1 week)
172800 ; minimum (2 days)
)
NS ns1.ckl893.com.
NS ns2.ckl893.com.
MX 10 mail.ckl893.com.
$ORIGIN ckl893.com.
bbs A 192.168.1.193 #此行已经同步
ftp CNAME www
mail A 192.168.1.190
ns1 A 192.168.1.189
ns2 A 192.168.1.190
www A 192.168.1.190
(3).反向解析亦是如此,则不再赘述
使用rndc
(1)生成rndc配置文件
# rndc-confgen > /etc/rndc.conf
# cat /etc/rndc.conf
# Start of rndc.conf
key "rndc-key" {
algorithm hmac-md5;
secret "bdtU+h6JudUooIjZLI9TmA==";
};
options {
default-key "rndc-key";
default-server 127.0.0.1;
default-port 953;
};
# End of rndc.conf
# Use with the following in named.conf, adjusting the allow list as needed:
# key "rndc-key" {
# algorithm hmac-md5;
# secret "bdtU+h6JudUooIjZLI9TmA==";
# };
#
# controls {
# inet 127.0.0.1 port 953
# allow { 127.0.0.1; } keys { "rndc-key"; };
# };
# End of named.conf
(2) 将下面注释的行追加到named.conf
:,$-1w >> /etc/named.conf
(3)编辑named.conf
:,$s/# //g
重启服务进程
(4)完成后可以通过rndc控制服务器
查看进程状态
# rndc -c /etc/rndc.conf status
version: 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.3
CPUs found: 1
worker threads: 1
number of zones: 20
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running
手动通知区域:
# rndc -c /etc/rndc.conf notify "ckl893.com"
清空缓存:
# rndc -c /etc/rndc.conf flush
使用rndc远程控制,一般不开启的,知晓可以
本机是:192.168.1.189
远程slave是:192.168.1.190
允许远程192.168.1.190控制本地
(1)修改named.conf配置文件打开ip
controls {
inet 192.168.1.189 port 953 #修改为外网地址
allow { 192.168.1.190; } keys { "rndc-key"; }; #远程可以控制的主机
};
重启进程
(2)拷贝配置文件
scp 192.168.1.189:/etc/rndc.conf /root
(3)修改配置文件
options {
default-key "rndc-key";
default-server 192.168.1.189; #修改为要远程控制的主机
default-port 953;
};
(4)远程控制
DNS子域
增加两个子域测试
(1) 编辑ckl.com.zone 配置文件(增加两条子域):
dx IN NS ns1.dx
ns1.dx IN A 192.168.1.66
mk IN NS ns1.mk
ns1.mk IN NS 192.168.1.77
(2)配置子域服务器
安装包,配置文件,跟主的雷同,不在赘述
默认子域找不到父域
配置子域找父域(转发)
forward{only|fist}
first:首先转发
only:配置自己查找根
配置所有的转发:
options {
directory "/var/named";
forward first; #此行
forworders {192.168.1.189;}; #此行
allow-recursion { 192.168.1.0/24; };
notify yes;
};
如果配置只对一个区域的解析转发:
zone "ckl89.com" IN {
type forward;
forwarders { 192.168.1.189;};
}
acl
定义在文件最上方:
acl innet {
192.168.1.0/24;
127.0.0.1;
}
zone "ckl89.com" IN {
type forward;
forwarders { inet;};
}
view视图
*** 所有区域必须定义在视图中 ***
(1)定义服务器配置内容
acl tnet {
192.168.1.0/24; #定义电信区域
};
options {
directory "/var/named";
allow-recursion { tnet; };
};
//电信区域视图
view telcom {
match-clients { tnet; };
zone "ckl893.com" IN {
type master;
file "telckl.com.zone";
};
};
//联通区域视图
view unicom {
match-clients { any; };
zone "ckl893.com" IN {
type master;
file "unickl.com.zone";
};
};
(2)定义区域文件,定义两个,一个电信,一个联通
电信区域文件
# cat telckl.com.zone
$TTL 86400
@ IN SOA ns1.ckl893.com. admin.ckl893.com. (
201506011138
1H
5M
1W
2D)
IN NS ns1.ckl893.com.
IN MX 10 mail
ns1 IN A 192.168.1.189
mail IN A 192.168.1.190
www IN A 192.168.1.190
联通区域文件
# cat unickl.com.zone
$TTL 86400
@ IN SOA ns1.ckl893.com. admin.ckl893.com. (
201506011138
1H
5M
1W
2D)
IN NS ns1.ckl893.com.
IN MX 10 mail
ns1 IN A 192.168.1.189
mail IN A 10.10.8.88
www IN A 10.10.8.99
(3)测试解析
在192.168段主机测试:
# dig -t A www.ckl893.com @192.168.1.189
...
www.ckl893.com. 86400 IN A 192.168.1.190
在10.10段主机测试:
...
www.ckl893.com. 86400 IN A 10.10.8.99
log 日志系统:
category:日志源
查询
区域传送
可以通过category自定义日志来源
channel:日志保存位置
syslog
file
定义查询日志:
....
logging {
channel querylog {
file "/var/log/named/bind_query.log" versions 3; #日志路径及保留三个版本
severity dynamic; #日志级别
print-category yes; #打印日志信息
print-time yes; #打印时间
print-severity yes; #打印级别
};
category queries { querylog; };
};
....
定义传输日志:
logging {
channel querylog {
file "/var/log/named/bind_query.log" versions 3;
severity dynamic;
print-category yes;
print-time yes;
print-severity yes;
};
channel xfer_log {
file "/var/log/named/transfer.log" versions 3; #定义传输文件路径
severity debug 3; #定义级别
print-time yes; #定义传输时间
};
category queries { querylog; };
category xfer-out { xfer_log; }; #定义传输日志
};
传输:
# dig -t axfr ckl893.com @192.168.1.189
查看日志
bind压力测试
queryperf
安装:
# tar -xf bind-9.9.2.tar.gz
# cd bind-9.9.2/contrib/queryperf
# ./configure
# make
# cp queryperf /bin/
queryperf:
-d 指定datafile
-s 指定服务器
-p 指定port
-q 指定查询次数
查询测试:
(1)编辑文件
vim cf
www.ckl893.com A
mail.ckl893.com MX
ns1.ckl893.com NS
(2)查询测试:
# queryperf -d cf -s 192.168.1.189
dnstop 压力测试:
#tar -xf dnstop-20140915.tar.gz
#cd dnstop-20140915
#make && make install
# /usr/local/bin/dnstop -4 -Q -R eth0
-4 ipv4
-Q 显示查询
-R 显示响应
eth 端口