dns:即domain name system,用于实现从域名到IP的转换,在DNS系统出现之前,windows系统通过主机文件(c:\windwos\system32\drivers\etc\hosts)提供域名转换功能,linux通过主机文件(/etc/hosts)提供域名转换功能。
默认情况下,操作系统DNS解析的查找步骤:
主机文件---->DNS缓存---->DNS服务器
在linux系统中,通过调整配置文件(/etc/nsswitch.conf ),可以调整查找步骤
# vim /etc/nsswitch.conf 文件中有一行 hosts: files dns //files表示主机文件,先查找主机文件查找dns服务器 如果改成: hosts: dns files //这样优先查找dns
linux平台的dns软件叫bind,即Berkeley Internet Name Domain,DNS服务器的类型:
1.主DNS服务器
2.辅助DNS服务器
3.缓存DNS服务器
bind的数据库文件叫做区域数据文件,区域数据文件由资源记录组成。
资源记录的类型:
1.SOA:Start Of Authority,起始授权机构
2.NS:Name Server,域名服务器
3.MX:Mail Exchange,邮件交换器
4.A:Address,A记录(从FQDN到IP的转换)
5.PTR: 反向记录(从IP到FQDN的转换)
6.AAAA: IPv6的A记录(从FQDN到IPv6的转换)
7.CNAME: 别名记录
资源记录的格式:
name [ttl] IN RRtype Value name: 区域名称,简写为@ ttl: DNS缓存时间 value: 主DNS服务器的FQDN
SOA:只能有一个
@ 600 IN SOA ns.py.com. root.py.com. ( 2014092201; 序列号 2H; 刷新时间 1H; 重试时间 1D; 过期时间 )
NS记录:可以有多条
@ 600 IN NS ns.py.com.
A记录:只能定义在正向区域数据文件中
www 600 IN A 192.168.57.1
MX记录:可以有多条
@ 600 IN MX 10 mail
PTR记录:
1 600 IN PTR www.py.com.
CNAME记录:
ftp 600 IN CNAME www
主DNS服务器的安装配置:
1.安装dns服务器软件
# yum -y install bind
服务器的IP为:192.168.57.23,域名为py.com
2.配置:主配置文件(/etc/named.conf)
# vim /var/named.conf
options {
// listen-on port 53 { 127.0.0.1; }; #定义named服务侦听的端口和IP地址,默认为侦听 所有IP地址的53号端口。
// listen-on-v6 port 53 { ::1; }; #针对IPv6的侦听端口和IP设置。
directory "/var/named"; #定义工作目录(即区域文件的路径)
allow-query { localhost; }; #此项通常仅用于服务器是缓存名称服务器时,只开 放查询功能给本地客户端;
recursion yes; #定义允许递归查询的IP
zone "." IN {
type hint;
file "named.ca";
};
//以下四行新增加
zone "py.com" IN {
type master;
file "py.com.zone";
};
//以下四行新增加
zone "57.168.192.in-addr.arpa" IN {
type master;
file "named.py.com";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
检查主配置文件语法
# named-checkconf
3.配置正向区域:区域配置文件(/var/named/py.com.zone)
# vim py.com.zone $TTL 1D @ IN SOA ns.py.com. root.py.com. ( 2014092201 ; serial #序列号 1H ; refresh #每隔多久到主服务器检查一次 5M ; retry #重试时间,应该小于refresh时间 3D ; expire #过期时间 12H ) ; minimum IN NS ns.py.com. ns IN A 192.168.57.23 s1 IN A 192.168.57.1 s2 IN A 192.168.57.2 mail IN A 192.168.57.3 mail2 IN A 192.168.57.4 www IN CNAME s1 ftp IN CNAME s2 @ IN MX 10 mail @ IN MX 20 mail //修改文件权限 # chown root:named py.com.zone # chmod 640 py.com.zone //检查区域配置文件语法 # named-checkzone py.com "/var/named/py.com.zone" zone py.com/IN: loaded serial 2014092201 OK
4.配置正向区域:区域配置文件(/var/named/named.py.com)
# vim /var/named/named.py.com $TTL 1D @ IN SOA ns.py.com. root.py.com. ( 2014092201 ; serial 1H ; refresh 5M ; retry 3D ; expire 12H ) ; minimum IN NS ns.py.com. 1 IN PTR s1.py.com. 2 IN PTR s2.py.com. 3 IN PTR mail.py.com. 4 IN PTR mail2.py.com. //修改文件权限 # chown root:named named.py.com # chmod 640 named.py.com //检查配置文件 # named-checkzone 57.168.192.in-addr.arpa /var/named/named.py.com zone 57.168.192.in-addr.arpa/IN: loaded serial 2014092201 OK
5.启动named服务
# service named start
6.排错:可以查看日志文件排错
# tail -f /var/log/messages
7.测试:测试工具有dig,host,nslookup
//修改服务器的DNS指向本机IP
# vim /etc/resolv.conf
nameserver 192.168.57.23
//host命令格式:
host [-t type] {name} [server]
# host -t A s1.py.com 192.168.57.23
Using domain server:
Name: 192.168.57.23
Address: 192.168.57.23#53
Aliases:
s1.py.com has address 192.168.57.1
# host -t CNAME www.py.com 192.168.57.23
Using domain server:
Name: 192.168.57.23
Address: 192.168.57.23#53
Aliases:
www.py.com is an alias for s1.py.com.
# host -t PTR 1.57.168.192.in-addr.arpa 192.168.57.23
Using domain server:
Name: 192.168.57.23
Address: 192.168.57.23#53
Aliases:
1.57.168.192.in-addr.arpa domain name pointer s1.py.com.
//dig命令格式:
# dig [-t type] [name] [@server] [query options]
常用的query options:
+[no]trace
+[no]recurse
+[no]tcp
# dig -t A s1 @192.168.57.23
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> -t A s1 @192.168.57.23
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 62522
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;s1. IN A
;; AUTHORITY SECTION:
. 10800 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2014092200 1800 900 604800 86400
;; Query time: 31 msec
;; SERVER: 192.168.57.23#53(192.168.57.23)
;; WHEN: Mon Sep 22 15:26:24 2014
;; MSG SIZE rcvd: 95
# dig -t CNAME www @192.168.57.23
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> -t CNAME www @192.168.57.23
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 55815
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;www. IN CNAME
;; AUTHORITY SECTION:
. 10800 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2014092200 1800 900 604800 86400
;; Query time: 33 msec
;; SERVER: 192.168.57.23#53(192.168.57.23)
;; WHEN: Mon Sep 22 15:26:38 2014
;; MSG SIZE rcvd: 96
//nslookup命令格式:
# nslookup 回车
>server server_ip
>set q=RRtype
>name
# nslookup
> server 192.168.57.23
Default server: 192.168.57.23
Address: 192.168.57.23#53
> set q=A
> s1.py.com
Server: 192.168.57.23
Address: 192.168.57.23#53
Name: s1.py.com
Address: 192.168.57.1 辅助(从)DNS服务器的安装配置:
1.安装bind
# yum -y install bind
服务器IP:192.168.57.230,域名:py.com
2.配置:主配置文件(/etc/named.conf)
# vim /etc/named.conf
//增加以下行
zone "py.com" IN {
type slave;
masters { 192.168.57.23; };
file "slaves/py.com.zone";
};
zone "57.168.192.in-addr.arpa" IN {
type slave;
masters { 192.168.57.23; };
file "slaves/named.py.com";
};
//注释下面这一行
recursion yes;
//检查文件
# named-checkconf
3.启动named服务
# service named start
4.查看salves目录
# cd /var/named/slaves # cat py.com.zone $ORIGIN . $TTL 86400 ; 1 day py.com IN SOA ns.py.com. root.py.com. ( 2014092201 ; serial 3600 ; refresh (1 hour) 300 ; retry (5 minutes) 259200 ; expire (3 days) 43200 ; minimum (12 hours) ) NS ns.py.com. MX 10 mail.py.com. MX 20 mail2.py.com. $ORIGIN py.com. ftp CNAME s2 mail A 192.168.57.3 mail2 A 192.168.57.4 ns A 192.168.57.23 s1 A 192.168.57.1 s2 A 192.168.57.2 www CNAME s1 # cat named.py.com $ORIGIN . $TTL 86400 ; 1 day 57.168.192.in-addr.arpa IN SOA ns.py.com. root.py.com. ( 2014092201 ; serial 3600 ; refresh (1 hour) 300 ; retry (5 minutes) 259200 ; expire (3 days) 43200 ; minimum (12 hours) ) NS ns.py.com. $ORIGIN 57.168.192.in-addr.arpa. 1 PTR s1.py.com. 2 PTR s2.py.com. 3 PTR mail.py.com. 4 PTR mail2.py.com.
5.测试
# dig -t CNAME www.py.com @192.168.57.230 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> -t CNAME www.py.com @192.168.57.230 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42102 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;www.py.com. IN CNAME ;; ANSWER SECTION: www.py.com. 86400 IN CNAME s1.py.com. ;; AUTHORITY SECTION: py.com. 86400 IN NS ns.py.com. ;; ADDITIONAL SECTION: ns.py.com. 86400 IN A 192.168.57.23 ;; Query time: 0 msec ;; SERVER: 192.168.57.230#53(192.168.57.230) ;; WHEN: Mon Sep 22 15:52:04 2014 ;; MSG SIZE rcvd: 78
子DNS服务器的安装配置:
1.安装bind
# yum -y install bind
服务器IP:192.168.57.230,域名:tech.py.com
2.配置:主配置文件(/etc/named.conf)
//增加下列行
zone "tech.py.com" IN {
type master;
file "tech.py.com";
};
zone "58.168.192.in-addr.arpa" IN {
type master;
file "named.tech.py.com";
};
//检查配置文件
# named-checkconf
3.配置父DNS服务器的区域配置文件(/var/named/py.com.zone),授权子域
//增加下列行 tech.py.com. IN NS ns.tech.py.com. ns IN A 192.168.57.230
4.重启named服务
# service named restart
5.在主服务器上测试
# dig -t A www.tech.py.com @192.168.57.230 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> -t A www.tech.py.com @192.168.57.230 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 13703 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;www.tech.py.com. IN A ;; Query time: 1 msec ;; SERVER: 192.168.57.230#53(192.168.57.230) ;; WHEN: Mon Sep 22 16:25:28 2014 ;; MSG SIZE rcvd: 33
配置区域转发:
区域转发负责把本机不能解析的请求发往指下的DNS服务器,可以在全局区配置转发,也可以配置特定区域转发。
格式如下:
//配置全局转发
# vim /etc/named.conf
options {
forward only|first;
forwarders { IP; }
};
//配置特定区域转发
# vim /var/named/py.com.zone
zone "py.com" IN {
type forward;
forwarders { IP; }
forward only|forward;
};
bind配置选项:
//用于控制主DNS服务器允许区域复制给辅助DNS服务器的白名单(在主DNS服务器上配置)
allow-transfer { ip; };
//用于服务器是缓存名称服务器时,只开放查询功能给本地客户端
allow-query { ip; };
//定义递归查询白名单(DNS服务器要配置转发的时候,本机的IP必须在对方的递归白名单中)
allow-recursion { ip; };
//为了安全通常是关闭的。
allow-update { none; };
定义ACL,用于上述选项的调用
acl ACL_NAME {
192.168.57.0/24;
10.245.32.0/21;
};
bind的4个内置ACL:
any: 任何主机
none: 无一主机
local: 本机
localnet: 本机所在的网络
//view:(针对不同来源的IP地址,使用不同的DNS区域文件)
acl telecom {
202.96.0.0/16;
};
acl unicom {
61.192.0.0/26;
};
view telecom {
match-clients { telecom; };
zone "py.com" IN {
type master;
file "py.com.telecom";
};
};
view unicom {
match-clients { unicom; };
recursion no;
zone "magelinux.com" IN {
type master;
file "py.com.unicom";
};
};
view default {
match-clients { any; };
zone "py.com" IN {
type master;
file "py.com.unicom";
};
};
本文出自 “虎虎生威” 博客,请务必保留此出处http://tobeone.blog.51cto.com/817917/1557026
原文:http://tobeone.blog.51cto.com/817917/1557026