DNS 系统的作用及类型
整个 Internet 大家庭中连接了数以亿计的服务器、个人主机,其中大部分的网站、邮件等服务器都使用了域名形式的地址,如 www.google.com、mail.163.com 等。很显然这种地址形式要比使用 64.233.189.147、202.108.33.74 的 IP 地址形式更加直观,且更容易被用户记住
DNS 系统在网络中的作用就是维护一个地址数据库,其中记录了各种主机域名与 IP 地址的对应关系
DNS的域名解析
- 正向解析:根据域名查找对应IP地址
- 反向解析:根据IP地址查找对应的域名DNS系统类型
DNS系统类型
- 缓存域名服务器
- 也成为DNS高速缓存服务器
- 通过向其他域名服务器查询获取域名->IP地址记录
- 将与ping查询结果缓存到本地,提高重复查询时的速度
- 主域名服务器
- 特定DNS区域的权威服务器,具有唯一性
- 负责维护该区域内所有域名->IP地址的映射记录
- 需要自行建立所负责区域的地址数据文件
- 从域名服务器
- 也称为辅助域名服务器,是对主域名服务器的热备份
- 域名->IP地址记录来源于主域名服务器
- 需要从主域名服务器自动同步区域地址数据库
主从DNS服务实验
基础设备
系统 | 主机名 | IP | |
CentOS 7 | ns1.sdgy.com | 192.168.78.129 | 主域名解析 |
CentOS 7 | ns2.sdgy.com | 192.168.78.130 | 从域名解析 |
CentOS 7 | client | 192.168.78.131 | 客户机 |
基础环境
关闭防火墙
systemctl stop firewalld //关闭防火墙
systemctl disable firewalld //禁止开机自启动
关闭selinux
vi /etc/selinux/config //selinux的配置文件
#内容如下
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled //将SELINUX改为disabled
配置静态IP
主域名服务器
vi /etc/sysconfig/network-scripts/ifcfg-ens33 //ens33网卡的配置文件
#内容如下
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static" //将获取IP方式改为静态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="2ce64331-c359-4e02-8297-4b279599dd47"
DEVICE="ens33"
ONBOOT="yes"
#添加网络信息
IPADDR="192.168.78.129" //IP地址
NETMASK="255.255.255.0" //子网掩码
GATEWAY="192.168.78.2" //网关
#重启服务
systemctl restart network
从域名服务器
vi /etc/sysconfig/network-scripts/ifcfg-ens33 //ens33网卡的配置文件
#内容如下
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static" //将获取IP方式改为静态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="2ce64331-c359-4e02-8297-4b279599dd47"
DEVICE="ens33"
ONBOOT="yes"
#添加网络信息
IPADDR="192.168.78.130" //IP地址
NETMASK="255.255.255.0" //子网掩码
GATEWAY="192.168.78.2" //网关
#重启服务
systemctl restart network
修改主机名称
#主域名服务器
hostnamectl set-hostname ns1.sdgy.com //修改主机名称为ns1.sdgy.com
#从域名服务器
hostnamectl set-hostname ns2.sdgy.com //修改主机名称为ns2.sdgy.com
#客户机
hostnamectl set-hostname client //修改主机名称为client
安装dns服务
安装以下几个软件包
软件包 | 作用 |
bind-9.9.4-37.el7.x86_64.rpm | 提供了域名服务的主要程序及相关文件 |
bind-utils-9.9.4-37.el7.x86_64.rpm | 提供了对 DNS 服务器的测试工具程序,如 nslookup 等 |
bind-libs-9.9.4-37.el7.x86_64.rpm | 提供了 bind、bind-utils 需要使用的库函数 |
bind-chroot-9.9.4-37.el7.x86_64.rpm | 为 BIND 服务提供一个伪装的根目录(将/var/named/chroot/文件夹作为 BIND 服务的根目录),以提高安全性 |
yum -y install bind bind-utils bind-libs bind-chroot
BIND 软件包安装完毕以后,会自动增加一个名为 named 的系统服务,通过 systemctl 工具可以控制 DNS 域名服务的运行
主域名解析服务器需要的配置文件
配置文件 | 路径 | |
named.conf | /etc/named.conf | 主配置文件 |
sdgy.com.zone | /var/named/sdgy.com.zone | 正向解析文件(自己建立) |
192.168.78.arpa | /var/named/adgy.com.zone | 反向解析文件(自己建立) |
从域名解析服务器只需要主配置文件一个就够了
主域名解析服务器配置
#编辑主配置文件
vi /etc/named.conf
#内容如下
options {
listen-on port 53 { any; }; //监听地址和端口 监听53号端口 any代表任何人
listen-on-v6 port 53 {::1;};
directory "/var/named"; //区域数据文件的默认存放位置
allow-query { any; }; //允许使用本DNS服务的网段 any表示任何网段都可以使用
};
zone "sdgy.com" IN { //正向查找“sdgy”区域,域名
type master; //类型为主区域
file "sdgy.com.zone"; //区域数据文件名(可以自己定义任何名字)
allow-transfer {192.168.78.130; }; //允许下载的从服务器地址
};
zone "78.168.192.in-addr.arpa" IN { //反向查找查找“192.168.78.0/24”区域,填写允许使用dns网段(客户端)的IP网段,反着写
type master; //类型为主区域
file "192.168.78.arpa"; //区域数据文件名(可以自己定义任何名字)
allow-transfer {192.168.78.130; }; //允许下载的从服务器地址
};
正向查找配置文件
正向查找文件名必须与主配置文件named.conf配置的文件名称对应
NS、MX 记录行首的“@”符号可以省略(默认继承 SOA 记录行首的@信息),但是必须保留一个空格或 Tab 制表符
#在/var/named/创建正向查找配置文件,这个文件时有模板的模板在/var/named/下名称是named.localhost
cd /var/named/ //进入named目录
cp named.localhost sdgy.com.zone //复制模板到sdgy.com.zone
vi sdgy.com.zone //编辑文件
#内容如下
$TTL 1D //有效解析记录的生存周期
@ IN SOA sdgy.com. admin.sdgy.com. ( /SOA标记 域名 管理邮箱
0 ; serial //更新序列号,可以是10 位以内的整数
1D ; refresh //刷新时间,重新下载地址数据的间隔
1H ; retry //重试延时,下载失败后的重试间隔
1W ; expire //失效时间,超过该时间仍无法下载则放弃
3H ) ; minimum //无效解析记录的生存周期
@ NS ns1.sdgy.com. //NS(Name Server,域名服务器):记录当前区域的 DNS 服务器的主机地址 主域名服务器
NS ns1.sdgy.com. //从域名服务器
MX 10 mail.sdgy.com. //MX(Mail Exchange,邮件交换):记录当前区域的邮件服务器的主机地址,数字 10 表示(当有多个 MX 记录时)选择邮件服务器的优先级,数字越大,优先级越低。
ns1 A 192.168.78.129 //A(Address,地址):记录正向解析条目。例如,“ns1 A 192.168.78.129”表示域名 ns1.sdgy.com 对应的 IP 地址是 192.168.78.129。
ns2 A 192.168.78.130
www A 192.168.78.111
mail A 192.168.78.110
* A 192.168.78.112 //*表示泛指 ,即除了定义的域名以外其他所有域名都指向192.168.78.112
反向查找配置文件
反向查找文件名必须与主配置文件named.conf配置的文件名称对应
反向区域数据文件中,不会用到 A 记录,而是使用 PTR 指针(Point)记录
#在/var/named/创建反向查找配置文件,这个文件时有模板的模板在/var/named/下名称是named.loopback
cd /var/named/ //进入named目录
cp named.loopback 192.168.78.arpa //复制模板到192.168.78.arpa
vi 192.168.78.arpa //编辑文件
#内容如下
$TTL 1D
@ IN SOA sdgy.com. admin.sdgy.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns1.sdgy.com.
NS ns2.sdgy.com.
129 PTR ns1.sdgy.com.
130 PTR ns2.sdgy.com. //使用 PTR 记录时,第一列只需要指明对应 IP 地址的“主机地址”部分即可,如“129”或“130” 等,系统在查找地址记录时会自动将当前反向域的网络地址作为前缀。例如,上述文件中的“129 IN PTR ns1.sdgy.com.”表示 IP 地址为 192.168.78.129 的主机的域名是 ns1.sdgy.com
111 PTR www.sdgy.com.
110 PTR mail.sdgy.com.
验证配置文件是否有错误
#验证主配置文件
named-checkconf -z /etc/named.conf //验证
#结果
zone sdgy.com/IN: loaded serial 0
zone 78.168.192.in-addr.arpa/IN: loaded serial 0
#验证正向查找文件
named-checkzone sdgy.com sdgy.com.zone //验证
#结果
zone sdgy.com/IN: loaded serial 0
OK
#验证反向查找文件
named-checkzone 78.168.192.in-addr-arpa 192.168.78.arpa //验证
#结果
zone 78.168.192.in-addr-arpa/IN: loaded serial 0
OK
更改文件权限
chown named:named /etc/named.conf //主配置文件权限
chown named:named /var/named/sdgy.com.zone //正向解析配置文件权限
chown named:named /var/named/192.168.78.arpa //反向解析配置文件权限
启动named服务
systemctl start named //启动服务
systemctl enable named //设置服务开机自启动
客户机验证主域名服务器
vi /etc/resolv.conf //编辑域名解析映射文件
#内容如下
# Generated by NetworkManager
nameserver 192.168.78.129 //更改解析服务IP指向主域名解析服务器
使用nslookup命令验证域名解析
#正向查找
nslookup ns1.sdgy.com //验证域名解析
#内容如下
Server: 192.168.78.129
Address: 192.168.78.129#53
Name: ns1.sdgy.com
Address: 192.168.78.129
#反向查找
nslookup 192.168.78.129 //验证IP解析
#内容如下
129.78.168.192.in-addr.arpa name = ns1.sdgy.com.
从域名服务器配置
vi /etc/named.conf //编辑主配置文件
#内容如下
options {
directory "/var/named";
};
zone "sdgy.com" IN { //域名
type slave;
masters {192.168.78.129;}; //指向主域名服务器IP
file "slaves/sdgy.com.zone"; //指向主域名服务器正向查找文件
};
zone "78.168.192.in-addr.arpa" IN {
type slave;
masters {192.168.78.129;}; //指向主域名服务器IP
file "slaves/192.168.78.arpa"; //指向主域名服务器反向查找文件
};
从域名服务器验证
客户机验证主域名服务器
vi /etc/resolv.conf //编辑域名解析映射文件
#内容如下
# Generated by NetworkManager
nameserver 192.168.78.130 //更改解析服务IP指向从域名解析服务器
使用nslookup命令验证域名解析
#正向查找
nslookup ns1.sdgy.com //验证域名解析
#内容如下
Server: 192.168.78.129
Address: 192.168.78.129#53
Name: ns1.sdgy.com
Address: 192.168.78.129
#反向查找
nslookup 192.168.78.129 //验证IP解析
#内容如下
129.78.168.192.in-addr.arpa name = ns1.sdgy.com.