DNS是一种协议,工作在应用层,域名解析系统,主要是用来实现域名与ip地址的相互转换,目的是方便人们的记忆。 DNS域名解析的整个结构:像一个倒置的树,类似我们国家的管理制度,有层次,分布式 .(根域) .com .net .org(一级域名)分为三类:组织的(com,edu),国家(cn,hk),反向解析 全球一共13台根节点服务器是固定的 magedu apple (二级域名) www ftp tech 根域只管理它的下一级域名即一级域名,上级知道下级的位置,但下级不知道上级的位置 我举一个例子说明DNS域名解析的过程,并说明递归和迭代的概念: 有一台DNS客户机要访问,首先客户机向本地的服务器发出请求,本地服务器查看自己的缓存,若没有向根域发出请求,根域告诉本机服务器一个参考答案说:你可以找com,然后本地服务器向.com发出请求,.com看自己有,就把自己 的结果发给本地服务器,最后本地服务器把查询的结果返还给本机客户端。 客户机向本地服务器发送请求的过程就是递归,即只发送一次请求直接得到最终的结果 本地服务器多次发送请求查询的过程就是迭代,即发送请求,返回的是一个参考答案,并再次请求。 域名服务器有三类:主域名服务器,辅助域名服务器,缓存服务器 DNS监听的端口是tcp,udp的53端口 我以一个例子说明一些概念,并建立主域名服务器和辅助域名服务器,实现同步 主域名服务器的ip 172.16.6.1 辅助域名服务器的ip 192.168.0.122 域 magedu.com 在主域名服务器中执行以下操作: setenforce 0,getenforce named进程,工作目录解析的文件/var/named rndc:remote Name Domain Controller远程域名控制工具 rndc stop rndc reload默认只工作在本机身份验证一对密钥 1 安装软件包 yum install bind DNS是通过bind服务软件来实现 yum list bind*看下有哪些软件包 bind-sdb.i386将bind的解析放在数据库中 ls /etc/ | grep rndc rndc-confgen > /etc/rndc.conf cat !$ 复制/etc/rndc.conf到主配置文件 key "rndckey" {
}; controls {
}; 2 配置主配置文件/etc/named.conf [option] { directory "/var/named"; version "conm on" }; zone "." IN { type hint; file "name.ca"; }; zone "localhost" IN { type master; fiel "localhost.zone"; }; zone "0.0.127.in-addr.arpa" IN { type master; file "named.local"; }; zone "magedu.com" IN { type master; file "magedu.com.zone"; }; zone "6.16.172.in-addr.arpa" IN { type master; file "172.16.6.zone"; }; %s@^# @@g去掉空表和注释 cd /etc/named.conf chmod o-r !$ chgrp named !$
cd /var/named/ dig -t NS . > /var/named/name.ca
1 vim /var/named/localname.zone
$TTL 43200 @ IN SOA localhost. root.localhost.( 20111125 3H 15M 2W 1D) IN NS localhost. localhost. IN A 127.0.0.1
2 vim /var/named/named.local
$TTL 43200 @ IN SOA localhost. root.localhost.( 2011 3H 15M 2W 1D ) NS localhost. 1 IN PTR localhost
chown :named localhost.zone named.* netstat -tunlp 网络状态的查看 t:tcp u:udp的会话 n:以数字的方式,不加n会很慢,l只查看处于本地 监听的套接字,p有那个进程产生的
netstat -tunlp | grep ":53"
rndc --help rndc flush清空服务器缓存 rndc statu显示服务器的状态 rndc reload重新生效主配置文件和数据文件 rndc trace 2调试级别,打开调试会记录日志 rndc notrace 关闭 rndc 停止服务 rndc refresh zone 刷新某个区域 rndc retransfer 重传某个区域 ipconfig/flushdns在Window清空缓存 chkconfig --list named 开机启动服务
zone "区域名" IN {....}的格式 hint表示根区域,master表示主区域即文件类型,file该区域的对应的数据文件名 localhost是本机的解析,本机的正向解析和反向解析。 正向解析是实现域名到ip的转换,反向解析是实现ip到域名的转换。 前三个是必须的:根,本机的正反向解析
3配置/var/named/magedu.com.zone文件 $TTL 86400 @ IN SOA ns1.magedu.com. admin.mageedu.com. ( 2011112421 1H 15M 1W 1D) @ IN NS ns1.magedu.com. IN NS ns2.magedu.com. IN MX 10 mail.magedu.com. ns1 IN A 172.16.6.1 ns2 IN A 192.168.0.122 mail IN A 192.168.0.141 www IN A 192.168.0.142 ftp IN CNAME www
/var/named/ 上级要有下级的记录,提到了记录类型 (1)SOA记录 起始授权的记录 它对应有5个只分别标识的含义如下: 1版本号,服务器的数据每发生一次变化它的值会自动加1, 2刷新时间,从域名服务器多久向服务器同步 3重试时间,联系不到主域名服务器多久在联系 4过期时间,当长时间联系不到主域名,从域名服务器即拒绝提供服务 5解析本地的域名,若没有,否定答案的缓存时间 (2)NS记录 声明本域的域名服务器 (3)A记录 主机名转化成ip地址 (4)PTR ip地址转化成域名 (5)MX 标识邮件服务器后跟一个数字表级别 (6)CNAME 正式名字,别名 域是一个逻辑概念,也可以这样理解magedu.com就是一个域 区域是一个物理概念,magedu.com下的www,ftp可以是一个区域 4查看以上两个文件的权限及属组,属主并修该 5启动服务 service named restart
在辅助域服务器上配置: 安装软件包 配置主配置文件/etc/named.conf [option] { directory "/var/named"; }; zone "." IN { type hint; file "named.ca"; }; zone "localhost" IN { type master; file "localhost.zone"; }; zone "0.0.127.in-addr-arpa" IN { type master; file "named.local"; }; zone "magedu.com" IN { type slave; file "/slaves/magedu.com.zone"; master { 172.16.6.1; }; }; zone "6.16.172.in-addr.arpa" IN { type slave; file "/slaves/172.16.6.zone"; master { 172.16.6.1; }; }; 从服务器可以是正向的也可以是反向的 注意:从服务器中域的类型是:slave 主服务器会实现与从服务器的同步,同步的内容直接保存在/var/named/slave下 是从服务器要只要主服务器用master { 主ip;},可以有多个中间用;隔开
named-checkconf检查主配置文件是否有语法错误 named-checkzone "magedu.com" /var/named/magedu.com.zone检查区域文件是否有语法错误 named-checkzone "0.168.192.in-addr.arpa" /var/named/192.168.0.arpa 反向检查
同样改变文件的权限即属主,属组 重启从服务器service named restart 若出现错误可根据/var/log/messages信息来修改,特别要注意语法,不能随意添加空格或少空格
dig的用法 dig -t A dig -t NS magedu.com dig -x 172.16.6.1 反向解析
nslookup set q=MX service 172.16.6.1 set q=A
host -t A
主域与子域: 在/var/named/magedu.com中添加NS记录并添加A记录 aa权威答案,子域找不到父域的位置, 例:在magedu.com中划分子域 DNS:magedu.com tech.magedu.com: ns.tech.magedu.com(ip:192.168.0.122) tcp.tech.magedu.com
在主域名服务器中授权,主配置文件不用做任何需改,只需在对应的正向域名解析中添加记录
配置/var/named/magedu.com.zone文件 $TTL 86400 @ IN SOA ns1.magedu.com. admin.mageedu.com. ( 2011112421 1H 15M 1W 1D) @ IN NS ns1.magedu.com. IN NS ns2.magedu.com. IN MX 10 mail.magedu.com. ns1 IN A 172.16.6.1 ns2 IN A 192.168.0.122 mail IN A 192.168.0.141 www IN A 192.168.0.142 ftp IN CNAME www tech.magedu.com. IN NS ns.tech.magedu.com ns.tech.magedu.com. IN A 192.168.0.122
在子域服务器中 forward:实现子域找到父域 配置/etc/named.conf option { directory "/var/named"; }; zone "." IN { type hint; file "named.ca" }; zone "localhost" IN { type master; file "localhost.zone"; }; zone "0.0.127.in-addr.arpa" IN { type master; file "named.local"; } zone "tech.magedu.com" IN { type master; file "tech.megedu.com.zone"; }; zone "magedu.com" IN { type forward; forwarders { 172.16.6.1; }; forward only|first;递归|首先递归若查不到在尝试替代 }; 看/var/named/下的文件 vim /var/named/tech.magedu.com $TTL 600 $OPIGIN tech.magedu.com. @ IN SOA ns.tech.magedu.com. admin.tech.magedu.com. ( 20111123 1H 5M 7D 1H ) IN NS ns IN MX 10 mail ns IN A 192.168.0.122 mail IN A 192.168.0.122 www IN A 192.168.0.1 vim /etc/resolv.conf该域名指向自己192.168.0.122
ACL先定义后使用none,all, acl "slaves" { 192.168.0.122; 192.168.0.100; }; allow-transfer { slaves; } acl "ourclients" {
}; allow-query { ourclients; };允许谁查看
在全局 : allow-recursion { none; } 允许谁递归 recursion no;
智能DNS:根据客户端来源ip地址,来为某一个解析请求返回一个设定好的解析结果 view根据来源的不同,能给不同用户展示不同的结果 每个view可以有多个区域, 若使用view,每个区域都在view内 view VINE_NAME { match-clients { 192.168.0.0/24; }; }; 例:让来自172.16.0.0/16,192.168.0.0/24各自返还 vim /etc/named.conf optinons { directory "/var/named"; querylog yes; version "None of your business"; }; view localnet { match-clients { 172.16.6.0/16; }; zone "." IN { type hint; file "named.ca"; }; zone "localhost" IN { type master; file "localhost.zone"; }; zone "0.0.127.in-addr.arpa" IN { type master; file "named.local"; }; zone "magedu.com" IN { type master; file "magedu.com.zone"; }; zone "6.16.172.in-addr.arpa" IN { type master; file "172.16.6.zone"; }; };
view external { match-clients { 192.168.0.0/24; }; zone "magedu.com" IN { type master; file "magedu.com.external"; }; }; vim /var/named/magedu.com.external; $TTL 86400 @ IN SOA ns1.magedu.com. admin.mageedu.com. ( 2011112421 1H 15M 1W 1D) @ IN NS ns1.magedu.com. IN NS ns2.magedu.com. IN MX 10 mail.magedu.com. ns1 IN A 172.16.6.1 ns2 IN A 192.168.0.122 mail IN A 192.168.0.141 www IN A 192.168.0.142 ftp IN CNAME www service named restart chgrp named /var/named/magedu.com.external chmod o-r /var/named/magedu.com.external 要在不同的网段通信要添加一条默认的路由 route add default 192.168.0.0. 192.168.0.254 用nslookup可以检查结果 使用dig来验证结果