域名系统DNS简介

 

一:自己试验的案例
http://blog.51cto.com/12173069/2070037

https://www.linuxidc.com/Linux/2017-07/145879.htm

https://www.cnblogs.com/heqiuyu/articles/6600326.html

1、yum -y install bind bind-utils bind-chroot

2、vim /etc/named.conf

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html

options {
	#listen-on port 53 { 127.0.0.1; };
	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     { localhost; };
	allow-query     { any; };
        #forwarders { 8.8.8.8;114.114.114.114;10.20.0.9;  };

	/* 
	 - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
	 - If you are building a RECURSIVE (caching) DNS server, you need to enable 
	   recursion. 
	 - If your recursive DNS server has a public IP address, you MUST enable access 
	   control to limit queries to your legitimate users. Failing to do so will
	   cause your server to become part of large scale DNS amplification 
	   attacks. Implementing BCP38 within your network would greatly
	   reduce such attack surface 
	*/
	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

// named.rfc1912.zones:
//
// Provided by Red Hat caching-nameserver package 
//
// ISC BIND named zone configuration for zones recommended by
// RFC 1912 section 4.1 : localhost TLDs and address zones
// and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt
// (c)2007 R W Franks
// 
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

zone "localhost.localdomain" IN {
	type master;
	file "named.localhost";
	allow-update { none; };
};

zone "localhost" IN {
	type master;
	file "named.localhost";
	allow-update { none; };
};

zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
	type master;
	file "named.loopback";
	allow-update { none; };
};

zone "1.0.0.127.in-addr.arpa" IN {
	type master;
	file "named.loopback";
	allow-update { none; };
};

zone "0.in-addr.arpa" IN {
	type master;
	file "named.empty";
	allow-update { none; };
};

//以下是测试 jettech.com 就是域名  jettech.com.zone是/var/named/jettech.com.zone文件
zone "jettech.com" IN {
	type master;
	file "jettech.com.zone"; 
        allow-update { none; };
};
zone "30.30.10.in-addr.arpa" IN {
    type master;
    file "named.10.30.30";
    allow-update { none; };
};

4、vim /var/named/jettech.com.zone 正向解析

$TTL 1
$ORIGIN jettech.com.
@       IN SOA  ns1.jettech.com.   wubo459097610.com ( 0 1D 1H 1W 3H )
@       IN      NS      ns1
@       IN      NS      ns2
ns1     IN      A       10.30.30.126
ns2     IN      A       10.30.30.121
ftp     IN      A       10.30.30.123
home    IN      A       221.226.73.174
ns4     IN      A       10.30.30.117
ns5     IN      CNAME   ns4

测试:
[root@k8s-dev-116 ~]# dig home.jettech.com @10.30.30.126

; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7 <<>> home.jettech.com @10.30.30.126
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37455
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;home.jettech.com.		IN	A

;; ANSWER SECTION:
home.jettech.com.	1	IN	A	221.226.73.174

;; AUTHORITY SECTION:
jettech.com.		1	IN	NS	ns1.jettech.com.
jettech.com.		1	IN	NS	ns2.jettech.com.

;; ADDITIONAL SECTION:
ns1.jettech.com.	1	IN	A	10.30.30.126
ns2.jettech.com.	1	IN	A	10.30.30.121

;; Query time: 0 msec
;; SERVER: 10.30.30.126#53(10.30.30.126)
;; WHEN: Mon Sep 17 15:07:21 CST 2018
;; MSG SIZE  rcvd: 129

a. 检查主配置文件语法:named-checkconf /etc/named.conf

b. 检查正向解析域的语法:named-checkzone jettech.com //var/named/jettech.com.zone

c. 检查反向解析域的语法:named-checkzone 30.30.10.in-addr.arpa /etc/named/zones/named.10.30.30 

解释:

1)@:指的是3中的zone名字

2)IN:internel ,因特尔。网络类型

3)SOA:授权开始(Start of Authority, SOA)记录是区域文件的第一条记录, 用于记录为本服务器授权的上级名称服务器. 

格式: 域名  网络类型   SOA  域名或域中具体一个   mail(@换成.) (0 1D 1H 1W 3H)

一个域文件至少而且有唯一一个SOA记录,至少一个NS记录、MX记录以及多个A记录,CNAME记录等

4). :点代表绝对路径。如NS:ns1.jettech.com.  如果没有后面的点 代表的是ns1.jettech.com.jettech.com

 

5、 vim /var/named/named.10.30.30  反向解析

$TTL 3600
$ORIGIN 30.30.10.in-addr.arpa.
@       IN SOA  ns1.jettech.com.   wubo459097610.com ( 0 1D 1H 1W 3H )
        IN      NS      jettech.com.
126     IN      PTR     ns1.jettech.com.
121     IN      PTR     ns1.jettech.com.
123     IN      PTR     ftp.jettech.com.
117     IN      PTR     ns4.jettech.com.


测试:
[root@k8s-master-126 etc]# dig  -x 10.30.30.123  @10.30.30.126

; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7_5.1 <<>> -x 10.30.30.123 @10.30.30.126
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49160
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;123.30.30.10.in-addr.arpa.	IN	PTR

;; ANSWER SECTION:
123.30.30.10.in-addr.arpa. 3600	IN	PTR	ftp.jettech.com.

;; AUTHORITY SECTION:
30.30.10.in-addr.arpa.	3600	IN	NS	jettech.com.

;; Query time: 0 msec
;; SERVER: 10.30.30.126#53(10.30.30.126)
;; WHEN: Mon Sep 17 15:06:25 CST 2018
;; MSG SIZE  rcvd: 97

 

window中:

linux中:

[root@k8s-dev-116 ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 10.30.30.126

 

二:主从DNS

这里主DNS服务器IP地址为192.168.29.100/24
从DNS服务器IP地址为192.168.29.3/24
www.linuxidc.com 对应IP 为192.168.29.100;
ftp.linuxidc.com 对应IP为1.1.1.1

1首先编辑主服务器/etc/named.conf文件

    listen-on port 53 { any; };
    allow-query     { any; };
    recursion yes;

    dnssec-enable no;
    dnssec-validation no;

2 编辑主服务器的区域配置文件/etc/named.rfc1912.zones

zone "linuxidc.com" IN {
        type master;
        file "linuxidc.com.zone";
        allow-transfer {192.168.29.3; };  ##192.168.29.3位从服务器的ip地址。
};

3 新建主服务器解析库文件vim /var/named/linuxidc.com.zone

$TTL 1D
$ORIGIN linuxidc.com.
@   IN SOA  linuxidc.com. admin.linuxidc.com. (
                    20170526; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
linuxidc.com. IN  NS  ns1.linuxidc.com.
mytest.com. IN  NS  slave.linuxidc.com.   ###添加从服务器的NS解析记录。

ns1 IN  A   192.168.29.100
slave   IN  A   192.168.29.3    ###指定从服务器的IP地址。
www IN  A   172.16.254.13
ftp     IN   A  1.1.1.1

4 编辑从服务器/etc/named.conf文件

    listen-on port 53 { any; };
    allow-query     { any; };
    recursion yes;
    dnssec-enable no;
    dnssec-validation no;

5 配置从服务器的区域配置文件/etc/named.rfc1912.zones

zone "linuxidc.com" IN {
    type slave; ##表明本机是从服务器
    file "slaves/linuxidc.com";   ##将同步后的文件放置在哪里,这里是相对路径,实际路径为/var/named/slaves/linuxidc.com
    masters {192.168.29.100; }; ##指定主服务器的ip地址
};

6 语法检查

在主从两个服务器上都进行语法检查

[root@CentOS7 ~]# named-checkconf

7 在主从两个服务器上开启服务

[root@CentOS7 ~]# systemctl start named

8 测试

(1)查看从服务器已经取得解析数据库文件

[root@centos7 ~]# ll  /var/named/slaves/
total 4
-rw-r--r--. 1 named named 348 May 26 15:22 linuxidc.com

(2)用从服务器解析www.linuxidc.com

[root@centos7 ~]# dig -t A www.linuxidc.com @192.168.29.3
[……]
;; ANSWER SECTION:
www.linuxidc.com.     86400   IN  A   172.16.254.13

;; AUTHORITY SECTION:
linuxidc.com.     86400   IN  NS  slave.linuxidc.com.
mytest.com.     86400   IN  NS  ns1.linuxidc.com.

;; ADDITIONAL SECTION:
ns1.linuxidc.com.     86400   IN  A   192.168.29.100
slave.linuxidc.com.       86400   IN  A   192.168.29.3

;; Query time: 2 msec
;; SERVER: 192.168.29.3#53(192.168.29.3)
;; WHEN: Fri May 26 15:37:13 CST 2017
;; MSG SIZE  rcvd: 129

可以看到解析成功。说明从服务器已生效。

 

三:子域授权

这里子域服务器为192.168.29.110

1 在linuxidc.com.域的服务器上修改区域数据库文件

[root@CentOS7 ~]# cat /var/named/linuxidc.com.zone 
$TTL 1D
$ORIGIN linuxidc.com.
@   IN SOA  linuxidc.com. admin.linuxidc.com. (
                    20170526; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
linuxidc.com. IN  NS  ns1.linuxidc.com.
mytest.com. IN  NS  slave.linuxidc.com.
haha.linuxidc.com.    IN NS  ns2.haha.linuxidc.com.  ###新添加的行

ns1 IN  A   192.168.29.100
slave   IN  A   192.168.29.3
www IN  A   172.16.254.13
ftp     IN   A  1.1.1.1
ns2.haha.linuxidc.com. IN A 192.168.29.110    ###新添加行,指明子域服务器IP地址。

2 修改子域服务器的主配置文件/etc/named.conf

[root@CentOS7 ~]# vim  /etc/named.conf
    listen-on port 53 { any; };
    allow-query     { any; };
    recursion yes;
    dnssec-enable no;
    dnssec-validation no;

3 编辑子域服务器的区域配置文件/etc/named.rfc1912.zones

[root@CentOS7 ~]# vim  /etc/named.rfc1912.zones
zone "haha.linuxidc.com" IN {
        type master;
        file "haha.zone";
        allow-transfer {192.168.29.0/24; };
};

4 新建主服务器解析库文件/var/named/haha.zone

域名www.haha.linuxidc.com 对应IP 172.16.11.11
域名ftp. haha.linuxidc.com 对应IP 2.2.2.2

[root@CentOS7 ~]# vim /var/named/haha.zone
$TTL 1D
$ORIGIN haha.linuxidc.com.
@       IN SOA  haha.linuxidc.com. admin.haha.linuxidc.com. (
                                        20170528; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
haha.linuxidc.com. IN     NS      ns2.haha.linuxidc.com.

ns2     IN      A       192.168.29.110
www     IN      A       172.16.11.11
ftp     IN       A      2.2.2.2

5 语法检查

在两个服务器上都进行语法检查

[root@CentOS7 ~]# named-checkconf

6 在两个服务器上开启服务

[root@CentOS7 ~]# systemctl start named

7测试

[root@centos7 ~]# dig -t A  www.haha.linuxidc.com @192.168.29.100

; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> -t A www.haha.linuxidc.com @192.168.29.100
[…….]
;www.haha.linuxidc.com.       IN  A

;; ANSWER SECTION:
www.haha.linuxidc.com.    86400   IN  A   172.16.11.11

;; AUTHORITY SECTION:
haha.linuxidc.com.    86400   IN  NS  ns2.haha.linuxidc.com.

;; ADDITIONAL SECTION:
ns2.haha.linuxidc.com.    86400   IN  A   192.168.29.110

可以看到,已经可以成功解析

 

四、缓存域名服务器配置

在上面的准备工作做完了,默认就配置好了缓存域名服务器。

但是我们这里还有在做两点,为大家更好的理解域名服务器的配置。

 

定义转发:

注意:被转发的服务器必须允许为当前服务做递归;

1) 区域转发:仅转发对某特定区域的解析请求;

配置格式:
    	zone  "ZONE_NAME"  IN {
    	type  forward;
    	forward  {first|only};
    	forwarders  { SERVER_IP; };
    	};
    	first:首先转发;转发器不响应时,自行去迭代查询;
    	only:只转发;

 

具体配置:

1

2

3

4

5

6

[root@wlm ~]# vim /etc/named.rfc1912.zones #在最后面添加

zone "wlm.com" IN {

        type forward;

        forward first;

        forwarders { 10.10.10.3; };

        };

语法检查,重启bind

1

2

[root@wlm ~]# named-checkconf 

[root@wlm ~]# systemctl restart named.service

验证:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

[root@wlm ~]# dig -t A www.wlm.com

 

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -t A www.wlm.com

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5158

;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

 

;; OPT PSEUDOSECTION:

; EDNS: version: 0, flags:; udp: 4096

;; QUESTION SECTION:

;www.wlm.com.           IN  A

 

;; ANSWER SECTION:

www.wlm.com.        3600    IN  A   10.10.10.4

 

;; AUTHORITY SECTION:

wlm.com.        3600    IN  NS  ns2.wlm.com.

wlm.com.        3600    IN  NS  ns1.wlm.com.

 

;; ADDITIONAL SECTION:

ns1.wlm.com.        3600    IN  A   10.10.10.3

ns2.wlm.com.        3600    IN  A   10.10.10.10

 

;; Query time: 53 msec

;; SERVER: 10.10.10.11#53(10.10.10.11)

;; WHEN: 三 11月 16 15:20:59 CST 2016

;; MSG SIZE  rcvd: 124

 

 

2) 全局转发:针对凡本地没有通过zone定义的区域查询请求,通通转给某转发器;

配置格式:
    	options {
    	... ...
    	forward  {only|first};
    	forwarders  { SERVER_IP; };
    	.. ...
    	};

具体配置:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

vim /etc/named.conf

options {

        listen-on port 53 { 127.0.0.1; 10.10.10.11; };    # 监听本机的IP端口

        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     { localhost; };    # 允许为其他主机解析

        allow-transfer { none; };          # 从服务器不需要传送

        forward first;                     # 本机不能解析的转发给10.10.10.3做解析

        forwarders { 10.10.10.3; };        # 被转发的服务器IP

        /* 

         - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.

         - If you are building a RECURSIVE (caching) DNS server, you need to enable 

           recursion. 

         - If your recursive DNS server has a public IP address, you MUST enable access 

           control to limit queries to your legitimate users. Failing to do so will

           cause your server to become part of large scale DNS amplification 

           attacks. Implementing BCP38 within your network would greatly

           reduce such attack surface 

        */

        recursion yes;

 

        dnssec-enable no;    #关闭    

        dnssec-validation no;    #关闭

语法检查然后重启bind

1

[root@wlm ~]# systemctl restart named.service

验证:

1

2

3

4

5

6

7

8

9

10

11

12

13

[root@wlm ~]# ping www.baidu.com

PING www.a.shifen.com (220.181.112.244) 56(84) bytes of data.

64 bytes from 220.181.112.244: icmp_seq=1 ttl=128 time=6.67 ms

p64 bytes from 220.181.112.244: icmp_seq=2 ttl=128 time=6.60 ms

^C

--- www.a.shifen.com ping statistics ---

2 packets transmitted, 2 received, 0% packet loss, time 1005ms

rtt min/avg/max/mdev = 6.608/6.640/6.672/0.032 ms

[root@wlm ~]# ping www.wlm.com

PING www.wlm.com (10.10.10.4) 56(84) bytes of data.

^C

--- www.wlm.com ping statistics ---

2 packets transmitted, 0 received, 100% packet loss, time 1001ms

总结:总体上,DNS的配置还是比较简单的。虽然在日常运维中,可能不需要进行实战,毕竟企业内部部署域名服务器的不多,即使有,也是后期的维护了。但是作为运维人员,熟悉DNS的工作原理是非常必要的,通过这些配置,我相信你已经真正的熟悉了DNS。

本来还想配置子域名服务器的,后来觉得没必要了。具体的逻辑图如下,供大家参考。

 

=====================================================================

 

 

 

 

 

 

 

 

 

 

 

 

https://www.cnblogs.com/Finley/p/6831508.html

https://blog.csdn.net/solaraceboy/article/details/78960307

域名系统(Domain Name System, DNS)是互联网的核心应用层协议之一, 它用于查询域名对应的IP地址.在使用域名访问任何网络资源时都需要先进行域名解析.

www.cnblogs.com是一个典型的域名, 在进行Http访问之前它会先被DNS转换为一个ip地址.

域名与目录树类似形成一个树状结构, 最右侧为顶级域, 向左域名级别降低.

所有域名都属于根域. 根域由13组根域名服务器管理, 从A.ROOT-SERVERS.NETM.ROOT-SERVERS.NET.

根域的下一级为顶级域(top level domain, TLD), 如通用顶级域名.com.net.gov和地区顶级域名.cn.jp等. 下一级为次级域名, 如cnblogsbaidugoogle.

最低级的为主机名, 如wwwmail等.

根域下顶级域名的分配和使用由非营利性的互联网名称与数字地址分配机构(Internet Corporation for Assigned Names and Numbers, ICNN)管理.

顶级域下次级域名由各地区的域名管理机构管理, 主机名则由域名拥有者自己管理.

 

yum -y install bind bind-utils bind-chroot

域名解析

域名系统是一个典型的分布式数据库, 每个名称服务器(nameserver)只存储着部分数据. 当其无法解析某个域名时, 就向其它服务器请求解析直到成功解析或超时.

下面简单介绍DNS解析过程:

  1. 查询本地hosts文件, unix系操作系统一般在/etc/hosts

  2. 若hosts文件不存在相关记录, 则检查本地DNS缓存.

  3. 若本地DNS缓存不存在相关记录则查询首选名称服务器.

若目标域名处在名称服务器的管理之下, 则名称服务器可以给出可靠的解析结果.

若目标域名不属于名称服务器管理但在它的缓存中, 名称服务器可以根据它的缓存给出一个不可靠的解析结果.

若首选名称服务器无法解析域名, 根据名称服务器的配置有两种策略:

  • 若本地DNS配置了转发, 则请求转发给上一级DNS解析. 上级DNS将解析结果返回给本地DNS, 由本地DNS返回给客户端.

  • 若本地DNS未配置转发, 则自顶向下查询:
  1. 本地DNS请求根服务器(共13台), 根服务器将顶级域名主名称服务器的IP地址返回给本地DNS.
  2. 本地DNS则请求顶级域名服务器. 若顶级域名服务器可以解析则将结果返回给本地DNS, 由本地DNS返回给客户端.
  3. 若顶级域名服务器无法解析则返回下一级主名称服务器地址, 直到某一级DNS成功解析.

DNS记录

DNS是一个分布式的数据库, 名称服务器使用DNS记录(dns record)保存域名和IP之间的关系.

名称服务器使用区域文件(zone file)保存自己的记录, 区域文件中除了DNS记录外还定义了一些环境变量.

  • $ORIGIN表示本NS管理的域, 如$ORIGIN example.com.表示本NS管理example.com域.

  • $TTL表示解析记录在缓存中的默认过期时间.

这是一个区域文件的示例, 可以让我们更好地理解区域文件:

$ORIGIN example.com.  
$TTL 1h               
example.com.  IN  SOA   ns.example.com. username.example.com. ( 2007120710 1d 2h 4w 1h )
example.com.  IN  NS    ns   
example.com.  IN  NS    ns.somewhere.example.
example.com.  IN  MX    10 mail.example.com.  
@             IN  MX    20 mail2.example.com. 
@             IN  MX    50 mail3              
example.com.  IN  A     192.0.2.1             
              IN  AAAA  2001:db8:10::1        
ns            IN  A     192.0.2.2             
              IN  AAAA  2001:db8:10::2        
www           IN  CNAME example.com.          
wwwtest       IN  CNAME www                   
mail          IN  A     192.0.2.3             
mail2         IN  A     192.0.2.4             
mail3         IN  A     192.0.2.5             

DNS记录有以下几种类型:

A记录和AAAA记录

A记录是IPv4主机记录, AAAA为IPv6主机记录, 如下面这一条:

example.com.  IN  A     192.0.2.1
              IN  AAAA  2001:db8:10::1

它表示主机example.com对应的IPv4地址为192.0.2.1, IPv6地址为2001:db8:10::1.

第二个字段IN表示Internet, 这一字段会出现在很多记录中.

最后加.表示采用绝对路径, 区域文件也可以用相对路径来配置.

下面两条记录的作用是一样的:

www.example.com. IN A 192.0.2.2

相对路径表示:

www IN A 192.0.2.2

@$ORIGIN记录了IP地址, 下面这条记录配置了example.com主机的IP地址:

@ IN A 192.0.2.1

SOA记录

授权开始(Start of Authority, SOA)记录是区域文件的第一条记录, 用于记录为本服务器授权的上级名称服务器.

example.com.  IN  SOA   ns.example.com. username.example.com. (         
    2007120710 ; serial number
    1d ; refresh interval 
    2h ; retry interval
    4w ; expiry period
    1h ; negative TTL
)

上述记录表示域example.com的主名称服务器为ns.example.com.

username.example.com.表示管理员邮箱为username@example.com, 注意@被替换为..

后面的字段表示:

  • serial number表示本服务器记录的版本号, 每次修改版本号就会加1. 通过比较本服务器版本号和上级服务器版本号已进行同步.
  • refresh interval表示向SOA服务器请求更新记录的间隔
  • retry interval表示向SOA服务器请求更新记录失败时的重试周期
  • expiry period表示SOA服务器若在此时间内不响应, 则不再将其作为SOA服务器
  • negative ttl表示当查询结果为无此记录时, 缓存该结果的时间

NS记录

ns记录用于表示某个域的名称服务器:

example.com.  IN  NS    ns   
example.com.  IN  NS    ns2.example.com.

上述两条记录表示example.com域的名称服务器为ns.example.com, 备用名称服务器为ns2.example.com.

每个区域文件中至少定义两个名称服务器,以便在一个服务器出现问题时还能正确运行. 如果只有一个名称服务器,大多数 DNS 服务器软件都会认为区域文件无效.

在自顶向下查询过程中, 父域的名称服务器根据自己的ns记录确定子域的名称服务器.

MX记录

MX记录用于表示某个域的邮件服务器:

example.com.  IN  MX  10 mail.example.com.  

上述记录表示mail.example.comexample.com域的邮件服务器.

也可以使用@表示根域, 使用相对路径表示邮件服务器.

@             IN  MX    20 mail2.example.com. 
@             IN  MX    50 mail3           

记录中第4个字段的数字表示优先级, 数字越小优先级越高.

CNAME记录

CNAME记录用于记录域名别名:

www           IN  CNAME example.com.          
wwwtest       IN  CNAME www     

上述记录表示www.example.comexample.com的一个别名, wwwtest.example.com又是www.example.com的一个别名.

DNS工具

配置本地nameserver

在我们可以使用域名访问网络前, 需要先配置本地的名称服务器. 本地名称服务器可以由DHCP协议动态分配, 也可以手动配置.

Unix系列操作系统, 在/etc/resolv.conf配置文件中设置nameserver:

nameserver 172.18.49.59

为自己的网站配置域名

首先, 自己网站的服务器需要拥有一个公网IP, 使得我们在互联网上可以直接访问该主机.

随后可以在域名提供商处购买自己的域名, 比如finley.cn. 然后在域名提供商处添加A记录将域名解析到自己主机的公网ip.

查询所有者

whois指令可以查询域名所有者的信息:

& whois cnblogs.com
Domain Name: cnblogs.com
Registry Domain ID: 866509_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.35.com
Registrar URL: http://www.35.com
Updated Date: 2016-10-23T22:59:39Z
Creation Date: 2003-11-11T04:00:00Z
Registrar Registration Expiration Date: 2021-11-11T04:00:00Z
Registrar: 35 Technology Co., Ltd.
...

DNS查询

host命令可以查询某个域名的ip:

$ host cnblogs.com
cnblogs.com has address 42.121.252.58

cnblogs.com mail is handled by 30 aspmx2.googlemail.com.
cnblogs.com mail is handled by 30 aspmx3.googlemail.com.
cnblogs.com mail is handled by 30 aspmx4.googlemail.com.
cnblogs.com mail is handled by 30 aspmx5.googlemail.com.
cnblogs.com mail is handled by 10 aspmx.l.google.com.
cnblogs.com mail is handled by 20 alt1.aspmx.l.google.com.
cnblogs.com mail is handled by 20 alt2.aspmx.l.google.com.

nslookup可以交互式查询:

 $ nslookup
> cnblogs.com
Server:     172.18.49.59
Address:    172.18.49.59#53

Non-authoritative answer:
Name:   cnblogs.com
Address: 42.121.252.58

dig命令可以看到DNS解析过程:

dig cnblogs.cn

; <<>> DiG 9.8.3-P1 <<>> cnblogs.cn
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54154
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 4, ADDITIONAL: 0

;; QUESTION SECTION:
;cnblogs.cn.            IN  A

;; ANSWER SECTION:
cnblogs.cn.     600 IN  CNAME   fw1.22.cn.
fw1.22.cn.      973 IN  CNAME   22url.lncdn.com.
22url.lncdn.com.    27  IN  A   103.13.73.87
22url.lncdn.com.    27  IN  A   162.251.94.12
22url.lncdn.com.    27  IN  A   162.251.94.101

;; AUTHORITY SECTION:
lncdn.com.      112713  IN  NS  ns2.360dns.net.
lncdn.com.      112713  IN  NS  ns1.360dns.org.
lncdn.com.      112713  IN  NS  ns2.360dns.org.
lncdn.com.      112713  IN  NS  ns1.360dns.net.

;; Query time: 69 msec
;; SERVER: 172.18.49.59#53(172.18.49.59)
;; WHEN: Tue May  9 17:03:53 2017
;; MSG SIZE  rcvd: 218

Keep working, we will find a way out. This is Finley, welcome to join us.

 

https://blog.csdn.net/miouqi/article/details/76422700

一、DNS及BIND的简介

      DNS(Domain Name System),即域名系统。它使用层次结构的命名系统,将域名和IP地址相互映射,形成一个分布式数据库系统。DNS采用CS架构,服务器端工作在UDP协议端口53和TCP协议端口53上。FQDN(Fully Qualified Domain Name)完全限定域名,它是使用DNS的数状层级结构的完全路径域名来表示一个准确位置的主机。提供正向解析(FQDN—>IP)和反向解析(IP—>FQDN)的功能。目前DNS已经成为互联网通讯的基础服务。 
      BIND(Berkeley Internet Name Domain)BIND(Berkeley Internet Name Daemon)是现今互联网上最常使用的DNS服务器软件,使用BIND作为服务器软件的DNS服务器约占所有DNS服务器的九成。BIND现在由互联网系统协会(Internet Systems Consortium)负责开发与维护。

二、实验环境:

VM12、CentOS7.3 x64(作为DNS服务器,IP为172.16.252.77)、CentOS6.9 x64(作为测试机,IP地址为172.16.252.174)

三、实验前的准备:

      因为本实验只是为了了解DNS的实现,所有关掉了CentOS7.3的防火墙,SELinux.

[root@hengxia ~]# getenforce  # 查看当前selinux的运行状态
Enforcing
[root@hengxia ~]# vi /etc/selinux/config
SELINUX=enforcing改为SELINUX=permissive
[root@hengxia ~]# setenforce 0   # 使生效
[root@hengxia ~]# iptables -nvl
[root@hengxia ~]# systemctl disable firewalld           # 设为下次开机禁止启动
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
[root@hengxia ~]# systemctl stop firewalld              # 关闭防火墙
[root@hengxia ~]# iptables -vnL

四、CentOS7.3上yum安装BIND,并启动

      在CentOS7.3上安装BIND,并启动

[root@hengxia ~]# yum -y install bind
[root@hengxia ~]# rpm -ql bind 
/etc/logrotate.d/named
/etc/named
/etc/named.conf         # 主配置文件
/etc/named.iscdlv.key
/etc/named.rfc1912.zones    # 区域解析库文件 
...(中间省略)...
/run/named          # 服务脚本使用此文件
...(中间省略)...
/var/log/named.log
/var/named          # 服务根目录
...(中间省略)...
/var/named/slaves       # 从服务器使用的区域解析目录
[root@hengxia ~]# systemctl start named   # 启动服务
[root@hengxia ~]# systemctl enable named  # 设为开机启动
Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
[root@hengxia ~]# ss -nult     # 端口有问题,绑定在127.0.0.1,只有本地可用,不能对外服务
Netid  State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
udp    UNCONN     0      0           *:43451                   *:*                  
udp    UNCONN     0      0      127.0.0.1:53                      *:*                  
udp    UNCONN     0      0           *:68                      *:*                  
udp    UNCONN     0      0         ::1:53                     :::*                  
udp    UNCONN     0      0          :::16010                  :::*                  
tcp    LISTEN     0      10     127.0.0.1:53                      *:*                  
tcp    LISTEN     0      128         *:22                      *:*                  
tcp    LISTEN     0      128    127.0.0.1:953                     *:*                  
tcp    LISTEN     0      100    127.0.0.1:25                      *:*                  
tcp    LISTEN     0      10        ::1:53                     :::*                  
tcp    LISTEN     0      128        :::22                     :::*                  
tcp    LISTEN     0      128       ::1:953                    :::*                  
tcp    LISTEN     0      100       ::1:25                     :::*        

五、在CentOS7.3配置BIND

      在CentOS7.3配置BIND

[root@centos6 ~]# yum install telnet -y
[root@centos6 ~]# telnet 172.16.252.77 53        # 访问DNS服务器的53端口被拒绝
Trying 172.16.252.77...
telnet: connect to address 172.16.252.77: Connection refused

[root@hengxia ~]# cp -p /etc/named.conf{,.bak} # 备份named.conf并修改  
[root@hengxia ~]# vim /etc/named.conf
listen-on port 53 { 127.0.0.1; }; 将此行注释掉(默认绑定所有IP)或改为 listen-on port 53 { localhost; };  # 此处代表本机所有IP
[root@hengxia ~]# systemctl reload named #重新加载配置文件
[root@hengxia ~]# cd /etc/sysconfig/network-scripts/           
[root@hengxia network-scripts]# vim ifcfg-ens33
[root@hengxia network-scripts]# cat ifcfg-ens33 # 修改默认DNS
HWADDR="00:0c:29:c2:73:07"
TYPE="Ethernet"
BOOTPROTO="none"
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="5b68a5ab-1ef0-4d0d-9084-82e94508156c"
DNS1="127.0.0.1"        # 因为CentOS7.3自己为DNS服务器,所以设自己为DNS服务器
IPADDR="172.16.252.77"
PREFIX=16
GATEWAY="172.16.0.1"
DEVICE="ens33"
ONBOOT="yes"
[root@hengxia network-scripts]# systemctl restart network
[root@hengxia ~]# cat /etc/resolv.conf  # 查看默认DNS
# Generated by NetworkManager
search top
nameserver 127.0.0.1
[root@hengxia ~]# vim /etc/named.conf 
将allow-query { localhost; } 改为 allow-query { localhost; 172.168.252.174; } 允许某个地址查询
或 改为 allow-query { localhost;any; } 或 改为 allow-query { localhost;0.0.0.0/0; }  或注释掉 允许所有地址查询
[root@hengxia ~]# named-checkconf  # 检查配置文件named.conf
[root@hengxia ~]# systemctl reload named    # 也可以使用rndc reload 作用是重新加载配置文件

六、在CentOS7.3搭建自己的域

      在CentOS7.3上DNS搭建自己的域,让当前DNS解析www.hengxia.top域

1、将www.hengxia.top IP 关系存储在DNS上.
修改/etc/named.conf 填加域与域数据库的关系,也可以在/etc/named.rfc1912.zones中添加,
建议在/etc/named.rfc1912.zones中添加

zone "hengxia.top" IN {                 # hengxia.top是域名
    type master;                # 表示权威DNS,即第一个
    file "hengxia.top.zone";        # 域数据库,默认位于/var/named/下面,只需告知文件名 hengxia.top.zone是库文件名
};

2、以/var/named目录下的named.localhost为蓝本,创建hengxia.top.zone文件 ,创建区域数据库
[root@hengxia ~]# cd /var/named
[root@hengxia named]# ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
[root@hengxia named]# cp -p named.localhost hengxia.top.zone         # 注意cp -p 保持原有属性, 用cp 要用 chgrp named hengxia.top.zone
[root@hengxia named]# cat hengxia.top.zone                         # 解析区域数据库格式,存放名字与IP的对应关系
$TTL 1D     # 统一定义TTL(过期时间、缓存时间)                   
@   IN SOA  @ rname.invalid. (                    # SOA记录   IN internet技术 IN第一条要写,后面可以省略,可继承第一条IN           rname.invalid.  资源的类型                 #
                    0   ; serial         
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
    NS  @                                         # 代表当前配置域,例如配置hengxia.top,就代表hengxia.top
    A   127.0.0.1                                         # A记录 名字 到 IP   对应IPv4地址
    AAAA    ::1                                           # A记录 名字 到 IP   对应IPv6地址
[root@hengxia named]# vim hengxia.top.zone
[root@hengxia named]# cat hengxia.top.zone 
$TTL 1D
@   IN SOA  dns1.hengxia.top dnsadmin.hengxia.top. (
                    201707262051    ; serial
                    10M ; refresh
                    3M  ; retry
                    1D  ; expire
                    3D )    ; minimum
    NS  dns1
        NS      dns2
dns1    A   172.16.252.77
dns2    A       172.16.252.174
websrv  A   1.1.1.1
ftpsrv  A       2.2.2.2

[root@hengxia named]# named-checkconf  # 检查/etc/下与named有关文件

[root@hengxia named]# named-checkzone hengxia.top /var/named/hengxia.top.zone      # 检查域数据库文件 
dns_rdata_fromtext: /var/named/hengxia.top.zone:2: near '201707262051': out of range         # 序列号超出范围
zone hengxia.top/IN: loading from master file /var/named/hengxia.top.zone failed: out of range
zone hengxia.top/IN: not loaded due to errors.
[root@hengxia named]# vim hengxia.top.zone 
[root@hengxia named]# named-checkzone hengxia.top /var/named/hengxia.top.zone
zone hengxia.top/IN: loaded serial 2017072601
OK
[root@hengxia named]# rndc reload
  •  

七、在CentOS6.9上测试DNS

 

[root@centos6 ~]# yum -y install bind bind-utils   # 测试工具 dig host nslookup 来自 bind-utils包
[root@centos6 ~]# dig www.hengxia.top @172.16.252.77

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6 <<>> www.hengxia.top @172.16.252.77
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 53941
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.hengxia.top.       IN  A

;; Query time: 7 msec
;; SERVER: 172.16.252.77#53(172.16.252.77)
;; WHEN: Wed Jul 26 19:13:37 2017
;; MSG SIZE  rcvd: 33


[root@centos6 ~]# dig websrv.hengxia.top @172.16.252.77        # 测试成功,说明CentOS7.3上的域搭建成功

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6 <<>> websrv.hengxia.top @172.16.252.77     
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49446
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2          # aa 说明是权威结果

;; QUESTION SECTION:
;websrv.hengxia.top.        IN  A

;; ANSWER SECTION:
websrv.hengxia.top. 86400   IN  A   1.1.1.1

;; AUTHORITY SECTION:
hengxia.top.        86400   IN  NS  dns1.hengxia.top.
hengxia.top.        86400   IN  NS  dns2.hengxia.top.

;; ADDITIONAL SECTION:
dns1.hengxia.top.   86400   IN  A   172.16.252.77
dns2.hengxia.top.   86400   IN  A   172.16.252.174

;; Query time: 3 msec
;; SERVER: 172.16.252.77#53(172.16.252.77)
;; WHEN: Wed Jul 26 19:17:38 2017
;; MSG SIZE  rcvd: 122
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值