DNS:域名解析,BIND:Berkeley Internet Name Domain
TLD:顶级域
组织域:.com,.org,.net,.cc
国家域:.cn,.tw,.hk,.iq,,ir,jp
反向域:将IP地址转化为主机名
反向:IP-->FQDN
正向:FQDN-->IP
查询:
递归:只发出一次请求
迭代:发出多次请求
DNS服务器
接受本地客户查询请求(递归)
外部客户端请求:请求权威答案
肯定答案:TTL
否定答案:TTL
外部客户端请求:非权威答案
DNS分布式数据库,上级仅知道其直接下级,下级只知道根的位置
DNS服务器类型
主DNS服务器:数据修改
辅助DNS服务器:请求数据同步
缓存DNS服务器
转发器
数据库中的每一个条目称作一个资源类型(Resource Record,RR)
资源记录的格式:
TTL 600
NAME {TTL} IN PRT VALUE
www.xx.com. IN A 1.1.1.1
1.1.1.1 IN PRT www.xx.com.
资源记录类型
SOA(Start Of Authority) 起始授权记录
ZONE NAME TTL IN SOA FQDN 邮箱地址
\serial name;版本号-不能超过10位
refresh;刷新时间
retry;重试时间
expire;重试多久
na ttl;自杀时间
时间单位:H(小时),M(分钟)、D(天)、W(周),默认单位是秒
邮箱格式:[email protected]要写成137.qq.com
eg:xx.com 600 IN SOA ns.xx.com 137.qq.com 201409301 1H 5M 1W 1D
NS(Name Server):ZONE-->FQDN 名称服务器
xx.com. 600 IN NS ns.xx.com.
ns.xx.com. 600 IN NS 1.1.1.1
MX(Mail eXchanger):ZONE NAME-->FQDN 邮件交换器
ZONE NAME TTL IN MX PRI VALUE
优先级从0-99,数字越小级别越高
xx.com. 600 IN MX 10 mail.xx.com.
mail.xx.com. 600 IN A 1.1.1.1
A(address):FQDN-->IPv4(主机-->IP)
AAAA:FQDN-->IPv4
PTR(pointer):IP-->FQDN
CNAME(正式名称/别名):FQDN-->FQDN 别名记录
www2.xxx.com IN CNAME www.xxx.com
TXT
CHAOS
SRV
域 :Domian 逻辑概念
区域:Zone 物理概念
建立两个区域文件:
正向区域文件:
xx.com. IN SOA
www.xx.com. IN A 192.168.0.1
简写为:www IN A 192.168.0.1
反向区域文件
0.168.192.in-addr.arpa. IN SOA
1.0.168.192-in-addr.arpa. IN PRT www.xxx.com.
简写:1 IN PRT www.xxx.com.
区域传送的类型
完全区域传送:axfr
增量区域传送:ixfr
区域类型:
主区域:master
从区域:slave
提示区域:hint 定义根的位置
转发区域:forward
bind
/etc/named.conf
主配置文件,bind进程的工作属性,区域定义
/etc/rndc.key
让RNDC工作的密钥文件
配置信息:/etc/rndc.conf
/var/named/
区域数据文件:默认管理员要自己定义
/etc/rc.d/init.d/named
caching-nameserver:构建缓存DNS的包
dig -t NS .
dig -x IP:根据IP查找FQDN
host -t RT NAME:查询名称的解析结果
/var/named/named.ca 根服务器地址
/var/named/named.localhost
/var/named/named.oopback 本地主机正反向解析
DNS坚挺的协议及端口:53/udp,53/tcp,953/tcp,rndc远程域名服务器控制器
在/etc/named.conf文件中
区域定义
zone "zone name" IN {
type{master|slave|hint|};
};
主区域:file “区域数据文件”
从区域:file "区域数据文件"
masters {master_ip;};
allow-recursion 定义递归对象
# forward only|first; 转发
#forwarders { 192.168.1.201 };转发对象
forward指令用于设置DNS转发的工作方式:
first设置优先使用forwarders指定的服务器做域名解析,如果查询不到再使用本地DNS服务器做域名解析
only设置只使用forwarders DNS服务器做域名解析,如果查询不到则返回DNS客户端查询失败。
forwarders指令用于设置将DNS请求转发到哪个服务器,可以指定多个服务器的IP地址。
构建DNS服务器
yum install bind97 bind97-utils bind97-libs
vim /etc/named.conf
options {
directory "/var/named";
# forward only|first; 转发
#forwarders { 192.168.1.201 };转发对象
};
zone "." in {
type hint;
file "named.ca";
};
zone "shilei.com" in {
type master;
file "shilei.com.zone";
};
zone "1.168.192.in-addr.arpa" in {
type master;
file "1.168.192.zone";
};
cd /var/named/
vim shilei.com.zone
$TTL 600
@ IN SOA ns.shilei.com. admin.shilei.com. (
2014100201
1H
5M
2D
6H )
IN NS ns.shilei.com.
IN MX 10 mail
ns IN A 192.168.1.201
mail IN A 192.168.1.2
www IN A 192.168.1.1
www IN A 192.168.1.3
ftp IN CNAME www
vim 1.168.192.zone
$TTL 600
@ IN SOA ns.shilei.com. admin.shilei.com. (
2014100201
1H
5M
2D
6H )
IN NS ns.shilei.com.
1 IN PTR ns.shilei.com.
1 IN PTR www.shilei.com.
2 IN PTR mail.shilei.com.
3 IN PTR www.shilei.com.
chmod 640 1.168.192.zone
chmod 640 shilei.com.zone
chown root:named shilei.com.zone
chown root:named 1.168.192.zone
named-checkconf
named-checkzone "shilei.com" shilei.com.zone #检查正向区域是否正确
named-checkzone "1.168.192.in-addr.arpa" 1.168.192.zone #检查反向区域是否正确
service named restart
故障原因:启动或重启DNS服务时,卡在Generating /etc/rndc.key:上很长时间
解决方法:
执行以下命令:
rndc-confgen -r /dev/urandom -a
然后再重启DNS服务:
service named start
服务正常
#测试
dig -t A www.shilei.com 或 dig -t NS .或 dig -t PTR shilei.com
[root@localhost named]# dig -t A www.shilei.com
; <<>> DiG 9.7.0-P2-RedHat-9.7.0-21.P2.el5 <<>> -t A www.shilei.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4493
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;www.shilei.com. IN A
;; ANSWER SECTION:
www.shilei.com. 600 IN A 192.168.1.1
www.shilei.com. 600 IN A 192.168.1.3
;; AUTHORITY SECTION:
shilei.com. 600 IN NS ns.shilei.com.
;; ADDITIONAL SECTION:
ns.shilei.com. 600 IN A 192.168.1.201
;; Query time: 7 msec
;; SERVER: 192.168.1.201#53(192.168.1.201)
;; WHEN: Thu Oct 2 07:39:34 2014
;; MSG SIZE rcvd: 97
[root@localhost named]# dig -x 192.168.1.3
; <<>> DiG 9.7.0-P2-RedHat-9.7.0-21.P2.el5 <<>> -x 192.168.1.3
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14233
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;3.1.168.192.in-addr.arpa. IN PTR
;; ANSWER SECTION:
3.1.168.192.in-addr.arpa. 600 IN PTR www.shilei.com.
;; AUTHORITY SECTION:
1.168.192.in-addr.arpa. 600 IN NS ns.shilei.com.
;; ADDITIONAL SECTION:
ns.shilei.com. 600 IN A 192.168.1.201
;; Query time: 8 msec
;; SERVER: 192.168.1.201#53(192.168.1.201)
;; WHEN: Thu Oct 2 07:40:10 2014
;; MSG SIZE rcvd: 103
或者在windows中nslookup
>nslookup
server 192.168.1.201
set q=A
www.shilei.com
mail.shilei.com
set q=PTR
192.168.1.2
配置DNS从服务器
yum install bind97 bind97-utils bind97-libs
vim /etc/named.conf
options {
directory "/var/named";
};
zone "." in {
type hint;
file "named.ca";
};
zone "shilei.com" in {
type slave;
masters { 192.168.1.XXX; };
file "slaves/shilei.com.zone";
};
zone "1.168.192.in-addr.arpa" in {
type slave;
masters { 192.168.1.XXX; };
file "slaves/1.168.192.zone";
};
rndc:DNS远程管理工具
rndc-confgen > /etc/rndc.conf
vim /etc/rndc.conf
把如下文件去掉#,追加保存到/etc/named.conf
# key "rndc-key" {
# algorithm hmac-md5;
# secret "zxQHnUE4pBuZkytashXxlQ==";
# };
#
# controls {
# inet 127.0.0.1 port 953
# allow { 127.0.0.1; } keys { "rndc-key"; };
# };
rm -rf /etc/rndc.key
service named restart
测试
rndc -c /etc/rndc.conf status
如要实现远程访问,需修改/etc/named.conf
controls {
inet 192.168.1.201 port 953
allow { 192.168.1.114; } keys { "rndc-key"; };
};
#其中201是监控的服务器地址和端口
#114是允许远程管理的地址
然后把named.conf拷贝到114的主机即可
DNS视图
view VIEW_NAME {
};
所有的区域必须都定义在视图中
zone "." in {
};
vim /etc/named.conf
view telecom {
match-clients { IP } #使用本IP
zone "shilei.com" in {
type master;
file "telecom.shilei.com.zone";
};
};
view unicom {
match-clients { IP } #使用本IP
zone "shilei.com" in {
type master;
file "unicom.shilei.com.zone";
};
};
DNS日志系统
主配置文件中加入:
query_log yes; #允许记录日志
可以在/var/log/message中查看
catagory:日志源
查询或区域传送
可以通过catagory自定义日志来源
channel:日志记录/保存位置
保存位置:syslog
file:自定义保存日志信息的文件
logging {
channel querylog {
file "/var/log/named/bind_query.log" versions 5 size 10;
severity dynamic;
print-category yes;
print-time yes;
print-severity yes;
};
channel xfer_log {
file "/var/log/named/transfer.log" versions 5 size 10k;
severity debug 3;
print-time yes;
};
category queries { querylog; }; #查询日志
category xfer-out { xfer_log; }; #传输日志
};
queryperf:对DNS服务器 压力测试