概念:
DNS:Domain Name System 域名系统
FQDN:Fully Qualified Domain Name 完整主机名
正向解析:由主机名查IP地址
SOA:开始验证(Start of Authority)的缩写,
NS:名称服务器(Name Server)的缩写
A 地址记录(Ipv4)
AAAA 地址记录(Ipv6)
AFSDB Andrew文件系统数据库服务器记录(应该是一种文件服务器的类型)
ATMA ATM地址记录(不是自动提款机,具体功能不知道)
CNAME 别名记录
HINFO 硬件配置记录,包括CPU、操作系统信息
ISDN 域名对应的ISDN号码
MB 存放指定邮箱的服务器
MG 邮件组记录
MINFO 邮件组和邮箱的信息记录
MR 改名的邮箱记录
MX 邮件服务器记录
NS 名字服务器记录
PTR 反向记录(从IP地址解释域名)
RP 负责人记录
RT 路由穿透记录(不懂)
SRV TCP服务器信息记录(不懂)
TXT 域名对应的文本信息
X25 域名对应的X.25地址记录
关于上面的名词有一些是我找来的,具体的功能我在实验中也没有涉及。如果有懂的朋友还请教我一下。谢谢
反向解析:由IP查询主机名
PTR:指向(PoinTeR)的缩写,后面记录的数据就是反解到主机名
端口:TCP/UDP 53 TCP 用来主从同步数据,UDP用来用户查询
环境:
服务器:CentOS 6.5 final 服务器名:Server.rhce.ce, IP:192.168.88.254
客户端:Windows XP
实验:
/etc/hosts:手动设置主机名和IP的对应关系
/etc/resolv.conf:linux中配置DNS的文件
/etc/nsswitch.conf :设置DNS优先还是hosts优先
安装软件:
bind | bind主程序 |
bind-utils | 客户端查找主机名的相关命令 |
bind-libs | bind相关函数库 |
bind-chroot | 锁定bind默认主目录 |
主要配置文件
因为安装的chroot,所以bind的主目录是/var/named/chroot/
具体信息可以参考:/etc/sysconfig/named文件
cp -p /etc/named* /var/name/chroot/etc/
cd /var/named
cp -p data/ dynamic/ slaves/ named* chroot/var/named/
***************************************
/var/name/chroot/etc/named.conf 主配置文件
/var/name/chroot/etc/named.iscdlv.key
/var/name/chroot/etc/named.rfc1912.zones
/var/name/chroot/etc/named.root.key
######################
/var/name/chroot/var/named/data/
/var/name/chroot/var/named/dynamic/
/var/name/chroot/var/named/slaves/
/var/name/chroot/var/named/named.ca
/var/name/chroot/var/named/named.empty
/var/name/chroot/var/named/named.localhost
/var/name/chroot/var/named/named.loopback
************************************
主配置文件
named.conf
// named.conf options { listen-on port 53 { any; }; //监听 listen-on-v6 port 53 { any; }; directory "/var/named/chroot/etc/named/"; //配置文件目录 dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { any; }; //访问列表,允许的范围 recursion yes; //是否允许递归查询 dnssec-enable yes; dnssec-validation yes; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; //我配置的正向解析域 zone "rhce.ce" IN { type master; file "rhce.ce"; }; //反向解析域 zone "88.168.192.in-addr.arpa" IN { type master; file "88.168.192.in-addr.arpa"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
rhce.ce 正向域
关于解析文件的内容说明,正解文件资源记录(Resource Record RR)格式,RR type 和RR data
$TTL 600 //缓存记忆时间。默认单位秒,可通过M分,H时,D天,W周来设置
Serial:序号代表这个数据库的新旧,越大表示越新,如果有Slave服务器同步是会根据这个判断,一般采用日期的方式设置
Refresh:更新频率,Slave用来判断多久去向Master要求数据更新。
Retry:失败重试时间,由于某些因素导致Slave无法对Master连接,Slave会尝试重新连接,重新连接的时间就是这个
Expire:失效时间,如果尝试一直失败,Slave就会放弃尝试,并且删除这份下载的zone file信息。
Minumun TTL:
一般各参数默认约定,可根据实际情况设定
Serial <2的32次方 Refresh>=Retry*2Refresh+Retry<Expire Expire>=Retyr*10Expire>=7D
zone 里的类型:hint ,master,slave
zone "." in {type hint; file "named.ca"; }; 高速缓存DNS."."是DNS的root,仅用来转发请求或缓存
hint:根域使用
master:主域
slave:从域
rhce.ce 正向解析文件
$TTL 1D @ IN SOA server.rhce.ce. server.rhce.ce. ( ;域名 class type 域主机名 管理员邮箱 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum @ IN NS server.rhce.ce. @ IN NS rhce.ce. @ IN A 192.168.88.254 server IN A 192.168.88.254 @ IN MX 10 rhce.ce. www IN A 192.168.88.254 client IN A 192.168.88.1 ;@=当前域,rhce.ce
88.168.192.in-addr-arpa 反向解析文件
$TTL 1D @ IN SOA server.rhce.ce. server.rhce.ce. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum @ NS server.rhce.ce. 254 IN PTR server.rhce.ce. 254 IN PTR www.rhce.ce. 254 IN PTR ftp.rhce.ce. 254 IN PTR mail.rhce.ce. 254 IN PTR rhce.ce. 1 PTR client.rhce.ce.
以上是简单的域配置文件及简单的说明
更多的扩展说明
前面我们说了几个DNS的记录类型这里简单的说一下,在我的配置里并没有设置CNAME和AAAA。AAAA就不用讲了,类型类似A,只不过地址是IPV6。这里讲一下CNAME。编辑我们的域配置文件(我的是rhce.ce)添加下面的信息
www IN A 192.168.88.254 www1 IN CNAME www www2 IN CNAME www www3 IN CNAME www
分别通过通过dig 命令解析出来的结果如下
dig www1.rhce.ce ;; ANSWER SECTION: www1.rhce.ce. 86400 IN CNAME www.rhce.ce. www.rhce.ce. 86400 IN A 192.168.88.254 dig www2.rhce.ce ;; ANSWER SECTION: www2.rhce.ce. 86400 IN CNAME www.rhce.ce. www.rhce.ce. 86400 IN A 192.168.88.254 dig www3.rhce.ce ;; ANSWER SECTION: www3.rhce.ce. 86400 IN CNAME www.rhce.ce. www.rhce.ce. 86400 IN A 192.168.88.254
cache-only DNS Server 设置只有缓存功能的DNS,这个DNS不需要添加其它zone,所以如果设置cache-only 需要删除其它的zone.打开named.conf
options { listen-on port 53 { any; }; listen-on-v6 port 53 { any; }; directory "/var/named/chroot/etc/named/"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { any; }; recursion yes; dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto; forward only; forwarders { //设置转发服务器 114.114.114.114; //转发服务器地址 8.8.8.8; }; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; }; 保留logging 和zone ". "
====================================================
双DNS,主从机
简单主从DNS
master
allow-transfer { 192.168.88.1 ;}; //设置仅允许192.168.88.1来同步我的数据,如果不设置则允许所有人同步我的数据
slave
zone "rhce.ce" IN { type slave; file "slaves/rhce.ce.slave"; //设置从服务器的区域文件名 masters { 192.168.88.254; }; //指定master的地址 };
======================================================
主从验证设置(TSIG 事务签名)
上面提到使用allow-transfer来设置允许的从服务器, 但是如果客户端修改IP为我指定的DNS服务器的地址也同样可以获取我的配置文件,所以可能通过加密密钥来验证主从关系。
dnssec-keygen -a HAMC-MD5 -b 128 -n HOST rhce
//使用dnssec-keygen命令添加一下HMAC-MD5加密的,长度为128位的,指定host类型,文件名为rhce。然后会在当前目录生成两个文件,打开以.private结尾的文件,我们需要使用其中的加密信息
master
allow-transfer { key; }; //修改原来的IP地址为key,使用key验证 server 192.168.88.253 { //指明从服务器的是谁 keys {rhce;}; //指明keys文件的名称 }; key rhce{ //建立有关key文件的相关数据 algorithm hmac-md5; //加密类型 secret Pt8a74gEOy0qoI+odK9gRw==; //密钥值 };
除allow-transfer外,所有配置文件都需要写在options{} 外面
slave
server 192.168.88.254 { //指明主服务器的是谁 keys {rhce;}; //指明keys文件的名称}; key rhce{ //建立有关key文件的相关数据 algorithm hmac-md5; //加密类型 secret Pt8a74gEOy0qoI+odK9gRw==; //密钥值 };
注意:密钥名必须对应
视图VIEW ,可以让不能的机器使用DNS获取不同的IP地址解析,这里我们创建了视图,指定了区域,一般在公司了主要分内网和外网,我们其它可以区别内网和外网,内我们使用自己建议的区域文件,外网我就可以直接使用“.” 这个根域进行转发查询
acl rhca{ 192.168.88.0/24;}; //指定acl策略,配置网段或者主机 acl rhce{ 172.30.30.0/24;}; view rhca{ //创建一个视图名为rhca,使用rhca配置文件 match-clients{rhca;}; //指定使用本视图的区域/主机/网段 zone "." IN { type hint; file "named.ca"; }; zone "rhce.ce" IN { //配置文件改变,不改变域名 type master; file "rhca.ca"; //指定域配置文件 }; }; view rhce{ //创建一个视图名为rhca,使用rhca配置文件 match-clients{rhce;}; //指定使用本视图的区域/主机/网段 zone "." IN { type hint; file "named.ca"; }; zone "rhce.ce" IN { //配置文件改变,不改变域名 type master; file "rhce.ce"; //指定域配置文件 }; };
====================================================
子域授权
父层服务器.rhce.ce。
rhce.ce域配置文
test NS test.rhce.ce. test A 192.168.88.253//增加以上两行,test.rhce.ce为子域的服务器名称。并A记录指向IP地址
子域test.rhce.ce
修改named.conf
zone "test.rhce.ce" IN { type master; forward first; //设置转发优先 file "test.rhce.ce"; forwarders {192.168.88.254;}; //设置转发服务器,父服务器 }; //如果我们只一个域的时候,可以把forwarders设置在options里,如果我们有多个域且只想对这个域进行转发就设置在zone里面
test.rhce.ce子域配置文件
$TTL 1D @ IN SOA test.rhce.ce. root.test.rhce.ce. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum @ NS test.rhce.ce. @ A 192.168.88.253 www A 192.168.0.80
到此学习的DNS相关的配置全部完成,后期如果有学习到新的DNS功能再补充,下面是一些操作优化及知识扩充
利用RNDC管理DNS服务器
RNDC是在BIND
version9以后出现的一个功能。它可以轻松管理DNS服务器:检查已经存在的DNS缓存,重新更新某个zone而不需要重启,DNS状态及统计资料
等,因为RNDC可以很深入的管理DNS服务器,所以控制的方式是经理RNDC来设置建立密钥(rndc
key),并将相关密钥信息写入到named.con中的。
rndc-confgen -r /dev/urandom -a 创建一个rndc key 。默认是会自动创建的
rndc status 查看rndc 状态
rndc stats
将目前系统的DNS统计数据记录下来,会在/var/named/data/内产生新文件
rndc dumpdb
将目前高速缓存的数据记录下来,制作成一个文件同样保存在/var/named/data内。以.db结尾
=============================================================
查询及验证常用命令
dig
dig www.rhce.ce
dig -t soa www.rhce.ce
dig -x 192.168.88.254
dig +trace rhce.ce //通过追踪查询可以看到所经历的DNS服务器
nslookup
nslookup www.rhce.ce
nslookup
set type=any 表示在查询某个domainname 时,将和这个domainname的一些相关数据一并显示出来
>set type=soa
>rhce.ce 查询
nslookup –qt=类型目标域名 //各类型查看上面的概念中说明的
>set q=MX/A/CNAME
>rhce.ce
更多nslookup 信息参考 百度NSLOOKUP
host
host -a www.rhce.ce //列出该主机所有的相关信息,包括IP,TTL与排错信息
host -l rhce.ce //列出该domain下的所有主机对应关系,domain的设置要allow-transfer才可以查询
host www.rhce.ce 192.168.88.53 //强制以192.168.88.53这台DNS来查询