Linux中DNS的总览

一.DNS总揽

1、什么是DNS

DNS是域名系统(或服务)协议,它是一种分布式网络目录服务,主要用于域名与IP地址的相互转换,以及控制因特网的电子邮件的发送
DNS是因特网的一项核心服务,它作为可以将域名和IP地址互相映射的一个分布式数据库,能使人更方便的访问互联网,是解决网上机器命名的一种系统。

2、DNS名称服务器

(1)根名称服务器

根服务器是将人类可读主机名转换(或解析)为IP地址的第一步。它可以被认为是图书馆中指向不同书籍的索引,通常情况下,可作为对其他更具体位置的参考。

(2)TLD名称服务器

顶级域名服务器(TLD)可以被视为库中特定的书架。此名称服务器是搜索特定IPP地址的下一步(例:baidu.com中,TLD服务器是.com)。

(3)权威名称服务器

可被认为是书架上的字典,其中可以将特定名称翻译成其定义。权威名称服务器是名称服务器查询中的最后一步。如果权威名称服务器可以访问所请求的记录,它将把请求的主机名的IP地址返回给发出初始请求的DNS Recursor(图书管理员)。

类型有
命令 功能
Master 包含原始区域数据,有时称为“主要名称服务器”
Slave 备份服务器,通过区域传送Master服务器获得的区域数据的副本,有时称为“次要名称服务器”

(4)递归DNS解析器(非权威DNS名称服务器)

递归解析器是响应来自客户端的递归请求,并花时间跟踪DNS记录的计算机。它通过发出一系列请求直到它到达请求记录的权威DNS名称服务器来完成此操作(没有找到记录则超时、返回错误)。递归DNS解析器并不总是需要发出多个请求才能跟踪响应客户端所需的记录,缓存是一种数据持久性过程,它通过在DNS查找中提前提供的资源记录来帮助缩短必要的请求(可以降低内网主机的网络延迟)。

3、非权威DNS名称服务器的配置

(1)配置实验环境

命令 功能
vim /etc/sysconfig/network-scripts/ifcfg-eth0 修改ip,添加掩码,并将网络状态改为静态
hostnamectl set-hostname dns.example.com 修改主机名方便辨别
systemctl restart network 重读network配置文件,使修改立即生效
vim /etc/yum.repos.d/xxxx.repo 查看yum源是否配置好,若配置正常则关闭,不正常则配置正常后关闭
yum search dns 查找dns安装包是否存在,找到dns安装包
yum install bind -y dns安装包为bind,安装dns
rpm -ql bind 可查询该软件提供的服务的名称,查到该软件提供的服务名为named.service,使用时可简写为named
systemctl start named 开启该服务,开启时需要在准备开启该服务的机中进行一些键盘和鼠标操作,使记录操作的文件足够长,使开启服务所需要的key能够被抓取到
/etc/rndc.key 开启named服务需要的key文件,若不进行键盘操作,数据过短,无法抓取到key,则无法开启named
/dev/random 记录键盘和鼠标操作的数据的文件
systemctl stop firewalld 关闭防火墙
systemctl disable firewalld 设置开机时不自动开启防火墙
systemctl status firewalld 查看此时防火墙状态,确认是否关闭
vim /etc/yum.repos.d/xxxx.repo 在需要作为服务端的机中修改该文件,添加网关,使服务端可以进行联网
route -n 查看网关(Gateway)
ping 114.114.114.114 查看能否ping通,来判断是否能联网,通了即可以联网,不通则不能联网

(2)配置非权威DNS名称服务器

命令 功能
vim /etc/resolv.conf 修改此文件
添加nameserver 172.25.254.xxx 将dns服务器的ip输入进去,此时用该机(客户端)询问服务端时,将询问该dns服务器,修改完成后退出保存
dig www.baidu.com 此时dig不通(服务端未响应)
<1>开启named服务的端口
命令 功能
netstat -antlupe grep named
vim /etc/named.conf 修改该文件
listen-on port 53 { any; }; 改为任何人可访问53接口(即将53接口打开)
systemctl restart named 重读named配置文件,使修改立即生效
dig www.baidu.com 在非本地用户的客户端上dig,此时显示REFUSED,意为没有权力询问(服务端响应了,但服务端回馈给客户端为客户端没有权力询问)
<2>开启named服务的询问权力
命令 功能
vim /etc/named.conf 修改该文件
allow-query { any; }; 改为任何人都有权力询问
systemctl restart named 重读named配置文件,使修改立即生效
dig www.baidu.com 在非本地用户的客户端上dig,此时显示SERVFAIL,意为有权利询问,但服务端找不到答案(服务端响应了,并且查找了问题的答案,但没找到答案)
<3>开启named服务找不到答案后去自主搜寻的权力
命令 功能
vim /etc/named.conf 修改该文件
forwarder { 114.114.114.114; }; 意味在服务端找不到答案后,可询问该ip查找答案,反馈给客户端
dnssec-validation no; 是否进行DNSSEC确认开关,关闭则关闭DNSSEC安全协议,使得服务端找到答案后可以将该问题和答案缓存到内网,下一次被询问时可从内网查找到答案,大大缩短了查找的网络延迟,达到高速缓存的目的
dig www.baidu.com 在非本地用户的客户端上dig,此时显示为NOERROR,意味有权力询问,且找到了问题的答案并反馈给客户端,此时第一次查询到,网络延迟较大
dig www.baidu.com 第二次查询,此时该问题和答案已经被服务端缓存到内网,所以此时查询网络延迟很小(高速缓存)

Linux中DNS的总览_第1张图片

4、权威DNS名称服务器的配置(此时配置的是正向解析)

(1)配置权威DNS服务器的大致信息

命令 功能
vim /etc/named.conf 打开该文件,在最后查找到关于权威DNS名称服务器的配置文件被包含在该配置文件中
vim /etc/named.rfc1912.zones 根据查找到的信息,打开权威DNS名称服务器的配置文件
zone “name.org” IN { 设置权威DNS服务器的名称,此处的name可以自主起名,所有name需相同即可
type master; 设置类型为master(主)
file “name.org.zone”; 意为该权威DNS名称服务器的详细配置在name.org.zone文件中
allow-update { none; };
}; 依照文件中的模板添加想配置的权威DNS名称服务器的信息

(2)配置权威DNS服务器的详细信息

命令 功能
cp -p /var/named/named.localhost /var/named/name.org.zone 按照模板复制粘贴出权威DNS名称服务器的详细配置文件
vim /var/named/name.org.zone 修改该详细配置文件
SOA SOA为资源记录,表示该DNS名称服务器是该DNS域中的数据的信息的最佳来源
NS NS记录表示域名服务器记录搜索,用来指定该域名由哪一个DNS服务器来进行解析,告诉客户端问题的域所在的DNS服务器的位置
$TTL 1D 可缓存多长时间,1D代表1天后删除
@ IN SOA dns.name.org. wzq.name.org. ( @代表的是权威DNS的名称“name.org”,在此文档中,若信息不以“.”结尾,则默认在结尾加上@代表的值
NS dns.name.org.
dns A 172.25.254.xxx 服务端IP,当客户端询问dns.name.org时,反馈该IP地址为答案
www A IP1 当客户端询问www.name.org时,反馈IP1地址为答案
123 A IP2 当客户端询问123.name.org时,反馈IP2地址为答案,设置完成后退出保存
systemctl restart named 重读named配置文件,使修改立即生效
dig www.name.org 在客户端上dig,将显示IP1地址为答案
dig abc.abc.name.org(未写在配置文件中) 显示状态为NXDOMAIN,意为在name.org域中未找到答案,在.org中查找后也未找到答案,在.中查找后也未找到答案

Linux中DNS的总览_第2张图片

(3)使一个域名对应多个IP

命令 功能
vim /var/named/name.org.zone
www CNAME abc.name.org. 将www.name.org的域名转化为abc.name.org(仅内部人员可见)
abc A IP1 查询abc.name.org域名时可能答复IP1
abc A IP2 查询abc.name.org域名时也可能答复IP2

5、MX(邮件交换记录)的配置

(1)配置MX所需的接口25

命令 功能
netstat -antlupe grep 25
vim /etc/postfix/main.cf 修改邮件服务器的配置文件
将inet_interfaces = localhost注释 关闭仅本地可以使用25接口
inet_interfaces = all 开启所有人可使用25接口

(2)配置MX服务器

命令 功能
vim /var/named/name.org.zone 修改该配置文件
name.org. MX 1 IP. 给name.org域添加MX,优先级为1(数字越小优先级越大)
systemctl restart named 重读配置文件
systemctl restart postfix 重读邮件服务器的配置文件

(3)

命令 功能
dig -t mx name.org 查看name.org对应的mx是否是设置的
mail [email protected] 给root用户的name.org接受地址(域名)下发送邮件,输入.或者Ctrl+D编辑结束寄出
mailq 显示待寄邮件的清单(邮件队列),包括邮件ID、大小、保存时间、寄信人、收信人、无法寄出的原因,实际上执行的是sendmail -bp指令
mail 查看已经接收到的邮件,进入mail的交互界面
mailq -v 显示更详细的邮件队列信息

Linux中DNS的总览_第3张图片

6、反向解析

(1)配置大致信息配置文件

命令 功能
vim /etc/named.rfc1912.zones 修改该配置文件,根据模板写反向解析权威DNS名称服务器的大致信息
zone “254.25.172.in-addr.arpa” IN { 设置名称,此时服务器IP需反着写
type master; 设置类型
file “172.25.254.ptr”; 设定指向的详细设定配置文件
allow-update { none; };
};

(2)配置详细信息配置文件

命令 功能
vim /var/named/name.org.zone 修改该配置文件
dns A 172.25.254.xxx(服务器IP)
111 PTR www.name.org. 添加该条,意为询问172.25.254.111时,答复为www.name.org.
222 PTR abc.name.org. 添加该条,意为询问172.25.254.222时,答复为abc.name.org.
systemctl restart named 重读named配置文件,使修改立即生效

(3)测试

命令 功能
dig -x 172.25.254.111 查看172.25.254.111的答复为www.name.org(把IP转化为域名)
dig -x 172.25.254.222 查看172.25.254.222的答复为abc.name.org

Linux中DNS的总览_第4张图片

7、如何分别答复外网和内网的询问

(1)配置named主配置文件

命令 功能
man 5 named.conf 查看用法,找到如何分别答复两个用户(client)
vim /etc/named.conf 修改该配置文件
view localnet { 设定内网指向
match-clients {172.25.254.xxx(服务器IP); }; 对该IP给予内网答复
zone “.” IN {
type hint;
file “named.ca”;
};
include “/etc/named.rfc1912.inter”; 设定指向的内网配置文件
};
view localnet { 设定外网指向
match-clients {any; }; 对所有人(不包括服务器IP,因为服务器IP的定义写在之前)给予外网答复
zone “.” IN {
type hint;
file “named.ca”;
};
include “/etc/named.rfc1912.zones”; 设定指向的外网配置文件
}; 修改完成后退出保存

(2)配置内网、外网配置文件

命令 功能
cp -p /etc/named.rf1912.zones /etc/named.rf1912.inter 复制一个内网的配置文件,-p复制时保留权限
vim /etc/named.rf1912.inter 修改该配置文件,外网之前已经设置好,无需设置
file “name.org.inter” 将内网指定详细配置文件改为name.org.inter(正向解析)
file “172.25.254.ptr.inter” 将内网指定详细配置文件改为172.25.254.ptr.inter(反向解析),修改完成后退出保存

(3)配置内网、外网详细配置文件

命令 功能
cp -p /var/named/name.org.zone /var/named/name.org.inter 复制一个内网的详细配置文件,-p复制时保留权限
vim /var/named/name.org.inter 修改该配置文件,外网之前已经设置好,无需设置
:%s/172.25.254/1.1.1/g 将所有的172.25.254转化为1.1.1,完成后退出保存
systemctl restart named 重读named配置文件,使修改立即生效

(4)测试

命令 功能
dig www.name.org 在内网dig查看正向解析信息
dig 172.25.254.111 在内网dig查看反向解析信息
dig www.name.org 在外网dig查看正向解析信息(此机与内网不是同一台主机)
dig 172.25.254.111 在外网dig查看反向解析信息

Linux中DNS的总览_第5张图片

8、DNS负载均衡集群如何制作

配置另一台机做新的权威DNS名称服务器的环境,环境配置好后

(1)在主服务器

命令 功能
vim /etc/named.conf 修改该文件
将内网设定注释掉 防止影响,退出保存
systemctl restart named 重读配置文件
dig www.name.org 查看是否修改成功

(2)在副服务器

命令 功能
vim /etc/named.rfc1912.zones 修改该配置文件
zone “westos.org” IN { 改为想分担负载的DNS域名
type slave; 类型为slave(副服务器)
masters { 172.25.254.xxx(原机IP); }; 设置主服务器来源
file “slaves/name.org.zone”; 详细配置文件的指向为/var/named/slaves/name.org.zone,这样设定后,会自动将主服务器中的name.org.zone复制至此
allow-update { none; };
}; 修改完成后退出保存
systemctl restart named 重读配置文件
dig www.name.org 查看是否修改成功

(3)主服务器修改设定后如何自动同步到副服务器

<1>在主服务器
命令 功能
vim /etc/named.rfc1912.zones 修改该文件
添加设定:also-notify { 172.25.254.xxx(副服务器IP); }; 自动同步修改
vim /var/named/name.rog.zone 修改该文件
当设定修改后,将serial的值+1 意为该文件修改了,使副服务器与此文件自动同步,此值只能加不能减,最多十位数,所以一般用xxxx(年)xx(月)xx(日)xx(第几次修改)的方式来记录
systemctl restart named 重读配置文件,使修改立即生效
<2>在副服务器
命令 功能
dig www.name.org 查看有无自动同步修改
ls -l name.org.zone 可以在主服务器重启服务之前查看一次文件的时间戳
ls -l name.org.zone 在主服务器重启服务之后再次查看文件的时间戳,验证文件被修改的最后时间

二.修改指定用户可修改权限

1、指定IP用户可修改权威DNS名称服务器

(1)配置权威DNS名称服务器

命令 功能
cp -p /var/named/name.org.zone /opt 备份一份文件,防止实验过程中文件损坏
getenforce 检查selinux是否为disabled状态
vim /etc/named/rfc1912.zones 修改该文件
allow-update { 172.25.254.xxx; }; 设定允许update权限的用户IP为172.25.254.xxx
systemctl restart named 重启named服务

(2)在客户端进行测试

命令 功能
dig weizhi.name.org 查看是否可以修改

2、使用密钥修改权威DNS名称服务器

(1)在服务端配置

命令 功能
dnssec-keygen –a HMAC-MD5 –b 256 –n HOST namekey 生成密匙
cp -p /etc/rndc.key /etc/name.key 用模版生成name.key
cat Knamekey.xxx.private 查看私钥密码
vim /etc/name.key 写入name.key中
vim /etc/name/rfc1912.zones 修改此配置文件
allow-update { key namekey; }; 设定有密码的用户可以修改配置
vim /etc/named.conf 修改主配置文件
include “/etc/name.key”; 将密码文件加入配置中

(2)在客户端测试

命令 功能
nsuodate -k Knamekey.xxx.private 用私钥登录
server xxx.xxx.xxx.xxx(服务端IP) 登录服务端DNS
update add 123456.name.org 86400 A 172.25.254.66 修改配置
send 发送
dig 123456.name.org 查看修改是否成功

Linux中DNS的总览_第6张图片

3、ddns动态域名解析

(1)在服务端

命令 功能
systemctl start dhcpd 开启dhcpd服务
vim /etc/dhcp/dhcpd.conf 修改dhcpd.conf配置文件
systemctl restart dhcpd 重启dhcpd服务

(2)在客户端

命令 功能
vim /etc/sysconfig/network-script/ifcfg-eth0 修改网络
BOOTPROTO=dhcp 修改为动态网络
systemctl restart network 重启网络
ifconfig 查看得到的动态IP

Linux中DNS的总览_第7张图片

你可能感兴趣的:(Linux,Linux)