视频:http://edu.51cto.com/lesson/id-41421.html
一、DNS基本概念
DNS(Domain Name System)域名系统,DNS使用了UDP协议和TCP协议,端口号为 53,UDP 53端口用来查询和接受应答,TCP 53端口用于主服务器和从服务器之间的传送。 域的划分:根域:全球13个根服务器,后缀如.com,.net等;根域下来就是顶级域或者叫一级域,一级域之后就是二级域,三级域,如 baidu.com就是一个顶级域名;域名服务器就是能提供域名解析的服务器,上面的记录类型有A(address)记录,NS(name server),MX(mail),CNAME等;二、域名解析的方式 递归解析:DNS客户端只是发出原始的域名查询请求报文,然后一直处于等待状态,直到本地域名服务器发来了最终的查询记录。 迭代解析:以本地DNS服务器为中心,本地域名服务器扮演DNS客户端的角色向其他的DNS服务器提出域名解析的请求,每次返回认为可以解析这个查询IP的地址,直到找到该域名的授权服务器。三、解析过程 1,当用户在浏览器中输入域名后,浏览器会先检查本地缓存中是否 有此域名对应的解析ip(缓存时间有TTL属性来设置),如果有,解析结束;如果没有,浏览器就会查询操作系统缓存中(hosts文件中)是否有域名的 DNS解析,如果hosts文件中没有这个域名的映射,则就会到resolve.conf文件中查看指定的本地DNS服务器;2,如果本地DNS服务器收到请求,如果在本地资源记录中查到IP的解析结果,则返回解析结果给客户机,解析结束;
3,如果要查询的域名不再本地DNS解析中并且没有转发模式,则本地DNS服务器就向根域服务器发送qq.com域名解析请求; 4,根域服务器收到请求,向本地服务器返回一个顶级域名服务器的一个IP; 5,本地DNS服务器收到IP信息后,向负责顶级域名服务器发送www.qq.com的解析请求; 6,如果无法解析,则返回给本地域名服务器一个二级域名(www.qq.com)解析服务器地址IP; 7,本地DNS服务器收到地址后,就向该地址发送解析www.qq.com请求,若该域名服务器在自己的资源配置中找到解析,则返回www.qq.com主机的IP; 8,本地域名服务器将www.qq.com主机的ip地址返回给客户机;四、DNS详细配置过程 实验环境:redhat 6.5 实验主机: 172.25.16.250 实现转发 172.25.16.1 server1 DNS服务器 172.25.16.2 server2 客户端 DNS主配置文件:/etc/named.conf 指定DNS服务器解析地址:/etc/reslov.conf[root@server1 ~]# yum install bind -y //安装bind软件包[root@server1 ~]# rpm -qc bind //查找bind的配置文件[root@server1 ~]# rpm -qa | grep bind //查看已经安装的软件bind-libs-9.8.2-0.17.rc1.el6_4.6.x86_64 bind-utils-9.8.2-0.17.rc1.el6_4.6.x86_64 //客户端工具,用于搜索域名指令,如digbind-9.8.2-0.17.rc1.el6_4.6.x86_64 //DNS服务的主程序包[root@server1 ~]# vim /etc/named.conf //修改主配置文件options { listen-on port 53 { any; }; //监听权限改为any,允许任何主机都可以通过TCP 53端口连接此dns服务器 listen-on-v6 port 53 { ::1; }; directory "/var/named"; //指定dns工作目录,存放数据资源文件 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; }; //允许任何主机访问A记录文件 forwarders { 172.25.16.250; }; //这条参数后面的ip所在的服务器为备选dns服务器,也就是设置转发功能,当本机无法查询解析到域名,就可以转发到此ip服务器上查询 recursion yes; dnssec-enable yes; dnssec-validation no; //关闭dns安全认证 dnssec-lookaside auto; bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic";};logging { channel default_debug { file "data/named.run"; severity dynamic; };};zone "." IN { //该zone定义语句定义了dns服务器的根和根记录文件 type hint; file "named.ca";};include "/etc/named.rfc1912.zones"; //定义子配置文件include "/etc/named.root.key";[root@server1 ~]# vim /etc/named.rfc1912.zones //指定要维护的域qq.comzone "qq.com" IN { type master; file "test"; //test文件为所要维护的域名中主机与ip的对应关系 allow-update { none; };};[root@server1 ~]# cd /var/named[root@server1 named]# lsdata named.ca named.localhost slavesdynamic named.empty named.loopback test[root@server1 named]# cp -p named.localhost test //使用模板生成test[root@server1 named]#vim test //添加主机与ip对应关系$TTL 1D@ IN SOA lijiajing.qq.com. root.qq.com. ( //SOA表示授权的主机名字 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS lijiajing.qq.com.lijiajing A 172.25.16.1haha A 172.25.16.111aa A 172.25.16.222[root@server1 named]# /etc/init.d/named restart//在客户端指定dns服务器的地址ip[root@server2 ~]# vim /etc/resolv.confnameserver 172.25.16.1//测试[root@server2 ~]# dig haha.qq.com //或者用 nslookup haha.qq.com; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> haha.qq.com;; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21743;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1;; QUESTION SECTION:;haha.qq.com. IN A;; ANSWER SECTION:haha.qq.com. 86400 IN A 172.25.16.111;; AUTHORITY SECTION:qq.com. 86400 IN NS lijiajing.qq.com.;; ADDITIONAL SECTION:lijiajing.qq.com. 86400 IN A 172.25.16.1;; Query time: 58 msec;; SERVER: 172.25.16.1#53(172.25.16.1);; WHEN: Tue Aug 4 00:10:45 2015;; MSG SIZE rcvd: 85