前言
- 我们在前面已经学习了网络地址配置和文件服务管理,在对服务器主机进行访问的时候是使用IP地址的形式,而在实际的网络应用中,通常是使用域名的形式访问服务器的
- 接下来我们将以著名的DNS服务器软件BIND(Berkeley Internet Name Domain,伯克利因特网域名)为例,来学习域名服务器的搭建过程
一、BIND域名服务基础
1.DNS系统的作用及类型
- 在整个Internet大家庭中连接了数以亿计的服务器、个人主机,其中大部分的网站、邮件等服务器都使用了域名形式的地址,如www.baidu.com、mail.qq.com等
- 很显然,这种地址形式比使用192.168.126.1这种IP地址的地址形式更为直观,而且更容易被用户记忆
- 域名与IP地址之间是多对一的关系,同一个IP地址不一定只对应一个域名,且一个域名只可以对应一个IP地址
- 他们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,整个过程是自动进行的
1.1 DNS系统的作用
- DNS是“域名系统”的英文缩写
- DNS服务使用TCP和UDP的53端口,TCP的53端口用于连接DNS服务器,UDP的53端口用于解析DNS
- 每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符
- DNS系统在网络中的作用就是维护着一个地址数据库,其中记录了各种主机域名与IP地址的对应关系,以便为客服程序提供正向或者反向的地址查询服务
- 正向解析:根据域名查找对应的IP地址,是DNS服务器最基本、最常用的功能
- 反向解析:根据IP地址查找对应的域名,不是很常用,只在一些特定的场合才会用到,比如反垃圾邮件的验证
1.2 DNS系统的分布式数据结构
- 全世界IPv4根服务器只有13台,1个为主根服务器在美国,其余12个均为辅根服务器,9个在美国,欧洲2个(英国和瑞典),亚洲1个位于日本;中国主导于2016年在全球16个国家完成25台IPv6根服务器的假设
- 树状结构最项层称为根域,用“."表示,相应服务器称为根服务器,整个域名空间解析权都归根服务器所有
- 但根服务器无法承担庞大的负载,采用“委派”机制,在根域下设置了一些顶级域,然后将不同顶级域解析权分别委派给相应的顶级域服务器
- 如将com域的解析权委派给com域服务器,以后但凡根服务器收到以com结尾的城名解析请求,都会转发给com域服务器
- 同样道理,为了减轻顶级域的压力,又下设了若干二级域,二级域又下设三级域或主机
- 根域:位于城名空间最顶层,一般用一个“.”表示
- 顶级域:一般代表一种类型的组织机构或国家地区,如 .net (网络供应商)、. com(工商企业)、.org (团体组织)、. edu(教育机构)、.gov (政府部门)、. cn (中国国家域名)
- 二级域:用来标明顶级域内的一个特定的组织,国家顶级城下面的二级域名由国家网络部门统一管理,如 .cn顶级域名下而设置的二级域名: . com.cn、 .net.cn、 .edu.cn
- 子域:二级域下所创建的各级域统称为子域,各个组织或用户都可以自由申请注册自己的域名
- 主机:主机位于域名空间最下层,就是一台具体的计算机
- 示例:www.baidu.com.cn
www | 主机 |
---|---|
.baidu | 子域 |
.com | 二级域 |
.cn | 顶级域 |
. | 根域 |
1.3 DNS服务器类型
- 每一台DNS服务器都只负责管理一个有限范围(一个或几个域)内的主机域名和IP地址的对应关系,这些特定的DNS域或IP地址称之为“zone”(区域)
- 根据地址解析的方向不同,DNS区域相应的分为正向区域(包含域名到IP地址的解析记录)和反向区域(包含IP地址到域名的解析记录)
- 根据所管理的区域地址数据的来源不同,DNS系统也可以分为不同的类型,在同一台DNS服务器中,对于不同的区域来说,也拥有不同的身份,常见的几种类型如下:
1.3.1 主域名服务器
- 负责维护一个区域的所有域名信息,是特定的所有信息的权威信息源,数据可以修改
- 构建主域名服务器时,需要自行建立所负责区域的地址数据文件
1.3.2 从域名服务器
- 当主域名服务器出现故障、关闭或负载过重时,从域名服务器作为备份服务提供域名解析服务
- 从域名服务器提供的解析结果不是由自己决定的,而是来自于主域名服务器
- 构建从域名服务器时,需要指定主域名服务器的位置,以便服务器能自动同步区域的地址数据库
1.3.3 缓存域名服务器
- 只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但没有域名数据库
- 它从某个远程服务器取得每次域名服务器查询的结果,并将它放在高速缓存中,以后查询相同的信息时用它予以响应
- 缓存域名服务器不是权威性服务器,因为提供的所有信息都是间接信息
- 构建缓存域名服务器时,必须设置根域或指定其他DNS服务器作为解析来源
1.3.4 转发域名服务器
- 负责所有非本地域名的本地查询
- 转发域名服务器接到查询请求后,在其缓存中查找,如找不到就将请求依次转发到指定的域名服务器,直到查找到结果为止,否则返回无法映射的结果
2.BIND的安装和配置文件
- BIND不是唯一能够提供域名服务的DNS服务程序,但它却是应用最为广泛的,BIND可以运行在大多数Linux/UNIX主机中,其中官网站点为 https://www.isc.org/
2.1安装bind软件包
[root@localhost ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]# yum -y install bind
...略
[root@localhost ~]# rpm -qa | grep "^bind" ##查询是否已安装与BIND相关的软件包
bind-9.9.4-50.el7.x86_64
bind-libs-9.9.4-50.el7.x86_64
bind-libs-lite-9.9.4-50.el7.x86_64
bind-license-9.9.4-50.el7.noarch
bind-utils-9.9.4-50.el7.x86_64
2.2 查看需要修改的配置文件所在路径
[root@localhost ~]# rpm -qc bind #查询bind软件配置文件所在路径
[root@localhost ~]# vim /etc/named.conf #主配置文件
[root@localhost ~]# /etc/named.rfc1912.zones #区域配置文件
[root@localhost ~]# /var/named/named.localhost #区域数据配置文件
三、构建DNS域名解析服务器步骤(正向解析)
- 记得安装bind软件包,前文有
- 你的网卡配置是不是静态?相关配置搞全了吗
1.记得关闭防火墙
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# setenforce 0
##是Linux独有的一种安全机制,但在实际使用中没什么用,反而影响性能,该指令只是临时关闭,我们想永久关闭可以改一个配置文件
[root@localhost ~]# vim /etc/sysconfig/selinux
...略
SELINUX=disabled ##修改为"disabled"
...略
2.修改主配置文件
- vim /etc/named.conf
- 上图是配置文件内每行的注释以及要修改的都标注出来了
3.修改区域配置文件,添加正向区域配置
- vim /etc/named.rfc1912.zones
4.配置正向区域数据文件
- vim /var/named/accp.com.zone
- "@"是变量,为当前DNS域名
- “accp.com.”此为完全合格域名(FQDN),后面有个“.”,切记不要漏
- “admin.accp.com”表示管理员邮箱,这里的“@”是变量,用“.”代替
5.启动服务
- 如果服务启动失败,可以查看日志文件来排查错误
tail -f /var/log/messages - 若服务器启动卡住了,可以执行以下命令解决
rndc-confgen -r /dev/urandom -a
6.在客户端的域名解析配置文件中添加DNS服务器地址
- 修改完后能立即生效
- 或
vim /etc/sysconfig/network-scripts/ifcfg-ens3
DNS1=192.168.126.5
##wq保存退出后“systemctl restart network”重启网卡生效
7.测试DNS解析
[root@localhost ~]# host www.accp.com ##解析成功
www.accp.com has address 192.168.126.5
- 或
nslookup www.accp.com
##
nslookup mail.accp.com
##
nslookup ftp.accp.com.
## www的别名,结尾记得加上根域
nslookup abc.accp.com
## 泛域名解析
8.虚拟w10解析测试
- 查看一下虚拟机Win10和刚才的CentOS7的网络适配器设置,都得是NAT才行!
- 然后再虚拟Win10里面更改适配器选项
- 点击禁用然后再启动,实现重启
- CMD
四、反向解析
- 注意了!这里我是恢复快照再重新做反向解析的,如果你是直接自己不思考直接进行下面的操作,是可能会有一点出入的
- 但你只要把前面的正向解析弄明白了,这些都不是问题!
1.开始之前
- 作为一名运维人员,要认真仔细,检查每一个细节,这很重要,形成一个思考的习惯
- 安装了bind软件包没?
- 关了防火墙没?
- 修改主配置文件
vim /etc/named.conf
##之前进行正向解析的时候这里就配置好了
2.修改区域配置文件,添加反向区域配置
- vim /etc/named.rfc1912.zones
- 复制模板的时候,别忘了反向解析IP地址后面跟的细节
- 注意:一定要细致认真,漏了或者多,反正你错一个符号就会出错,对了,还记得空格隔行等细节
3.配置反向区域数据文件
- 这是之前配置正向的内容 ,参考参考
cd /var/named/
cp -p named.localhost accp.com.zone
vim accp.com.zone
- 开始配置反向
cp -p accp.com.zone accp.com.zone.local
vim accp.com.zone.local
##保留源文件的权限和属主的属性复制
4.启动服务
- systemctl restart named
注:若这里出错,肯定前面出了什么小问题,可以看我正向解析的内容,有详解,查看日志等排错 - systemctl start named
##启动服务
5.检查确认客户端的域名解析配置文件
- 这里也有坑,可能会出现你重启网卡或者服务后,这里恢复成默认的“.2”了
- [root@localhost named]# vim /etc/resolv.conf
6.测试DNS反向解析
[root@localhost ~]# host 192.168.126.7
7.126.168.192.in-addr.arpa domain name pointer www.accp.com.
[root@localhost ~]# nslookup 192.168.126.7
Server: 192.168.126.7
Address: 192.168.126.7#53
7.126.168.192.in-addr.arpa name = www.accp.com.
- OK,有了
五、构建主、从域名服务器
1.修改主域名服务器的区域配置文件,修改正、反向区域配置
- vim /etc/named.rfc1912.zones
- 配置的过程中一定要认真仔细,记得这里添加指向的从服务器IP地址
- 修改完主域名后一定记得“systemctl restart named”重启一下!!
- 若是报错,老规矩,查一下日志
tail /var/log/messages - 然后开启另外一台新的虚拟机作为从域名服务器开始进行配置
2.修改从域名服务器的主配置文件
- 这是一台新的虚拟机,需要我们从新配置,前面操作多了熟了的话,还是很简单的
- 不嫌我再啰嗦两句,新虚拟机防火墙都关了吗兄弟们
systemctl stop firewalld
systemctl disable firewalld
setenforce 0 - 看看有没有挂载镜像,然后
yum -y install bind - vim /etc/named.conf
3.修改从域名服务器区域配置文件,添加正、反区域配置
- vim /etc/named.rfc1912.zone
4.启动服务,并查看区域数据文件是否已下载成功
5.在客户端的域名解析配置文件中添加从DNS服务器地址
- 这里我们可以回到主服务器
- vim /etc/resolv.conf
6.测试
- 对于客户端来说,从域名服务器和主域名服务器没有什么区别,通过主服务器能查到的信息,从服务器也能查到
- OK,正向解析没问题
7.模拟故障,停止主服务器服务,测试主从
六、配置网关服务器搭建DNS分离解析
- 分离解析的域名服务器实际上也还是主域名服务器,这里所说的分离解析,主要指的是根据不同的客户端提供不同的域名解析记录
- 来自不同地址的客户机请求解析同一域名的时候,为其提供不同的解析结果
- 现我们在网关服务器搭建DNS分离解析,使局域网主机解析www.lic.com 为192.168.126.100,外网主机解析 www.lic.com 为12.0.0.100
- 注:这里我又快照重新做了一遍,改了名字,是xcf而不是之前的accp,local也改成xuchengfei了
1.为网关服务配置双网卡
- 这里我们接着刚才的配置继续做,用刚才的主域名服务器(虚拟机)
- 首先关机,然后进入虚拟机设置,添加一块新网卡
- 开机后查看一下
- 有了,OK
- 然后ifconfig查看确认一下网口状态
- 对新网卡进行配置
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens36 ##直接复制ens33的内容到新网卡,再进去编辑,更高效一点
- 编辑新网卡
vim ifcfg-ens36
- 重启网卡
systemctl restart network - ifconfig 查询确认一下
3.修改主配置文件
- 之前重启了,这里重新挂载下镜像(安装dns软件包)
mount/dev/cdrom /mnt
(yum -y install bind) - vim /etc/named.conf
- 跟之前配置一样,是“any”,允许所有主机解析,没问题
4.修改区域配置文件
- 这里先把之前的配置都删掉,然后重新进行配置,注意,只有下图中的这三块
- 还需要去主配置文件中剪切下图中的这一部分过来:一旦启用view,所有zone都必须在view下,所以要把系统默认自检用的zone也放在view下或者删除
5.修改区域数据配置文件
- 先编辑内网的区域数据配置文件
- 再来编辑外网
[root@localhost named]# cp -p xcf.com.zone.lan ##直接复制内网,去修改外网 xcf.com.zone.wan
[root@localhost named]# vim xcf.com.zone.wan
6.查看修改域名解析配置文件
7.测试
- 再来最后啰嗦两句,检查没有没有关闭系统防火墙
systemctl stop firewalld
systemctl disable firewalld
setenforce 0 - 重启一下DNS域名解析服务并测试
8.进入虚拟win10测试
- 右击打开internet设置
- 更改适配器选项
- CMD