DNS概述
DNS的定义
DNS,又称域名系统(Domain Name System),是万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。万维网(World Wide Web,简称www)是Internet互联网提供的主要服务之一。
DNS使用TCP和UDP协议,使用端口号53。对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。系统的应用程序,BIND的服务主程序为named 称为DNS服务程序 。
DNS的意义
DNS是一个按层次结构排列的分布式系统,由许多DNS服务器组成。DNS服务器是注册加入DNS的任何计算机。当你在浏览器中键入域名时,浏览器会询问DNS服务器该域的IP地址是什么,DNS服务器会尝试告诉你,只有通过DNS找到域名对应的ip,才可以正常访问。如果它不知道,那么它会尝试从其他DNS服务器中找出。
DNS的分类 权威名称服务器,权威DNS :直接有客户需要的答案,客户给一个域名直接就能访问,存储并提供某区域 ( 整个 DNS 域或DNS 域的一部分 ) 的实际数据。 权威名称服务器的类型包括: Master : 主DNS,包含原始区域数据,有时称作 “主要 ”名称服务器,。 Slave : 备份DNS ,通过区域传送从 Master 服务器获得的区域数据的副本,有时称作 “次要 ”名称服务器。
非权威DNS:里面没有客户需要的答案,但它会通过访问114.114.114.114等权威DNS找到答案给用户(相当于代购),客户端通过其查找来自权威名称服务器的数据递归名称服务器的类型包括:缓存名称服务器 : 仅用于查找 ,不负责解析域,只是缓存域名解析结果。
DNS查找的过程
> 客户端上的 Stub 解析器(根解析器)将查询发送至 /etc/resolv.conf中的名称服务器,如果名称服务器对于请求的信息具有权威性 ,
会将权威答案发送至客户端,如果名称服务器在其缓存中有此请求的信息,则会将非权威答案发送至客户端,
> 如果缓存中没有该信息 ,名称服务器将搜索权威名称服务器来查找信息 ,从根区域开始 ,按照DNS层次结构向下搜素 , 直至对于信息具有权威性的名称服务器,
以此为客户端获得答案,在此情况中名称服务器将信息传递至客户端并在自己的缓存中保留一个副本 , 以备以后查找。
> 问题引入:
区域内有多台主机,当同时访问114.114.114.114这个权威DNS进行解析时,都通过一根传输线与外界进行通信,所以很耗带宽,并且每次请求等待的时间都很长,影响性能!
> 解决思路:
内网访问外网速率较慢,但内网之间进行访问速率快,我们知道每台主机获取到当前域名的IP时,都会在缓存中保存一段时间,默认是600s。当区域内的A主机获取到IP的时候,如果区域内的其它主机也有想同的需求,让其先询问此A主机,如果A主机的缓存中有,则直接获取到,由于并不向外界发出请求,也不占用带宽!
> 解决
区域内一台主机褡建为高速缓存DNS服务器,其余的主机每次想查询域名的IP的时候,都去请求这个DNS服务器,其他主机不再需要访问权威DNS,直接问高速缓存DNS服务器即可,只需要高速缓存DNS去问114.114.114.114,然后把自己要到的东西共享给其他主机即可。
> 高速缓存DNS特点:非权威DNS,只提供信息,不会校验是否正确!可用于提高内网的访问效率
正向地址解析
前期准备
server1-172.25.70.11 | 服务端 |
server2-172.25.70.12 | 客户端 |
真机
echo “1” > /proc/sys/net/ipv4/ip_forward #开启路由功能
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
firewall-cmd --premanent --add-service=httpd #打开防火墙地址伪装
systemctl stop firewalld #或者关闭防火墙
desktop
配置成DNS服务器
yum search dns
yum install bind -y 安装bind
rpm -ql bind 查看bind的配置文件
systemcel start named 开启dns服务
#高速缓存dns的搭建需要/etc/rndc.key这个文件的存在(如果加密字符太短就不存在)
systemcel start named #(起不来)开启以后这个文件才会存在,存储加密字符
#此时敲击物理键盘,使他的加密字符变长,此时这个文件才会有,系统才会起来
cat /etc/random 敲击物理键盘
cat /etc/rndc.key就有了
vim /etc/resolv.conf
nameserver 114.114.114.114
firewall-cmd --pernament --add-service=dns
firewall-cmd --reload
netstat -antlupe | grep named #让dns服务的53端口可以被使用
修改DNS配置文件
vim /etc/named.rfc1912.zones
zone "westos.com" IN {
typr master;
file "westos.com.zone";
allow-update { null ;};
};
vim /etc/named.conf #以下内容比较分散
listen-on port 53 { any; };
allow-query { any; };
//forwarders { 114.114.114.114; };上一跳DNS,如果不配置本地DNS,可以去掉注释
dnssec-enable yes;由于是内网访问,可以不用安全检查
cd /var/named
cp -p named.localhost westos.com.zone
vim westos.com.zone
@变量 含义
主机记录(A记录) 记录是用于名称解析的重要记录,它将特定的主机名映射到对应主机的IP地址上
别名记录(CNAME记录) CNAME记录用于将某个别名指向到某个A记录上,这样就不需要再为某个新名字另外创建一条新的A记录
IPv4主机记录(A记录) IPV4的标志,用于将特定的主机名映射到一个主机的IPv4地址
IPv6主机记录(AAAA记录) IPV6的标志,与A记录对应,用于将特定的主机名映射到一个主机的IPv6地址
服务位置记录(SRV记录) 用于定义提供特定服务的服务器的位置,如主机(hostname),端口(port number)等
NAPTR记录 它提供了正则表达式方式去映射一个域名,NAPTR记录非常著名的一个应用是用于ENUM查询
PTR IPv4/IPv6 地址至名称
MX 用于名称的邮件交换器 ( 向何处发送其电子邮件 )
NS nameserver,管理这个域名的服务器的主机的名字
SOA ” 授权起始 “ , DNS 区域的信息 ( 管理信息 )
![在0L3FxXzQ1MDcwNTQx,size_16,color_FFFFFF,t_70)
server
vim /etc/resolv.conf #域名解析服务设置成226虚拟机
nameserver 172.25.70.100
dig www.baidu.com
反向地址解析
desktop
vim /etc/named.rfc1912.zones
cd /var/named
cp -p named.loopback westos.com.ptr
vim westos.com.ptr
systemctl restart named
vim /etc/named.rfc1912.zones
zone "70.25.172.in-addr.apra" IN {
typr master;
file "westos.com.ptr";
allow-update { null ;};
};
vim westos.com.ptr
server
dig -x 172.25.70.100
双向地址解析
named.conf | 主配置文件 |
named.rfc1912.zones | 内网子配置文件 |
named.rfc1912.inter.zones | 外网子配置文件 |
westos.com.zone | 内网解析库文件 |
westos.com.inter.zone | 外网解析库文件 |
使特定的用户使用特定的解析文件,内外分开 先在我们为了做实验方便
将此台主机看作内网主机172.25.254网段,将除过此台主机以外的主机看作外网主机192.168.0网段
desktop
cp -p westos.com.zone westos.com.inter.zone
vim westos.com.inter.zone
cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.inter.zones
vim /etc/named.rfc1912.inter.zones
vim /etc/named.conf
systemctl restart named
vim westos.com.inter.zone
%s172.25.254/1.1.1/g #将所有的172.25.254网段换成1.1.1网段
vim /etc/named.conf
view localnet{
match-client {localhost;};
zone "." IN {
type hint;
file "name.ca";
};
include "/etc/named.rfc1912.zones"
};
view internet{
match-client {any;};
zone "." IN {
type hint;
file "name.ca";
};
include "/etc/named.rfc1912.inter.zones"
};
vim /etc/named.rfc1912.inter.zones
zone "westos.com" IN {
typr master;
file "westos.com.inter.zone";
allow-update { null ;};
};
> vim /etc/named.rfc1912.inter.zones #指定外网解析文件
vim /etc/named.conf,主配置文件中添加指定外网的子配置文件
讲原来的设置注释掉
vim westos.com.inter.zone
server
当重启named发现启动失败时
辅助DNS
当访问用户太多一台服务器承受不了时,就需要辅助DNS服务器 在主DNS服务器中注释双向dns服务器,恢复之前的配置
desktop
#取消双向解析的设置
systemctl restart named
vim /etc/named.rfc1912.zones
allow-transfer {172.25.70.200;}; #企业6需要,企业7不需要
also-notify {172.25.70.200;};
server
yum install bind -y #安装bind
rpm -ql bind #查看bind的配置文件
firewall-cmd --pernament --add-service=dns
firewall-cmd --reload
vim /etc/named.rfc1912.zones
vim /etc/named.conf
cp /var/named/westos.com.zone /var/named/slave/westos.com.zone
systemcel start named
vim /etc/named.rfc1912.zones
zone "westos.com" IN {
typr slave;
masters {172.25.254.100;};
file "slaves/westos.com.zone";
allow-update { null ;};
};
vim /etc/named.conf #以下内容比较分散
listen-on port 53 { any; };
allow-query { any; };
//forwarders { 114.114.114.114; }; #上一跳DNS,如果不配置本地DNS,可以去掉注释
dnssec-enable yes;
从服务器dig的结果与主服务器相同,但是我们并未编辑从服务器的数据文件,这说明了从服务器“复制“了主服务器域名的信息。
远程更新DNS
当主DNS服务器改变时,需要同步到其他辅助DNS服务器上,如果辅助服务器太多 我们允许172.25.254.73 主机来添加更新DNS
一般的更新是从机删除/var/named/slave/westos.com.zone文件,在通过dig命令来获取主机的dns,但是也可以修改主机的配置参数来实现从机的远程更新
desktop
chmod 770 /var/named/给 /var/named/ 这个目录的用户组一个写的权限
vim /etc/named.rfc1912.zones
systemctl restart named
vim /etc/named.rfc1912.zones
allow-update {172.25.254.200;};
vim /var/named/westos.com.zone
#更改serial的参数为1 (最大可大10位)
测试
#输入更新信息
nsupdate 回车
server 172.25.254.111
update add test.westos.com 86400 A 172.25.254.111
send
quit
dig test.westos.com
nsupdate是一个动态DNS更新工具,可以向DNS服务器提交更新记录的请求,它可以添加或者删除资源记录,而不需要手动进行编辑文件。
命令格式:
server servername[port] 发送请求更新的服务器ip
zone zonename 指定需要更新的区名
send 将要求信息和更新信息发送到DNS服务器,等同于输入一个空行
quit 退出
server测试
dig test.westos.com
通过密钥进行更新
desktop
#清除实验残留
cd /var/named
ls查看jnl文件
rm -rf westos.com.zone*
cp -p /opt/westos.com.zone .
cp -p /etc/rndc.key /etc/westos.key
#先用真机ssh连上dns服务器,然后进入虚拟机控制台输入一些字符,这样才会顺利生成钥匙
dnssec-keygen -a HMAC-MD5 -b 128 -n HOST westos #生成钥匙
cat /mnt/Kwestos.+157+63271.private #在这个文件里面查看加密字符
vim /etc/westos.key #写入加密字符
vim /etc/named.conf #添加配置
vim /etc/named.rfc1912.zones #使其允许钥匙加密更新
systemctl restart named
vim /etc/westos.key
key "westos" {
algorithm hmac-md5
secret "加密字符";
};
vim /etc/named.conf
include "/etc/westos.key";
vim /etc/named.rfc1912.zones
allow-update {westos.key;};
测试
输入更新信息
nsupdate 回车
server 172.25.70.100
update add test1.westos.com 86400 A 172.25.70.112
send
quit
dig test.westos.com
server测试
dig test.westos.com
DHCP和DNS动态解析
一般动态分配ip,那么dns域名解析的ip就变了,客户会访问不到,我们要把域名与ip的对应关系做好,dhcp将哪个ip给被访问域名,dhcp告诉dns,这样客户端才会正常访问一个域名内的主机
DDNS(Dynamic Domain Name Server)是动态域名服务的缩写,DDNS是将用户的动态IP地址映射到一个固定的域名解析服务上,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序,服务器程序负责提供DNS服务并实现动态域名解析
也就是说DDNS捕获用户每次变化的IP地址,然后将其与域名相对应,这样其他上网用户就可以通过域名来进行交流,而最终客户所要记忆的全部,就是记住动态域名商给予的域名即可,而不用去管他们是如何实现的,动态域名服务的对象是指IP是动态的,是变动的,普通的DNS都是基于静态IP的,有可能是一对多或多对多,IP都是固定的一个或多个,但DDNS的IP是变动的、随机的,随着市场需求变化,DDNS需求功能也越来越多,越来越要求方便,市场现在已经有了不少第三方DDNS方支持的设备
desktop
清除实验残留
cd /var/named
ls查看jnl文件
rm -rf westos.com.zone*
cp -p /opt/westos.com.zone .
vim westos.com.zone #(删除之前所有的,只留dns)
systemctl restart named
yum install dhcp -y
cd /etc/dhcp
cp /usr/share/doc/dhcp*/dhcpd.conf.example dhcpd.conf
vim dhcpd.conf
systemctl restart dhcpd
systemctl restart named
systemctl stop firewalld
vim dhcpd.conf
ddns-update-style interim;
key westos {
algorithm hmac-md5;
secret 加密字符串==;(cat /etc/westos.key查看)
};
zone westos.com. {
primary 127.0.0.1; #回环接口比较安全
key westos;
}
server
#修改ip获取方式为DHCP
vim /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=dhcp
systemctl restart network
vim /etc/resolv.conf
nameserver 172.25.254.111
未完