前言:DNS,耳熟能详的东西,内容太多,小编也不太好讲清,只能写几个实验详解,供大家参考。

一、简单介绍

1、DNS:通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。

端口号:53/udp, 53/tcp

2、等级

根域 :世界有13个ip地址管理,有10个在美国,1个在日本,3个在欧洲,荷兰,瑞典

一级域名:Top Level Domain: tld

  com, edu, mil, gov, net, org, int,arpa

  三类:组织域、国家域(.cn, .ca, .hk, .tw)、反向域

二级域名

三级域名

最多127 级域名

例如:www.baidu.com.

. 根

com 一级域名,相当于子目录

baidu

www

3、DNS服务器类型

DNS 服务器的类型:

DNS 服务器:管理和维护所负责解析的域内解析库的服务器

DNS 服务器:从主服务器或从服务器"复制"(区域传输)解析库副本

 

4、资源记录

资源记录:Resource Record, RR

记录类型:

SOA :Start Of Authority ,起始授权记录;一个区域解析库有且仅能有一个SOA 记录,必须位于解析库的第一条记录,同步主从数据

A :internet Address ,作用,FQDN --> IP(名字到ip)

AAAA: FQDN --> IPv6

PTR: PoinTeR ,IP --> FQDN 全称域名(ip到名字)

NS: Name Server ,专用于标明当前区域的DNS 服务器,谁是域的服务器

CNAME :Canonical Name ,别名记录

MX: Mail eXchanger 邮件

5、资源记录定义的格式:(5项,如果下一条和上一天一样,可以继承)

语法:name   [TTL(缓存生存期)]   IN   rr_type   value (5列)

注意:

(1) TTL 可从全局继承 (缓存生存期),例:$TTL 1D 一天 设为变量,下边全部使用

(2) @ 可用于引用当前区域的名字,因为有特殊含义,所以后边不能用,例如邮箱.

(3) 同一个名字可以通过多条记录定义多个不同的值;此时DNS 服务器会以轮询方式响应

(4) 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机


二、BIND安装及named服务的介绍

DNS的实现就是named服务,named服务需要安装bind包

1、BIND 的安装配置:yum install bind -y

dns 服务程序包:bind ,unbound(新的)

程序名:named ,unbound

程序包:bind

2、主配置文件:/etc/named.conf

(1)介绍

主配置文件:

全局配置:options {};

日志子系统配置:logging {};

区域定义:本机能够为哪些zone 进行解析,就要定义哪些zone

  zone "ZONE_NAME" IN {}; 数据库文件最好不写在这个主配置文件,写在/etc/named.rfc1912.zones

 原理:就是在配置文件中设置区域定义zone,然后在zone指定的文件中建立数据库,这些文件都放在/var/named下

3、options {};需要改的4个地方

① listen-on port 53 { 127.0.0.1; };  端口上只绑定自己ip

改为:listen-on port 53 { localhost; }; 或 // 注释掉

② allow-query { localhost; }; 只允许自己访问

改为:allow-query { any; };也可以不用any,公司内部允许哪些就加哪些,或 // 注释掉

③ allow-transfer 是安全策略,为了防止任何人传输下载自己的dns信息,只允许自己的从dns同步

改为:allow-transfer { 允许传输的ip;};

④ 缓存名称服务器的配置:dnssec: 建议关闭dnssec ,设为no,影响委派和转发

dnssec-enable no;
dnssec-validation no;

三、测试命令及rndc命令

1、dig

dig [-t type] name [@SERVER] [query options]  

  dig 只用于测试dns 系统,不会查询hosts 文件进行解析

查询选项:

  +[no]trace程 :跟踪解析过程 : dig +trace magedu.com

  +[no]recurse :进行递归解析

  测试反向解析:dig -x IP = dig -t ptr reverseip.in-addr.arpa

  模拟区域传送:

  dig -t axfr ZONE_NAME @SERVER    抓区域数据库,可以被allow-transfer  { 192.168.30.106;}; 防止

  dig -t axfr magedu.com @10.10.10.11

  dig -t axfr 100.1.10.in-addr.arpa @172.16.1.1

  dig -t NS . @114.114.114.114  测试邮件记录

  dig -t NS . @a.root-servers.net  查根的服务器,13个

2、host,查询没有dig详细

host [-t type] name [SERVER]

host -t NS magedu.com 172.16.0.1

host -t soa magedu.com

host -t mx magedu.com

host -t axfr magedu.com

host 1.2.3.4

3、nslookup: (windows和linux都有这个命令)

命令: nslookup [-option] [name | -] [server]

交互式模式:

  nslookup>

  server IP: 指明使用哪个DNS server 进行查询

  set q=RR_TYPE: 指明查询的资源记录类型

  NAME: 要查询的名称

4、rndc 命令

rndc:

  rndc --> rndc (953/tcp)

  rndc COMMAND

COMMAND:

  reload: 重载主配置文件和区域解析库文件

  reload zonename: 重载区域解析库文件

  retransfer zonename: 手动启动 区域传送, 而不管序列号是否增加

  notify zonename: 重新对区域传送发通知,当主从同步过程发生意外时,

    例:rndc notify magedu.com

  reconfig: 重载主配置文件

  querylog: 开启或关闭查询日志文件/var/log/message(默认不启用日志),排错的时候才开启,要不访问一条加一条记录,量太大了;关闭,执行同样的命令

    tail -f /var/log/messages 动态查询日志

  trace: 递增debug 一个级别

  trace LEVEL: 指定使用的级别,日志级别,日志的详细程度

  notrace:为将调试级别设置为 0

  flush清空DNS 服务器的所有缓存记录

实验:

实验一:建立正向解析数据库,实现域的解析,如:magedu.com

1、yum install bind   安装包

systemctl start named     centos 7开启服务

service named start           centos 6开启服务

2、vim /etc/named.conf 修改总配置文件

listen-on port 53 { localhost; };

allow-query { any ;};

3、vim /etc/named.rfc1912.zones(最好在这个文件中修改,也可在/etc/named.conf总配置文件中修改)

zone "magedu.com" {

type master;

file "magedu.com.zone";

};

4、vim /var/named/magedu.com.zone 建立修改数据库文件(这个文件名一定要和上边的对应,可以自己写,也可以复制模板)

$TTL 1D

@   IN   SOA dns1 mail.magedu.com. ( 2017100901 ; serial

                1D ; refresh

                1H ; retry

                1W ; expire

                3H ) ; minimum

@  NS dns1

dns1 A  192.168.37.107

www   CNAME websrv 设置的别名

websrv A 192.168.37.106

下面都是记录的例子:

[websrv A 192.168.37.107] 可以加多个,访问时随机,平衡负载

@ MX 10 mailsrv1 也可以加邮件记录

@ MX 20 mailsrv2

mailsrv1 A 192.168.30.100

mailsrv2 A 192.168.30.200C

$GENERATE 1-100 server$ A 1.1.1.$

@ A 192.168.30.102 解决前面不输入东西的问题,例:mage.com

* A 192.168.30.101 泛域名解析,电商前面输错了ww.taobao.com,也能进淘宝网页

注意:chgrp named /var/named/magedu.com.zone  如果不是cp -p 模板的,要注意修改权限

named-checkzone magedu.com /var/named/magedu.com.zone 检查这个数据库文件有没有错

5、rndc reload 重新加载配置文件

6、测试ping、dig、host、links...都行

dig websrv.magedu.com @192.168.30.107

dig -t mx magedu.com @192.168.30.107 检查邮件记录

host adaf23.magedu.com 192.168.30.107 检测泛域名记录

dig magedu.com @192.168.30.107

实验二:建立反向解析数据库(配置文件中都有例子)

1、2、同上

3、vim /etc/named.rfc1912.zones

zone "30.168.192.in-addr.arpa" IN { (倒过来写,反过来读)

type master;

file "192.168.30.zone";

};

4、vim /var/named/192.168.30.zone

$TTL 1D

@ IN SOA dns1 rname.invalid. (

              0 ; serial

              1D ; refresh

              1H ; retry

              1W ; expire

              3H ) ; minimum

NS dns1

dns1 A 127.0.0.1

107 PTR dns1.magedu.com.

106 PTR websrv.magedu.com.

100.30.168.192.in-addr.arpa. PTR dbsrv

5、rndc reload 重新加载配置文件

6、检测

dig -x 192.168.30.107

实验三:建立主从服务器

1、vim /etc/named.conf 修改总配置文件

主:只允许从传输数据

listen-on port 53 { localhost; };

allow-query { any ;};

allow-transfer { 从DNS服务器IP;};

从:不允许任何人传输数据

listen-on port 53 { localhost; };

allow-query { any ;};

allow-transfer { none;};

2、vim /etc/named.rfc1912.zones

主:

zone "magedu.com" {

type master;

file "magedu.com.zone";

};

从:

zone "magedu.com" IN {

type slave;

masters { 192.168.30.107;};

file "slaves/magedu.com.zone.slave";

};

3、vim /var/named/magedu.com.zone

主:加一条NS记录

NS dns1

NS dns2

dns1 A 192.168.30.107

dns2 A 192.168.30.106

从:不用创建这个文件,重新加载数据会在/var/named/slaves 自动生成一个文件,内容和主dns一样

4、rndc reload 重新加载配置文件

5、检测

dig www.magedu.com @192.168.30.106

实验四:建立子域

(1)主dns加A记录充当子域,访问量特别小

子域访问量不大,主dns可以帮它管理,在主数据库加一条A记录,实际不是建立子域,只是用户当做子域

1、vim /etc/named.conf 修改总配置文件

listen-on port 53 { localhost; };

allow-query { any ;};

2、vim/etc/named.rfc1912.zones

zone "magedu.com" {

type master;

file "magedu.com.zone";

};

3、vim /var/named/magedu.com.zone

加两条A记录:

www.henan A 2.2.2.2

mail.henan A 3.3.3.3

4、rndc reload 重新加载配置文件

5、检测 dig www.henan.magedu.com @192.168.30.107

(2)在自己的建立独机器上立的域,当子域

1、同上

2、vim/etc/named.rfc1912.zones

zone "henan.magedu.com" IN {

type master;

file "henan.magedu.com.zone";

};

3、vim /var/named/henan.magedu.com.zone 复制模板,自己写都行

cp -p /var/named/magedu.com.zone /var/named/henan.magedu.com.zone

自己写注意修改权限

$TTL 1D

@ IN SOA dns1 mail.magedu.com. (

2017100901 ; serial

1D ; refresh

1H ; retry

1W ; expire

3H ) ; minimum

NS dns1

dns1 A 192.168.30.107

www CNAME websrv

websrv A 5.5.5.5

4、5同上

(3)委派给其他机器(106)的域管理子域,访问量大的时候

在本机上:父域主机

1、vim /etc/named.conf

关闭dnssec 功能:

dnssec-enable no;

dnssec-validation no

2、vim /var/named/magedu.com.zone

@ NS dns1

henan NS dns2

dns1 A 192.168.30.107

dns2 A 192.168.30.106

在另一个机器6上:子域主机创建henan.magedu.com的master区域

3、vim /etc/named.conf

关闭dnssec 功能:

dnssec-enable no;

dnssec-validation no

4、vim /etc/named.rfc1912.zones

zone "henan.magedu.com" IN {

type master;

file "henan.magedu.com.zone";

};

5、vim /var/named/henan.magedu.com.zone

$TTL 86400 ; 1 day

@ IN SOA dns1 mail.magedu.com. (

2017100901 ; serial

86400 ; refresh (1 day)

3600 ; retry (1 hour)

604800 ; expire (1 week)

10800 ; minimum (3 hours)

)

NS dns1

dns1 A 192.168.30.106

www CNAME websrv

websrv A 6.6.6.6

6、rndc reload 重新加载配置文件

7、检测 dig www.henan.magedu.com @192.168.30.107 因为是委派,所以直接测107

实验五:服务器转发

原理:要访问www.qq.com,beijing的dns服务器给zhengzhou、shanghai转发

在6上建立qq.com的数据库

1、vim /etc/named.rfc1912.zones

zone "qq.com" IN {

   type master;

   file "qq.com.zone";c

};

2、vim /var/named/qq.com.zone 自己写(改权限)或cp -p一个模板

$TTL 86400 ; 1 day

@ IN SOA dns1 mail.magedu.com. (

                2017100901 ; serial

                86400 ; refresh (1 day)

                3600 ; retry (1 hour)

                604800 ; expire (1 week)

                10800 ; minimum (3 hours)

)

NS dns1

dns1 A 192.168.30.106

www CNAME websrv

websrv A 6.6.6.6

在7上设置转发

3、vim /etc/named.conf 设置全局转发

forward only ;

forwarders {192.168.30.106;};

named-checkconf 写完可以检测总配置文件的语法

或设置特定区域转发

vim /etc/named.rfc1912.zones

zone "qq.com" IN {

type forward;

forward first

forward { 192.168.30.106;};

};

4、rndc reload 重新加载配置文件

5、检测

dig www.qq.com @192.168.30.107

dig www.baidu.com @192.168.30.107 only的情况下,如果6的数据库没有记录,就不再询问根;first的情况下,如果6的数据库没有记录,7自己去询问根

实验六:包含子域、主从、委派的模拟dns整个过程的实验

注意:做实验之前需:关闭防火墙,关闭selinux

vim /etc/named.conf 注释两项或改两项

// listen-on port 53 { 127.0.0.1; };

// allow-query { localhost; };

listen-on port 53 { localhost; };

allow-query { any; };

改两个no

dnssec-enable no;

dnssec-validation no;

1、从107 magedu 主 开始:

① vim /etc/named.con 主配置文件加一条

allow-transfer { 192.168.30.103;};

注释或修改两行

// listen-on port 53 { 127.0.0.1; };

// allow-query { localhost; };

② vim /etc/named.rfc1912.zones 数据库配置文件

zone "magedu.com" IN {

type master;

file "magedu.com.zone";

};

③ vim /var/named/magedu.com.zone

$TTL 1D

@ IN SOA dns1 mail.magedu.com. (

2017100901 ; serial

1D ; refresh

1H ; retry

1W ; expire

3H ) ; minimum

NS dns1

NS dns2

dns1 A 192.168.30.107

dns2 A 192.168.30.103

www CNAME websrv

websrv A 192.168.30.106

④ rndc reload

⑤ 测试

dig www.magedu.com @192.168.30.107

2、103 magedu.com 从:

① vim /etc/named.conf

注释或修改2行

allow-transfer { none;}; 为了安全,不允许任何人传输信息

② vim /etc/named.rfc1912.zones

zone "magedu.com" IN {

type slave;

masters { 192.168.30.107;};

file "slaves/magedu.com.zone";

};

③ rndc reload

④ 测试

dig www.magedu.com @192.168.30.103

3、102 com:是被根委派,委派magedu的主107、从103

① vim /etc/named.conf

注释或修改2行

为了不影响转发、委派:改两个no

dnssec-enable no;

dnssec-validation no;

② vim /etc/named.rfc1912.zones

zone "com" IN {

type master;

file "com.zone";

};

③ vim /var/named/com.zone

$TTL 1D

@ IN SOA dns1 rname.invalid. (

0 ; serial

1D ; refresh

1H ; retry

1W ; expire

3H ) ; minimum

NS dns1

magedu NS dns2

magedu NS dns3

dns1 A 127.0.0.1

dns2 A 192.168.30.107

dns3 A 192.168.30.103

④ rndc reload

⑤ 检测

dig www.magedu.com @192.168.30.102

4、101 根:委派com

① vim /etc/named.conf

注释或修改2行

为了不影响转发、委派:改两个no

dnssec-enable no;

dnssec-validation no;

自己当根:

zone "." IN {

type master;

file "root.zone";

};

② vim /var/named/com.zone

$TTL 1D

@ IN SOA dns1 rname.invalid. (

0 ; serial

1D ; refresh

1H ; retry

1W ; expire

3H ) ; minimum

NS dns1

com NS dns2

dns1 A 192.168.30.101

dns2 A 192.168.30.102

③ rndc reload

④ 检测

dig www.magedu.com @192.168.30.101

5、104 第一个dns服务器:委派

① vim /etc/named.conf

注释或修改2行

为了不影响转发、委派:改两个no

dnssec-enable no;

dnssec-validation no;

② vim /var/named/named.ca 修改根服务器数据库

删除其他的根记录,留一个101的根A记录

A.ROOT-SERVERS.NET. 3600000 A 192.168.30.101

③ rndc reload

④ 检测

dig www.magedu.com @192.168.30.104

6、105 客户端:

① 修改网卡配置,dns指向192.168.30.104

DNS1=192.168.30.104

② 重启网络服务

service network restart

③ 检测

dig www.magedu.com

links www.magedu.com

实验全部结束!!!

实验七:智能dns

原理:ACL的实现,和view视图来匹配acl中的设置和zone数据库信息

1、vim /etc/named.conf 在总配置文件中,加2条acl设置,acl设置要

acl henannet {

192.168.30.0/24;

192.168.31.1/24;

};

acl beijingnet {

172.17.0.0/16;

172.18.0.0/16;

};

2、vim /etc/named.conf 还是在主配置文件中,设置view关联:acl和zone区域

有两种方法:

方法一:直接就在主配置文件中设置好zone数据库

方法二:在主配置文件中指向/etc/named.rfc1912.zones中,在这个文件中设置zone数据库

view henanview {

match-clients { henannet;};

zone "magedu.com" {

type master;

file "magedu.com.zone.henan";

};

zone "." IN { //加个根zone,是为了能访问外网

type hint;

file "named.ca";

};

};

view beijingview {

match-clients { beijingnet;};

include "/etc/named.rfc1912.zones.beijing";

zone "." IN {                 //加个根zone,是为了能访问外网

type hint;

file "named.ca";

};

};

view otherview { //加一个other,不在那两个view的也要能访问

match-clients {any;};

include "/etc/named.rfc1912.zones";

};

3、若2采用了方法二,则需:

vim /etc/named.rfc1912.zones.beijing

zone "magedu.com" IN {

type master;

file "magedu.com.zone.beijing";

};

若有other,需:

vim /etc/named.rfc1912.zones

zone "magedu.com" IN {

type master;

file "magedu.com.zone";

};

4、在数据库中随便配置点设置,为了试验测试结果明显,可以把三个解析的地址写为不同的

vim /var/named/magedu.com.zone

vim /var/named/magedu.com.zone.henan

vim /var/named/magedu.com.zone.beijing

$TTL 1D

@ IN SOA dns1 mail.magedu.com. (

2017100903 ; serial

1D ; refresh

1H ; retry

1W ; expire

3H ) ; minimum

NS dns1

dns1 A 192.168.30.107

www CNAME websrv

websrv A 6.6.6.6

5、测试,测试的解析不一样

dig www.magedu.com @192.168.30.107 测试henan

dig www.magedu.com @172.17.252.107 测试beijing

dig www.magedu.com @127.0.0.1 测试other

实验有点多,中间也会有很多错误,如果有什么不懂可以留言~

 

DNS—正、反向解析;委派;主从;子域;转发;智能dns等的实现的更多相关文章

  1. linux服务基础之DNS正反向解析、主从同步、子域授权及视图

    关键词: 正向解析 反向解析 主从复制 自域授权 视图 一.DNS基本原理 1.1 什么是DNS?BIND又是什么? DNS:Domain Name Service,它是一个基于应用层的协议,是C/S ...

  2. 基于Bind实现的DNS正反向解析及主从DNS的配置

    一.什么是DNS? 1.1 简单的理解,Domain Name System,是互联网一项核心的服务,他作为一个桥梁可以将域名和IP地址相互因素的一个分布式数据库,能够使人更加方便的访问互联网,而不用 ...

  3. 远程首次连接mysql速度慢的解决方法:skip-name-resolve取消DNS的反向解析(转)

    PHP远程连接MYSQL速度慢,有时远程连接到MYSQL用时4-20秒不等,本地连接MYSQL正常,出现这种问题的主要原因是,默认安装的 MYSQL开启了DNS的反向解析,在MY.INI(WINDOW ...

  4. 远程连接mysql速度慢的解决方法:skip-name-resolve取消DNS的反向解析

    PHP远程连接MYSQL速度慢,有时远程连接到MYSQL用时4-20秒不等,本地连接MYSQL正常,出现这种问题的主要原因是,默认安装的 MYSQL开启了DNS的反向解析,在MY.INI(WINDOW ...

  5. DNS域名解析之反向解析and主从域名服务器 (今天大小便正常,未来可期)

    DNS解析之反向解析和域名主从服务器 反向解析:根据IP地址查找对应的域名 yum -y install bind 安装软件包 查看需要修改的配置文件所在路径 rpm -qc bind 查询bind软 ...

  6. DNS反向解析,主从服务器,分离解析(内外网)

    目录 实验一:DNS反向解析 1.安装bind 2.查找配置文件路径 3.配置/etc/named.conf主配置文件 4.修改/etc/named.rfc1912.zones区域配置文件(复制两个) ...

  7. 主DNS服务-反向解析

    上篇说了主DNS正向解析 当中是有个小问题的,什么问题呢? 试问当我们输入wwww或ww或更多w的时候它还能解析出来吗? 或者不输入w的时候还能解析吗? 上篇没有定义是解析不了的,怎么定义呢?很简单, ...

  8. DNS服务反向解析及过程中一些小问题解决

    在此需要了解一下,反向解析的作用是根据IP地址查找到对应的主机名(域名),在区域文件(named.rfc1912.zones)中默认已存在一些注释内容与区域信息,可不需要删除上面实验及默认区域信息,直 ...

  9. DNS服务反向解析实验

    DNS域名解析服务是用于解析域名与ip地址对应关系的服务,功能上可以实现正向解析和反向解析 正向解析:根据主机名(域名)查找对应的IP地址. 反向解析:根据IP地址查找对应的主机名(域名). 下面我来 ...

  10. 主从及转发DNS搭建

    author:JevonWei 版权声明:原创作品 主DNS 安装bind软件包 yum -y install bind systemctl start named systemctl enable ...

随机推荐

  1. [转]Java7中的ForkJoin并发框架初探(上)——需求背景和设计原理

    详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp83 这篇我们来简要了解一下JavaSE7中提供的一个新特性 -- For ...

  2. js并行加载,顺序执行

    js并行加载,顺序执行 <script>运行脚本或加载外部文件时,会阻塞页面渲染,阻塞其他资源的加载.如果页面中需要加载多个js文件,在古老浏览器中性能会比较糟糕. 因此有了最原始的优化原 ...

  3. String.equals()方法

    public boolean equals(Object anObject) {     if (this == anObject) {         return true;     }      ...

  4. Day-12: 进程和线程

    进程和线程 在操作系统看来,一个任务就是一个进程,而一个进程内部如果要做多个任务就是有多个线程.一个进程至少有一个线程. 真正的并行执行任务是由多个CUP分别执行任务,实际中是由,操作系统轮流让各个任 ...

  5. 转:swagger 入门

    前言 swagger ui是一个API在线文档生成和测试的利器,目前发现最好用的. 为什么好用?Demo 传送门 支持API自动生成同步的在线文档 这些文档可用于项目内部API审核 方便测试人员了解A ...

  6. 转:java获得当前文件路径

    第一种: File f = new File(this.getClass().getResource("/").getPath()); System.out.println(f); ...

  7. Js函数初学者练习(一)switch-case结构实现计算器。

      前  言 JRedu 给大家介绍一点JS函数的练习题希望初学者多做一些练习能够更好的掌握JS的函数,以及能够提升大家的逻辑思维.(我也是个渣渣希望路过的大神多提建议或意见) 希望能够对大家有所帮助 ...

  8. CCNP-3.vlan间路由及三层交换机的配置

  9. 201521123084 《Java程序设计》第2周学习总结

    第2周作业-Java基本语法与类库 1. 本周学习总结 1.学会使用码云管理代码: 2.学会使用Eclipse关联jdk源代码,并查看对象的源代码: 3.学会String类和StringBuilder ...

  10. java可访问修饰符

    修饰符 同一个类中 同一个包中 不同包的子类 不提供包的非子类 private √ friendly(省略) √ √ protected √ √ √ public √ √ √ √