Linux网络服务--DNS域名解析服务(正向解析、反向解析、邮件交换解析、别名解析、泛域名解析。以及主从域名服务器配置)

一、BIND域名服务基础

1.1 DNS系统的作用及类型

1.1.1 DNS系统的作用

DNS系统在网络中的作用就是维护着一个地址数据库,其中记录了各种主机域名与IP地址的对应关系,以便为客户程序提供正向或者反向的地址查询服务,及正向解析和反向解析

  • 正向解析:根据主机名称(域名,如www.baidu.com)查找对应的IP地址
  • 反向解析:(一般维护的时候使用)根据IP地址查找对应的主机域名
  • DNS系统的分布式数据结构
    在这里插入图片描述
    分析www.sina.com.cn
部分 解释
www 主机位
sina 二级域名
com.cn 顶级域名
. 根域名

1.1.2 DNS系统的类型

实际上,每一台DNS服务器都只负责管理一个有限范围(一个或几个域)内的主机域名和IP地址的对应关系,这些特定的DNS域或IP地址段称为“zone”(区域)。根据地址解析的方向不同,DNS区域相应地分为正向区域(包含域名到IP地址的解析记录,)和反向区域(包含IP地址到域名的解析记录)

1、缓存域名服务器

  • 也成为DNS高速缓存服务器

  • 通过向其他域名服务器查询获得域名→IP地址记录

  • 将域名查询结果存到本地,提高重复查询时的速度

在这里插入图片描述
客户机访问某个网站的DNS解析过程
1、客户机利用电信分配的DNS会找到离客户机最近的位置会有一个DNS缓存服务器
可以查找到DNS缓存里面的域名与ip对应的记录

2、如果没有对应的记录,DNS缓存服务器会直接去找根域服务器

3、根域服务器会告诉DNS缓存服务器顶级域名服务器在什么地方

4、DNS缓存服务器就会去找顶级域名服务器

5、顶级域名服务器会告诉DNS缓存服务器(如果告诉了二级域在哪里

6、DNS缓存服务器回去找二级域服务器 {主机A记录域名→IP}

7、二级域服务器会告诉DNS缓存服务器

8、DNS缓存服务器会记录下来
告诉客户机对应的IP

9、然后客户机就可以去访问对应的网站
网站会将网页推给客户机,下载到客户机的缓存里面

2、主域名服务器

  • 特定DNS区域的权威服务器,具有唯一性

  • 负责维护该区域内所有域名===>IP地址的映射记录

  • 需要自行建立所负责区域的地址数据文件

3、从域名服务器

  • 也成为辅助域名服务器,是对主域名服务器的热备份

  • 其维护的域名===>IP地址记录来源于主域名服务器

  • 需要从主域名服务器自动同步区域地址数据库

1.2 BIND安装和配置文件

1.2.1 BIND软件安装

BIND(Berkeley Internet Name Daemon)

  • BIND是应用最广泛的DNS服务程序

  • 官方站点:https://www.isc.org/

  • 可以直接使用yum安装

  • host===>本地自测的命令

相关软件包

软件包 作用
bind 提供了域名服务的主要程序及相关文件
bind-utils 提供了对DNS服务器的测试工具,如nslookup等
bind-libs 提供了bind,bind-utils需要使用的库函数
bind-chroot 为BIND服务提供一个伪装的根目录(/var/named/chroot)以提高安全性

1.2.2 BIND服务

BIND服务器端程序

  • 主要执行程序

  • 默认监听端口:53

  • 主配置文件

    • /etc/named.conf-保
  • 存DNS解析记录的数据文件位于

    • /var/named(随时可更改)

BIND服务控制

  • systemctl [status|stop|restart] named.service

1.2.3 BIND的配置文件

[root@localhost ~]# rpm -qc bind	'查看配置文件位置'
/etc/logrotate.d/named
/etc/named.conf
/etc/named.iscdlv.key
/etc/named.rfc1912.zones
/etc/named.root.key
/etc/rndc.conf
/etc/rndc.key
/etc/sysconfig/named
/var/named/named.ca
/var/named/named.empty
/var/named/named.localhost
/var/named/named.loopback

配置文件:
1、主配置文件 负责dns全局功能 例如:日志文件位置,访问权限等
2、区域配置文件 负责构建解析区域 例如:多域名解析
3、区域数据配置文件 负责管路主机解析记录 例如:解析映射

主配置文件named.conf

全局配置部分

  • 设置DNS服务器的全局参数

  • 包括监听地址/端口,数据文件的默认位置等

  • 使用options{…};的配置段

[root@localhost ~]# vim /etc/named.conf
options {      '配置段'
    listen-on port 53 { any; };		'ipv4 监听地址和端口 {一般更改为any}'
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";		'区域数据文件的默认存放位置'
       ...省略内容
        allow-query     { any; };		'允许使用本DNS服务的网段:{一般更改为any}'
}

区域配置部分

  • 设置本服务器提供域名解析的特定DNS区域

  • 包括域名,服务器角色,数据文件名等

  • 使用zone“区域名”IN{…};的配置段

[root@localhost ~]# vim /etc/named.rfc1912.zones 
正向解析
zone "wemz.com" IN {
        type master;		'区域类型,主域名服务器'
        file "wemz.com.zone";		'区域数据文件名'
        allow-update { none; };
};

反向解析
zone "66.168.192.in-addr.arpa" IN {
        type master;   '反向192.168.66.66/24区域。“IN”关键字可省略'
        file "192.168.10.arpa";
        allow-update { none; };
};

区域数据配置文件

全局TTL配置项及SOA记录

  • $TTL(Time To Live,生存时间)记录

  • SOA(Start Of Authority,授权信息开始)记录

  • 分号“;”开始的部分表示注释信息

$TTL 1D		'有效解析记录的生存周期'
@       IN SOA  @ rname.invalid. (		'SOA标记,域名,管理邮箱'
                                        2011030502  	'更新序列号,可以是10位以内的整数'   	
                                        1D     '无效解析记录的生存周期'  
                                        1W    	'失效时间,超过改时间仍无法下载则放弃'
                                        3H )    '刷新时间,重新下载地址数据的间隔'
     
M  分
H  时
W  周
D  天

正向解析记录

  • NS域名服务器(Name Server )记录

  • MX 邮件交换(Mail Exchange)记录

  • A 地址 (Address)记录,只用在正向解析区域中

  • CNAME别名(Canonical Name)记录

@		IN		NS		ns1.bdqn.com.	'当前区域DNS服务器的'
		IN		MX 10	mail.bdqn.com.
ns1		IN		A		65.65.656.56
www		IN		A		2.2.2.2
mail	IN 		A		5.5.5.5
ftp		IN		CNAME	www
*		IN 		A		3.3.3.3		'泛域名解析,未匹配到的主机头到到此地址'

反向区域数据文件

  • 在反向区域数据文件中,不会用到A地址记录,而是使用PTR指针(point)记录。

例如,对于反向区域10.168.192.in-addr.arpa,添加的反向解析记录可以是以下形式

1 IN PTR www.eee.com.		'表示IP地址为192.168.192.1的主机的域名时www.eee.com'
5 IN PTR mail.eee.com.		'表示IP地址为192.168.192.5的主机的域名时mail.eee.com

**使用netstat命令查看服务状态**

```css
[root@localhost ~]# netstat -nuap | grep named		'以数字形式显示当前系统中所有的UDP连接信息,同时显示对应的进程信息。'
udp        0      0 192.168.122.1:53        0.0.0.0:*                           65212/named         
udp        0      0 192.168.197.142:53      0.0.0.0:*                           65212/named         
udp        0      0 127.0.0.1:53            0.0.0.0:*                           65212/named         
udp6       0      0 ::1:53                  :::*                                65212/named         
[root@localhost ~]# netstat -ntap | grep named		'以数字形式显示当前系统中所有的TCP连接信息,同时显示对应的进程信息。'
tcp        0      0 192.168.197.142:53      0.0.0.0:*               LISTEN      65212/named         
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      65212/named         
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      65212/named         
tcp6       0      0 ::1:53                  :::*                    LISTEN      65212/named         
tcp6       0      0 ::1:953                 :::*                    LISTEN      65212/named 
    TCP: 用于连接
    UDP: 用于快速解析

区域数据配置文件的特殊应用

  • 基于域名解析的负载均衡

  • 同一域名对应到多个IP地址

泛域名解析

  • 找不到精确对应的A记录时,使用“*”进行匹配
www 		IN		A		192.168.100.100		'轮询负载均衡'
www 		IN		A		192.168.100.101
www 		IN		A		192.168.100.102
*			IN		A		192.168.100.100	'泛域名解析'

对配置文件进行语法检查

  • 修改完区域数据文件以后,可以执行named-checkconf命令对该文件进行语法检查

  • 若zone文件中没有语法错误,系统将给出“OK”的提示信息

named-checkconf工具基本格式
named-checkconf -z [主配置文件]
[root@localhost ~]# named-checkconf -z /etc/named.conf
zone localhost.localdomain/IN: loaded serial 0
zone localhost/IN: loaded serial 0
zone kgc.com/IN: loaded serial 0
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: loaded serial 0
zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
zone 0.in-addr.arpa/IN: loaded serial 0
named-checkzone工具基本格式
named-checkzone <域名><区域数据文件>
[root@localhost ~]# named-checkzone kgc.com /var/named/kgc.com.zone 
zone kgc.com/IN: kgc.com/MX 'mail.kog.com' (out of zone) is a CNAME 'mail.kog.com.netsolmail.net' (illegal)
zone kgc.com/IN: loaded serial 0
OK

二、使用BIND构建域名服务器

2.1 构建缓存域名服务器、

实验·DNS正向解析、邮件交换解析、别名解析、泛域名解析、反向解析

1、安装bind安装包

[root@localhost ~]# rpm -q bind
未安装软件包 bind 
[root@localhost ~]# yum install bind -y

2、修改主配置文件

root@localhost ~]# vim /etc/named.conf
 12 options {
 13         listen-on port 53 { any; };        '改为any,监听所有端口'
 14         listen-on-v6 port 53 { ::1; };
 15         directory       "/var/named";
 16         dump-file       "/var/named/data/cache_dump.db";
 17         statistics-file "/var/named/data/named_stats.txt";
 18         memstatistics-file "/var/named/data/named_mem_stats.txt";
 19         recursing-file  "/var/named/data/named.recursing";
 20         secroots-file   "/var/named/data/named.secroots";
 21         allow-query     { any; };           '改为any,允许所有人访问'

3、修改区域配置文件

[root@localhost ~]# vim /etc/named.rfc1912.zones   
‘5yy复制19-23行,粘贴到24行’
 19 zone "localhost" IN {
 20         type master;
 21         file "named.localhost";
 22         allow-update { none; };
 23 };
 24 zone "yang.com" IN {    '解析区域域名yang.com'
 25         type master;
 26         file "yang.com.zone";  '关联到区域数据配置文件'
 27         allow-update { none; };
 28 };

4、修改区域数据配置文件(添加邮件交换记录、别名解析、泛域名解析)

[root@localhost ~]# cd /var/named
[root@localhost named]# ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
[root@localhost named]# cp -p named.localhost yang.com.zone
[root@localhost named]# vim yang.com.zone
$TTL 1D
@       IN SOA  yang.com. rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      yang.com.
        A       127.0.0.1
     IN MX 5    mail.yang.com    '邮件交换记录'
mail IN A       192.168.88.88   'mail.yang.com→192.168.88.88'
www  IN A       192.168.66.66    '正向解析域名'
smtp IN CNAME   mail   '别名解析,stmp是mail别名'
*    IN A       6.6.6.6   '泛域名解析,只解析6.6.6.6,网页上则无法方法'

5、清空防火墙规则和关闭核心防护,开启named功能

[root@localhost named]# setenforce 0  '关闭linux系统核心防护'
[root@localhost named]# iptables -F   '清空防火墙规则'
[root@localhost named]# systemctl start named   '开启named功能'

6、配置DNS服务器

[root@localhost named]# echo "nameserver 20.0.0.51" > /etc/resolv.conf

7、验证能否解析(正向解析、邮件交换记录、别名解析、泛域名解析成功)

[root@localhost named]# host www.yang.com
www.yang.com has address 192.168.66.66
[root@localhost named]# host mail.yang.com
mail.yang.com has address 192.168.88.88
[root@localhost named]# host smtp.yang.com
smtp.yang.com is an alias for mail.yang.com.
mail.yang.com has address 192.168.88.88
[root@localhost named]# host abc.yang.com
abc.yang.com has address 6.6.6.6

8、配置反向解析(192.168.99.99)

  • 8-1 修改区域配置文件
[root@localhost named]# vim /etc/named.rfc1912.zones
      '把上面一段复制粘贴到下面'
zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};
zone "99.168.192.in-addr.arpa" IN {    '地址倒过来写,只倒着写三段192.168.99.,最后一个99写在区域数据配置文件中'
        type master;
        file "yang.com.fan";      'yang.com.fan代表反向解析的数据配置文件'
        allow-update { none; };
};
  • 8-2 修改区域数据配置文件
[root@localhost named]# pwd
/var/named
[root@localhost named]# ls
data     named.ca     named.localhost  slaves
dynamic  named.empty  named.loopback   yang.com.zone
[root@localhost named]# cp -p yang.com.zone yang.com.fan
$TTL 1D
@       IN SOA  yang.com. admin.yang.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      yang.com.
        A       127.0.0.1
99   IN PTR     www.yang.com

  • 8-3 重启named服务
[root@localhost named]# systemctl restart named
  • 8-4 解析IP地址
[root@localhost named]# host 192.168.99.99
99.99.168.192.in-addr.arpa domain name pointer www.yang.com.99.168.192.in-addr.arpa.

9、再开一台centos 7 作为网站服务器,安装apache,为另一台win 7 客户端提供服务

  • 9-1 进入网卡编辑,并重启网卡
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=13eb7ccf-6168-4877-bfad-b13e88fa8440
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.66.66
NATMASK=255.255.255.0
GATEWAY=192.168.66.1
DNS1=20.0.0.51

[root@localhost ~]# service network restart
Restarting network (via systemctl):                        [  确定  ]
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.66.66  netmask 255.255.255.0  broadcast 192.168.66.255
        inet6 fe80::37ae:2257:d351:2bed  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:d5:1f:7d  txqueuelen 1000  (Ethernet)
        RX packets 67  bytes 7533 (7.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 35  bytes 4486 (4.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • 9-2 安装apache服务
[root@localhost ~]# yum install httpd -y

  • 9-3 清空防火墙规则、关闭linux系统核心防护、开启apache服务
[root@localhost ~]# iptables -F
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl start httpd
  • 9-2 编辑一个网页
[root@localhost ~]# cd /var/www/html
[root@localhost html]# ls
[root@localhost html]# vim index.html
<h1>happy every day</h1>

10、在win 7 网页中搜索www.yang.com
在这里插入图片描述
在这里插入图片描述

2.2 构建主从域名服务器

两台centos 7虚拟机,第一台正向解析(用上一个实验的),第二台配置如下
1、修改主服务器,第一台centos 7

[root@localhost named]# vim /etc/named.rfc1912.zones   '修改区域配置文件'
zone "yang.com" IN {
        type master;
        file "yang.com.zone";
        allow-transfer { 20.0.0.61; };
};
[root@localhost named]# systemctl restart named   '重启named服务'

2、修改从服务器

  • 2-1清空防火墙规则、关闭linux系统核心防护
[root@localhost ~]# iptables -F
[root@localhost ~]# setenforce 0
  • 2-2 安装bind服务
[root@localhost ~]# yum install bind -y
  • 2-3 修改主配置文件
[root@localhost ~]# cd /var/named/
[root@localhost named]# ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
[root@localhost named]# ls slaves

[root@localhost named]# vim /etc/named.conf
options {
        listen-on port 53 { any; };   '改为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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { any; };  '改为any,允许所有人访问'
  • 2-4 修改区域配置文件
[root@localhost named]# vim /etc/named.rfc1912.zones  
复制上面一行粘贴到下面并修改
 19 zone "localhost" IN {
 20         type master;
 21         file "named.localhost";
 22         allow-update { none; };
 23 };
 24 zone "yang.com" IN {    '修改域名为yang.com'
 25         type slave;   '类型为从服务器'
 26         file "slaves/yang.com.zone";   '关联到slaves/yang.com.zone从服务器区域数据配置文件'
 27         masters { 20.0.0.51; };  '主服务器为20.0.0.51'
 28 };
  • 2-5 启动named服务
[root@localhost named]# systemctl start named
[root@localhost named]# ls slaves   '查看'
yang.com.zone
  • 2-6 指定DNS服务器,并解析
[root@localhost named]# echo "nameserver 20.0.0.51" > /etc/resolv.conf
[root@localhost named]# host www.yang.com
www.yang.com has address 192.168.66.66
[root@localhost named]# host mail.yang.com
mail.yang.com has address 192.168.88.88
[root@localhost named]# host abc.yang.com
abc.yang.com has address 6.6.6.6

总结

1、DNS正向解析(邮件交换解析、别名解析、泛域名解析)区域配置文件中A记录条目

        NS      yang.com.
        A       127.0.0.1
     IN MX 5    mail.yang.com    '邮件交换记录'
mail IN A       192.168.88.88   'mail.yang.com→192.168.88.88'
www  IN A       192.168.66.66    '正向解析域名'
smtp IN CNAME   mail   '别名解析,stmp是mail别名'
*    IN A       6.6.6.6   '泛域名解析,只解析6.6.6.6,网页上则无法方法'

2、DNS主从配置区域配置文件中关键代码块

[root@localhost named]# vim /etc/named.rfc1912.zones   '修改区域配置文件'
zone "yang.com" IN {
        type master;
        file "yang.com.zone";
        allow-transfer { 20.0.0.61; };
};
 24 zone "yang.com" IN {    '修改域名为yang.com'
 25         type slave;   '类型为从服务器'
 26         file "slaves/yang.com.zone";   '关联到slaves/yang.com.zone从服务器区域数据配置文件'
 27         masters { 20.0.0.51; };  '主服务器为20.0.0.51'
 28 };

猜你喜欢

转载自blog.csdn.net/ycycyyc_/article/details/107303592