目录
DNS基本介绍
DNS服务的搭建
主从复制
子域授权
基于bind view实现智能DNS
一、DNS基本介绍
DNS:Domain Name System,域名系统 。DNS作为域名和IP地址相互映射的一个分布式数据库,能够让用户更加方便的访问互联网。它的正向映射是把一个主机和IP地址关联起来,它的反向映射是把IP地址和主机名关联起来。DNS协议运用在UDP协议上,使用端口号53.
域名:DNS名字空间被组织成一个树形结构,每个完整的域名是这棵树的分支上的一个节点。
域名级别:
根域:/
顶级域:
国际顶级域:.com .net .org .edu等
国家地区顶级域:.cn .de .jp .hk .us等
二级域:www.mage.com,其中.magedu就是一个二级域名
DNS查询类型:
递归查询:客户机向服务器发送请求,根服务器并不返回真实的答案,而是转交给下一级域,一次类似,直到查到客户机请求的域名所对应的IP地址,然后将此IP地址返回给客户机。
迭代查询:客户机向DNS服务器发送请求,DNS服务器不管是否查到对应的IP地址直接返回给客户机答案。
DNS域名解析:
正向解析:FQDN到IP地址的解析
反向解析:IP地址到FQDN的解析
DNS服务器的类型:
主服务器:维护所负责区域内解析库的服务器
从服务器:从主服务器中同步复制对应的解析库文件
缓存服务器:缓存所查询多的解析条目
转发服务器:负责非本地区域内的域名,而通过转发到别的DNS服务器上进行本地查询
DNS一次完整查询的过程:
首先客户机发送一个DNS解析请求,查看host文件中是否有相应的对应解析条目,如果没有就差本地的缓存,缓存没有就向根服务器发送请求查询,根服务器会根据域名来告诉你去哪个对应的域中查询,以此类推,查到对应的 IP然后返回给客户机。
DNS的资源记录:
SOA:定义一个DNS区域
NS:标识域名服务器名称
A:名字到IPv4地址的转换
AAAA:名字到ipv6地址的转换
PTR:地址到名字的转换
MX:邮件记录
CNAME:主机的别名记录
二、DNS服务的搭建
1、安装DNS服务程序包bind:
yum -y install bind
2、修改/ec/named.conf配置文件
[root@bogon ~]# vim /etc/named.conf options { listen-on port 53 { any; };####DNS监听的端口号及允许哪些主机监听此端口号 listen-on-v6 port 53 { ::1; }; directory "/var/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; 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"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
3、编辑/etc/named.rfc1912.zones文件,建立正向区域文件和反向区域文件
[root@bogon ~]# vim /etc/named.rfc1912.zones zone "magedu.com" IN { ##正向解析 type master; ##类型为主DNS file "magedu.com.zone";###正向解析库文件 }; zone "1.168.192.in-addr.arpa" IN { ##反向解析 type master; ##反向解析类型为主DNS file "192.168.1.zone"; ##反向解析库文件 };
4、在/var/named目录下建立正向区域和反向区域文件的解析库数据
[root@bogon named]# vim magedu.com.zone######建立正向解析库数据 $TTL 1D @ IN SOA ns1.magedu.com. admin.magedu.com. ( 2016070901 1H 2M 3D 1D ) IN NS ns1.magedu.com. IN MX 10 mx1.magedu.com. ns1 IN A 192.168.1.104 mx1 IN A 192.168.1.10 www IN A 192.168.1.20 web IN CNAME www [root@bogon named]# vim 192.168.1.zone####建立反向解析库数据 $TTL 1D @ IN SOA ns1.magedu.com. admin.magedu.com.( 2016070901 1H 2M 3D 1D ) IN NS ns1.magedu.com. 104 IN PTR ns1.magedu.com. 10 IN PTR mx1.magedu.com. 20 IN PTR www.magedu.com. 20 IN PTR web.magedu.com. ~
5、文件限制已经建立好了我们需要来修改下权限所属组为named
[root@bogon named]# chown :named magedu.com.zone 192.168.1.zone [root@bogon named]# ll -rw-r--r--. 1 root named 273 Jul 9 16:28 192.168.1.zone -rw-r--r--. 1 root named 268 Jul 9 16:23 magedu.com.zone
6、检查配置文件和区域文件语法是否正确
[root@bogon named]# named-checkconf [root@bogon named]# named-checkzone magedu.com.zone /var/named/magedu.com.zone zone magedu.com.zone/IN: loaded serial 2016070901 OK [root@bogon named]# named-checkzone 1.168.192.in-addr.arpa /var/named/192.168.1.zone zone 1.168.192.in-addr.arpa/IN: loaded serial 2016070901 OK
7、启动named服务然后测试是否正常
[root@bogon named]# systemctl restart named.service [root@bogon ~]# dig www.magedu.com @192.168.1.104 ##正向解析 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6 <<>> www.magedu.com @192.168.1.104 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9645 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;www.magedu.com. IN A ;; ANSWER SECTION: www.magedu.com. 86400 IN A 192.168.1.20 ;; AUTHORITY SECTION: magedu.com. 86400 IN NS ns1.magedu.com. ;; ADDITIONAL SECTION: ns1.magedu.com. 86400 IN A 192.168.1.104 ;; Query time: 1 msec ;; SERVER: 192.168.1.104#53(192.168.1.104) ;; WHEN: Tue Jun 21 22:15:50 2016 ;; MSG SIZE rcvd: 82 [root@bogon ~]# dig -x 192.168.1.20 @192.168.1.104 ###反向解析 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6 <<>> -x 192.168.1.20 @192.168.1.104 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60239 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;20.1.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 20.1.168.192.in-addr.arpa. 86400 IN PTR www.magedu.com. 20.1.168.192.in-addr.arpa. 86400 IN PTR web.magedu.com. ;; AUTHORITY SECTION: 1.168.192.in-addr.arpa. 86400 IN NS ns1.magedu.com. ;; ADDITIONAL SECTION: ns1.magedu.com. 86400 IN A 192.168.1.104 ;; Query time: 0 msec ;; SERVER: 192.168.1.104#53(192.168.1.104) ;; WHEN: Tue Jun 21 22:17:12 2016 ;; MSG SIZE rcvd: 123
三、主从复制
1、从DNS的/var/named.conf配置文件同主DNS服务器是一样的,所有此处就不进行展示了。
2、编辑/etc/named.rfc1912.zones文件配置从服务器的正向和反向区域的解析区域
[root@bogon ~]# vim /etc/named.rfc1912.zones zone "magedu.com" IN { type slave; masters {192.168.1.104;}; file "slaves/magedu.com.slave.zone"; }; zone "1.168.192.in-addr.arpa" IN { type slave; masters {192.168.1.104;}; file "slvaes/192.168.1.slave.zone"; };
3、启动服务查看/var/named/slaves目录下面会出现
192.168.1.slave.zone magedu.com.slave.zone这两个文件:
[root@bogon slaves]# ll total 8 -rw-r--r-- 1 named named 413 May 11 23:37 192.168.1.slave.zone -rw-r--r-- 1 named named 396 May 11 23:39 magedu.com.slave.zone
4、测试,此时我们把客户机的DNS指向到我们的从服务器地址然后看看是否可以使用呢
[root@bogon ~]# dig -x 192.168.1.20 @192.168.1.100(192.168.1.100是从DNS服务器的地址) ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6 <<>> -x 192.168.1.20 @192.168.1.100 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16233 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;20.1.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 20.1.168.192.in-addr.arpa. 86400 IN PTR web.magedu.com. 20.1.168.192.in-addr.arpa. 86400 IN PTR www.magedu.com. ;; AUTHORITY SECTION: 1.168.192.in-addr.arpa. 86400 IN NS ns1.magedu.com. ;; ADDITIONAL SECTION: ns1.magedu.com. 86400 IN A 192.168.1.104 ;; Query time: 31 msec ;; SERVER: 192.168.1.100#53(192.168.1.100) ;; WHEN: Tue Jun 21 22:39:33 2016 ;; MSG SIZE rcvd: 123 [root@bogon ~]# dig www.magedu.com @192.168.1.100(192.168.1.100是从DNS服务器的地址) ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6 <<>> www.magedu.com @192.168.1.100 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10729 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;www.magedu.com. IN A ;; ANSWER SECTION: www.magedu.com. 86400 IN A 192.168.1.20 ;; AUTHORITY SECTION: magedu.com. 86400 IN NS ns1.magedu.com. ;; ADDITIONAL SECTION: ns1.magedu.com. 86400 IN A 192.168.1.104 ;; Query time: 0 msec ;; SERVER: 192.168.1.100#53(192.168.1.100) ;; WHEN: Tue Jun 21 22:39:53 2016 ;; MSG SIZE rcvd: 82 ok经过测试时我们的从DNS服务器是没有问题的。但是如果主DNS中有更新条目那么我们从服务器此时是 每有办法同步过来的,那么我们下一步就是做主从同步啦!
5、主从同步
在主DNS服务器的/var/named/magedu.com.zone中添加一条NS记录,此记录指向我们从DNS服务器的IP地址
在主DNS服务器/var/named/192.168.1.zone中添加一个NS记录同时做相应的反向IP解析
$TTL 1D @ IN SOA ns1.magedu.com. admin.magedu.com. ( 2016070902###版本号需要更改 1H 2M 3D 1D ) IN NS ns1.magedu.com. IN NS ns2.magedu.com.###此条为添加的ns记录 IN MX 10 mx1.magedu.com. ns1 IN A 192.168.1.104 ns2 IN A 192.168.1.100####对应的ns解析地址,此地址为从DNS服务器的地址 mx1 IN A 192.168.1.10 www IN A 192.168.1.20 web IN CNAME www ~
$TTL 1D @ IN SOA ns1.magedu.com. admin.magedu.com. ( 2016070902###版本号需要更改 1H 2M 3D 1D ) IN NS ns1.magedu.com. IN NS ns2.magedu.com.###此条为添加的ns记录 100 IN PTR ns2.magedu.com.###对应的解析地址 104 IN PTR ns1.magedu.com. 10 IN PTR mx1.magedu.com. 20 IN PTR www.magedu.com. 20 IN PTR web.magedu.com. ~
重新加载主DNS服务器的服务:rndc reload,然后我们到从DNS中查看是已经同步了。
[root@bogon slaves]# cat 192.168.1.slave.zone $ORIGIN . $TTL 86400 ; 1 day 1.168.192.in-addr.arpa IN SOA ns1.magedu.com. admin.magedu.com. ( 2016070902 ; serial 3600 ; refresh (1 hour) 120 ; retry (2 minutes) 259200 ; expire (3 days) 86400 ; minimum (1 day) ) NS ns1.magedu.com. NS ns2.magedu.com. $ORIGIN 1.168.192.in-addr.arpa. 10 PTR mx1.magedu.com. 100 PTR ns2.magedu.com. 104 PTR ns1.magedu.com. 20 PTR www.magedu.com. PTR web.magedu.com.
[root@bogon slaves]# [root@bogon slaves]# cat magedu.com.slave.zone $ORIGIN . $TTL 86400 ; 1 day magedu.com IN SOA ns1.magedu.com. admin.magedu.com. ( 2016070902 ; serial 3600 ; refresh (1 hour) 120 ; retry (2 minutes) 259200 ; expire (3 days) 86400 ; minimum (1 day) ) NS ns1.magedu.com. NS ns2.magedu.com. MX 10 mx1.magedu.com. $ORIGIN magedu.com. mx1 A 192.168.1.10 ns1 A 192.168.1.104 ns2 A 192.168.1.100 web CNAME www www A 192.168.1.20
ok经过查此处已经完成了同步了。
四、子域授权
我们已经拥有域magedu.com
现在我有一个子域sport.magedu.com需要对此子域进行解析
1)主DNS服务器上编辑/var/named.rfc1912.zones文件在此中添加子域的区域文件
[root@bogon named]# vim /etc/named.rfc1912.zones zone "sport.magedu.com" IN { type master; file "sport.magedu.com.zone"; };
2)在/var/named/目录下建立sport.magedu.com.zone的区域解析数据
[root@bogon named]# vim /var/named/sport.magedu.com.zone $TTL 1D @ IN SOA ns1.sport.magedu.com. admin.sport.magedu.com. ( 2016070902 1H 2M 3D 1D ) IN NS ns1.sport.magedu.com. ns1 IN A 192.168.1.100 www IN A 192.168.1.200
3)重启服务或者重新加载服务rndc reload
4)测试我们子域解析是否正常
[root@bogon ~]# dig www.sport.magedu.com @192.168.1.104 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6 <<>> www.sport.magedu.com @192.168.1.104 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31997 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;www.sport.magedu.com. IN A ;; ANSWER SECTION: www.sport.magedu.com. 86400 IN A 192.168.1.200 ;; AUTHORITY SECTION: sport.magedu.com. 86400 IN NS ns1.sport.magedu.com. ;; ADDITIONAL SECTION: ns1.sport.magedu.com. 86400 IN A 192.168.1.100 ;; Query time: 0 msec ;; SERVER: 192.168.1.104#53(192.168.1.104) ;; WHEN: Tue Jun 21 23:12:13 2016 ;; MSG SIZE rcvd: 88
五、基于bind view实现智能DNS
由于我们网络访问时候可能使用的是电信和联通的IP地址,现在我想要实现用户DNS请求的时候能够判断用户是电信还是联通从而给用户对应网络运营商IP地址。
###此实验是单独的与以上没关系。
1、安装bind服务
2、在主配置文件中定义acl规则
acl liantong { ###此处定义联通的acl 192.168.1.104; ###模拟192.168.1.104是联通客户端 }; acl dianxin { ###定义电信acl 192.168.1.100; ###模拟192.168.1.100是电信客户端 }; ####此规则需要添加到options前面 options { listen-on port 53 { any; }; listen-on-v6 port 53 { ::1; }; directory "/var/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; };
3、定义view
view liantong { match-clients {liantong;}; 调用lingtong定义的acl include "/etc/liantong.zones"; 定义linatong区域数据存放位置 }; view dianxin { match-clients {dianxin;}; include "/etc/dianxin.zones" }; view otherview { match-clients {any;}; include "/etc/named.rfc1912.zones"; }; //include "/etc/named.rfc1912.zones";###此行注释掉 include "/etc/named.root.key";
4、将/etc/named.conf中的根区域移动到/etc/naemd.rfc1912.zones此处来,把原来的根文件需要给删除了
[root@bogon ~]# vim /etc/named.rfc1912.zones zone "." IN { type hint; file "named.ca"; };
5、建立数据区域文件
[root@bogon ~]# vim /etc/liantong.zones zone "magedu.com." IN { type master; file liantong.zone; }; [root@bogon ~]# vim /etc/dianxin.zones zone "magedu.com" IN { type master; file "dianxin.zone"; };
6、更改权限:
[root@bogon ~]# chown :named /etc/liantong.zones /etc/dianxin.zones [root@bogon ~]# ll /etc/liantong.zones -rw-r--r--. 1 root named 64 6月 21 23:54 /etc/liantong.zones [root@bogon ~]# ll /etc/dianxin.zones -rw-r--r--. 1 root named 62 6月 21 23:55 /etc/dianxin.zones
7、建立数据区域文件的解析库数据
[root@bogon ~]# vim /var/named/liantong.zone $TTL 1D @ IN SOA ns1.magedu.com. admin.magedu.com. ( 2016070401 1D 1H 1W 3H ) IN NS ns1 ns1 IN A 192.168.1.108 www IN A 5.5.5.5 (模拟联通IP)
[root@bogon ~]# vim /var/named/dianxin.zone $TTL 1D @ IN SOA ns1.magedu.com. admin.magedu.com. ( 2016070401 1D 1H 1W 3H ) IN NS ns1 ns1 IN A 192.168.1.108 www IN A 6.6.6.6(模拟电信IP)
8、更改权限
[root@bogon named]# chown :named dianxin.zone liantong.zone drwxrwx---. 2 named named 4096 5月 11 07:07 data -rw-r--r--. 1 root named 410 6月 22 00:05 dianxin.zone drwxrwx---. 2 named named 4096 5月 11 07:07 dynamic -rw-r--r--. 1 root named 407 6月 22 00:05 liantong.zone -rw-r-----. 1 root named 3171 1月 11 22:12 named.ca -rw-r-----. 1 root named 152 12月 15 2009 named.empty -rw-r-----. 1 root named 152 6月 21 2007 named.localhost -rw-r-----. 1 root named 168 12月 15 2009 named.loopback drwxrwx---. 2 named named 4096 5月 11 07:07 slaves
9、重启服务测试:
[root@bogon ~]# dig www.magedu.com @192.168.1.108 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6 <<>> www.magedu.com @192.168.1.108 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17536 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;www.magedu.com. IN A ;; ANSWER SECTION: ###此处可以看到电信模拟地址以解析 ;; AUTHORITY SECTION: magedu.com. 86400 IN NS ns1.magedu.com. ;; ADDITIONAL SECTION: ns1.magedu.com. 86400 IN A 192.168.1.108 ;; Query time: 1 msec ;; SERVER: 192.168.1.108#53(192.168.1.108) ;; WHEN: Thu May 12 01:22:51 2016 ;; MSG SIZE rcvd: 82
原文地址:http://maweijun.blog.51cto.com/8654192/1813856