文章目录
前言:
域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程。域名的解析工作由DNS服务器完成。
域名解析也叫域名指向、服务器设置、域名配置以及反向IP登记等等。说得简单点就是将好记的域名解析成IP,服务由DNS服务器完成,是把域名解析到一个IP地址,然后在此IP地址的主机上将一个子目录与域名绑定。
互联网中的地址是数字的IP地址,域名解析的作用主要就是为了便于记忆
一、BIND域名服务基础
1.1 DNS系统的作用
-
正向解析:根据主机名称(域名)查找对应的IP地址
-
反向解析:根据IP地址查找对应的主机域名
-
DNS 系统的分布式数据结构:
以www.sina.com.cn为例分析:
1.2 DNS系统类型
实际上,每一台DNS服务器都只负责管理一个有限范围(一个或几个域)内的主机域名和IP地址的对应关系,这些特定的DNS域或IP地址段称为“zone”(区域)
根据地址解析的方向不同,DNS区域相应地分为正向区域(包含域名到IP地址的解析记录,)和反向区域(包含IP地址到域名的解析记录)
根据所管理的区域数据的来源不同,DNS系统可分为不同类型,常见类型有:
- 缓存域名服务器
也称为告诉缓存服务器
通过向其他域名服务器查询获得域名->IP地址记录
将域名查询结果缓存到本地,提高重复查询时的速度
- 主域名服务器
维护某一个特定DNS区域的地址数据库,对其中的解析记录具有自主控制权,是指定区域中唯一存在的权威服务器,官方服务器。
构建主域名服务器时,需要自行建立所负责区域的地址数据文件
- 从域名服务器
与主域名服务器提供完全相同的DNS解析服务,通常用于DNS服务器的热备份。
构建从域名服务器时,需要指定主域名服务器的位置,以便服务器能自动同步区域的地址数据库
二、使用BIND构建域名服务器
2.1 BIND安装文件
BIND不是唯一能够提供域名服务的DNS服务程序,但它是应用最广泛的,BIND可以允许在大多数Linux/UNIX主机中
- BIND
伯克利internet域名服务
官方站点: https://www.isc/org/
可以直接使用yum安装
-
相关软件包
-
BIND服务器程序
主要执行程序:/usr/sbin/named
默认监听端口:53
主配置文件: /etc/named.conf
保存DNS解析记录的数据文件位于:/var/named/
2.2 主配置文件
- 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
- 全局配置部分
设置DNS服务器的全局参数
包括监听地址/端口,数据文件的默认位置等
使用options{…};的配置段
[root@localhost ~]# vi /etc/named.conf
options {
listen-on port 53 { 127.0.0.1; };
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 { localhost; };
......省略部分内容
- 区域配置文件
设置本服务器提供域名解析的特定DNS区域
包括域名、服务器角色、数据文件名等
使用zone “区域名” IN{…};的配置段
- 区域数据配置文件
全局TTL配置项及SOA记录
$TTL(Time To live,生存时间)记录
SOA (Start Of Authority,授权信息开始)记录
分号 “;” 开始的部分表示注释信息
[root@localhost ~]# vi /var/named/named.localhost
$TTL 2D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
域名解析记录
NS 域名服务器记录
MX 邮件交换记录
A 地址记录,只用在正向解析区域中
CNAME 别名记录
例如:
@ IN NS ns1.bdqn.com
IN MX 10 mail.bdqn.com
ns1 IN A 58.119.74.203
www IN A 173.16.16.1
mail IN A 173.16.16.4
ftp IN CNAME WWW
反向区域数据文件
在反向区域数据文件中,不会用到A地址记录,而是使用PTR指针(print)记录
例如,对于反向区域10.168.192.in-addr.arpa,添加的反向解析记录可以是以下形式
1 IN PTR www.eee.com. "表示IP地址为192.168.192.1的主机域名是www.eee.com"
2 IN PTR mail.eee.com. "表示IP地址为192.168.192.5的主机域名是mail.eee.com"
- 使用netstat命令查看服务状态
[root@localhost ~]# netstat -ntap | grep named
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 44453/named
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 44453/named
tcp6 0 0 ::1:53 :::* LISTEN 44453/named
tcp6 0 0 ::1:953 :::* LISTEN 44453/named
[root@localhost ~]# netstat -nuap | grep named
udp 0 0 127.0.0.1:53 0.0.0.0:* 44453/named
udp6 0 0 ::1:53 :::* 44453/named
2.2 区域数据配置文件的特殊应用
- 基于域名解析的负载均衡
同一域名对应到多个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 "泛域名解析"
2.2.1对配置文件进行语法检查
named-checkconf 工具
named-checkconf -z [主配置文件]
[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
[root@localhost ~]# named-checkconf -z /etc/named.conf
zone localhost.localdomain/IN: loaded serial 0
zone localhost/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
三、使用BIND构建域名服务器(实验)
环境:开启两台虚拟机,将centos7-1与centos7-2模拟为主、从DNS服务器,使用yum 安装“bind”软件包。
centos7-1 IP地址为:192.168.181.130
centos7-2 IP地址为:192.168.181.133
- 修改全局配置文件
修改两台服务器的全局配置文件,修改内容如下:
[root@localhost ~]# vi /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”
- 修改区域配置文件
主服务器(centos7-1):
centos7-1(主服务器):
[root@localhost ~]# vi /etc/named.rfc1912.zones
zone "ceshi.com" IN { “设置主服务器域名”
type master; “类型,主域名服务器”
file "ceshi.com.zone"; “主服务器区域数据文件名”
allow-transfer { 192.168.181.133; }; “设置从域名服务器”
};
...............省略部分内容
从服务器(centos7-2)
centos7-2(从服务器):
[root@localhost ~]# vi /etc/named.rfc1912.zones
zone "ceshi.com" IN { “设置从服务器域名”
type slave; “类型,从域名服务器”
file "slaves/ceshi.com.zone"; “从服务器区域数据文件名”
masters { 192.168.181.130; }; “设置主域名服务器”
};
...........省略部分内容
- 修改区域数据配置文件
进入区域数据配置文件目录,复制named.localhost模板,复制文件名为ceshi.com.zone。
[root@localhost named]# cp -p named.localhost ceshi.com.zone
[root@localhost named]# ls
ceshi.com.zone dynamic named.empty named.loopback
data named.ca named.localhost slaves
复制成功后我们可以在当前目录中看到“slaves” 这就是从服务器的区域数据配置文件。
只修改主服务器,从服务器会自动同步主服务器,现在编辑主服务器数据配置文件
[root@localhost opt]# vi /var/named/named.localhost
$TTL 1D
@ IN SOA ceshi.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ceshi.com.
A 192.168.181.130 (本地DNS服务器地址)
IN MX 10 mail.ceshi.com. (邮箱地址)
www IN A 192.168.181.99 (解析www.ceshi.com时的IP地址)
ftp IN A 192.168.181.88 (解析ftp.ceshi.com时的IP地址)
smtp IN CNAME www (解析smtp.ceshi.com时导向www.ceshi.com的IP地址)
* IN A 8.8.8.8 (泛域名解析时的地址)
其中 :
D :代表天
H :代表时
W:代表周
M:代表分
- 关闭主、从服务器的防火墙和增强性安全功能
[root@localhost named]# systemctl stop firewalld.service
[root@localhost named]# setenforece 0
- 开启一台win10虚拟机用于测试
第一步:关闭win10防护墙
第二步:更改win10网卡DNS服务器的地址:
第三步:cmd进入命令提示符界面,使用nslookup验证:
总结:
在配置DNS服务器的时候,要注意区域配置文件与区域数据配置文件中的标点符号, 少或者多一个都有可能导致bind服务无法开启。
我们的实验暂时都是在步设计防火墙的过程中进行,所以需要关闭防火墙与增强性安全功能,后期将介绍如何配置防火墙,允许指定主机向内访问DNS服务器主机的流程。