DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。
DNS协议运行在UDP协议之上,使用端口为53端口
1、权威名称服务器
存储并提供某区域 ( 整个 DNS 域或 DNS 域的一部分 ) 的实际数据。
权威名称服务器的类型包括:
Master : 包含原始区域数据。有时称作 “主要 ”名称服务器
Slave : 备份服务器 , 通过区域传送从 Master 服务器获得的区域数据
的副本。有时称作 “次要 ”名称服务器
2、非权威 / 递归名称服务器
客户端通过其查找来自权威名称服务器的数据。递归名称服务器的类型包括
仅缓存名称服务器 : 仅用于查找 , 对于非重要数据之外的任何内容都不具
有权威性
服务端desktop中:
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 ##设置ip
BOOTPROTO=none
IPADDR0=172.25.254.119
PREFIX0=24
[root@localhost ~]# systemctl restart network ##重启网络
[root@localhost ~]# vim /etc/yum.repos.d/rhel_dvd.repo ##配置yum源
baseurl = http://172.25.254.71/source7.0
[root@localhost ~]# yum clean all
[root@localhost ~]# yum install bind -y ##安装DNS
它显示来自 DNS 查找的详细信息 , 其中包括为什么查询失败 :
– NOERROR : 查询成功
– NXDOMAIN : DNS 服务器提示不存在这样的名称
– SERVFAIL : DNS 服务器停机或 DNSSEC 响应验证失败
– REFUSED : DNS 服务器拒绝回答 ( 也许是出于访问控制原因 )
[root@localhost ~]# systemctl stop firewalld ##关闭火墙
[root@localhost ~]# rpm -qc bind ##查找dns配置文件
/etc/named.conf
[root@localhost ~]# vim /etc/named.conf
11 listen-on port 53 { any; }; ##控制 named 侦听的 IPv4 地址
17 allow-query { any; }; ##控制哪些客户端可以向 DNS 服务器询问信息
18 forwarders { 114.114.114.114; }; ##包含 DNS 查询将转发至的名称服务器的列表
***注:未添加此项目时,对于高速缓存dns没访问过的域名,将不会有解析***
33 dnssec-validation no; ##互联网认证
[root@localhost ~]# systemctl restart named ##重启服务
[root@localhost ~]# vim /etc/resolv.conf
nameserver 172.25.254.119 ##高速缓存dns地址
在测试主机:
[root@localhost ~]# vim /etc/resolv.conf
nameserver 172.25.254.119 ##
[root@foundation71 ~]# dig www.baidu.com ##解析
测试端:
添加高速缓存dns地址:
在测试主机:
添加高速缓存dns地址:
测试由此可见,第一次测试比第二次测试时间长
注意:在连接其他测试主机时,需要将在配置文件中写入高速缓存dns地址,否则测试不成功
1、正向解析:把域名变成ip
[root@dns-server ~]# vim /etc/named.conf
18 forwarders { 114.114.114.114; }; ##注释
[root@dns-server ~]# systemctl restart named
[root@dns-server ~]# vim /etc/named.rfc1912.zones ##编辑域名文件
在dns的子配置文件中添加需要解析的域名,如果在主配置文件中添加会过于繁琐,不利于主配置文件的阅读和查看
25 zone "westos.com" IN { ##需要解析的域名
26 type master;
27 file "westos.com.zone"; ## 记录域名解析的文件
28 allow-update { none; };
29 };
##在本文件上面编辑以上内容
[root@dns-server ~]# cd /var/named/
[root@dns-server named]# ls
[root@dns-server named]# cp -p named.localhost westos.com.zone ##复制name.localhost解析模版到westos.com.zone,注意加上-p,保留权限
[root@dns-server named]# ls
[root@dns-server named]# vim westos.come.zone ##记录正向域名解析的文件
$TTL 1D
@ IN SOA dns.westos.com. root.westos.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.westos.com.
dns A 172.25.254.119
hello A 172.25.254.219
[root@dns-server named]# systemctl restart named
此文件中参数解析:
$TTL 1D ##解析缓存文一天
@ (紫色) ##代表‘westos.com‘(即就是所要解析的域名)
dns.westos.com ##dns服务器的名称
root.westos.com. ##管理dns服务器的用户
0 ; serial ##一致性标记,在做dns集群的时候会用到
1D ; refresh ##dns缓存刷新的时间
1H ; retry ##如果出现解析错误后,重新尝试的时间
1W ; expire ##过期时间,此处为1周
3 H ) ; minimum ##主服务器挂后,从服务器至多工作的时间,可以保护dns防止ddos攻击
A ##名称至 IPv4 地址
域名文件编辑内容:
域名解析文件:
dig解析结果:
解析结果要和在解析文件中编辑ip要统一
注:在编辑解析文件时,必须要在解析域名、dns服务器名称以及地址都需要加”.”
2、轮叫机制
CNAME:不规范名称
[root@dns-server named]# systemctl stop firewalld ##关闭火墙
[root@dns-server named]# systemctl start named ##打开dns服务器
[root@dns-server named]# systemctl enable named
ln -s '/usr/lib/systemd/system/named.service' '/etc/systemd/system/multi-user.target.wants/named.service'
[root@dns-server named]# systemctl disable firewalld
rm '/etc/systemd/system/basic.target.wants/firewalld.service'
rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service'
[root@dns-server named]# vim westos.com.zone ##编写正向解析文件
$TTL 1D
@ IN SOA dns.westos.com. root.westos.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.westos.com.
dns A 172.25.254.119
hello A 172.25.254.119
www CNAME node1.westos.com.
node1 A 172.25.254.111
node1 A 172.25.254.222
[root@dns-server named]# systemctl restart named
[root@dns-server named]# dig www.westos.com
www.westos.com. 86400 IN CNAME node1.westos.com.
node1.westos.com. 86400 IN A 172.25.254.222
node1.westos.com. 86400 IN A 172.25.254.111
[root@dns-server named]# dig www.westos.com
www.westos.com. 86400 IN CNAME node1.westos.com.
node1.westos.com. 86400 IN A 172.25.254.111
node1.westos.com. 86400 IN A 172.25.254.222
解析文件编辑内容:
dig解析结果:产生了一种轮询式
注:在测试时,不能太快,需要一个缓冲时间,否则看不到轮询式效果
3、反向解析:将ip变成域名
[root@dns-server ~]# vim /etc/named.rfc1912.zones ##编辑域名文件
zone "254.25.172.in-addr.arpa" IN {
type master;
file "westos.com.ptr"; ##ptr:反向
allow-update { none; };
};
##在本文件最后编辑以上内容
[root@dns-server ~]# cd /var/named
[root@dns-server named]# ls
data named.ca named.localhost slaves westos.com.zone
dynamic named.empty named.loopback
[root@dns-server named]# cp -p named.localhost westos.com.ptr ##复制
[root@dns-server named]# ls
data named.ca named.localhost slaves westos.com.zone
dynamic named.empty named.loopback westos.com.ptr
[root@dns-server named]# vim westos.com.ptr
$TTL 1D
@ IN SOA dns.westos.com. root.westos.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.westos.com.
A 172.25.254.119
119 PTR www.westos.com
71 PTR www.hello.com
[root@dns-server named]# systemctl restart named
[root@dns-server named]# dig -x 172.25.254.119
119.254.25.172.in-addr.arpa. 86400 IN PTR www.westos.com.254.25.172.in-addr.arpa.
[root@dns-server named]# dig -x 172.25.254.71
71.254.25.172.in-addr.arpa. 86400 IN PTR www.hello.com.254.25.172.in-addr.arpa.
4、双向解析:实现内网主机和外网主机访问同一网站域名,定义到不同服务器
[root@dns-server named]# cp -p westos.com.zone westos.com.inter
[root@dns-server named]# vim westos.com.inter
25 zone "westos.com" IN {
26 type master;
27 file "westos.com.inter"; ##改为inter
28 allow-update { none; };
29 };
[root@dns-server named]# vim /etc/named.conf
注释50~58行
60 view localnet {
61 match-clients { 172.25.254.119; };
62 zone "." IN{
63 type hint;
64 file "named.ca";
65 };
66 include "/etc/named.rfc1912.zones"; ##编写内容
67 };
69 view inter {
70 match-clients { any; };
71 zone "." IN{
72 type hint;
73 file "named.ca";
74 };
75 include "/etc/named.rfc1912.inter";
76 };
[root@dns-server named]# systemctl restart named
[root@dns-server named]# dig www.westos.com
dns.westos.com. 86400 IN A 172.25.254.119
在客户端测试:
[root@foundation71 ~]# vim /etc/resolv.conf
namerserver 172.25.254.119
[root@foundation71 ~]# dig www.westos.com
dns.westos.com. 86400 IN A 192.168.0.119
在双向解析文件中,将zone改为inter:
在主配置文件中先注释,后编辑以下内容:
访问内主机时的ip:
访问外主机时的ip:
在服务端desktop中:
[root@dns-server named]# vim /etc/named.conf ##打开51~58行,注释60~76行
[root@dns-server named]# vim /etc/named.rfc1912.zones ##编辑域名文件
25 zone "westos.com" IN {
26 type master;
27 file "westos.com.zone";
28 allow-update { none; };
29 also-notify{ 172.25.254.219; }; ##写入测试端ip,目的是同步到测试端server
30 };
[root@dns-server named]# vim /etc/resolv.conf
nameserver 172.25.254.119 ##本机ip
[root@dns-server named]# vim westos.com.zone ##编写解析文件
$TTL 1D
@ IN SOA dns.westos.com. root.westos.com. (
3 ; serial ##更改次数(每一次更改ip,必须要更改次数)
NS dns.westos.com.
dns A 172.25.254.119
hello A 172.25.254.119
[root@dns-server named]# systemctl restart named
[root@dns-server named]# dig hello.westos.com
hello.westos.com. 86400 IN A 172.25.254.119
在主配置文件中: /etc/named.conf 打开51~57,注释60~76
在域名文件中编辑内容:/etc/named.rfc1912.zones
在/etc/resolv.conf写入本机ip:
在解析文件中写入ip以及修改次数
注意注意:
如果主DNS服务器解析文件修改,但从服务器无法及时接受,这样会解析出2个地址,所以为了保持DNS服务器集群的准确性,需要将所有的服务器同步修改的信息
只要将两台服务器上的/var/named/westos.com.zone
里的第三行值改为不一样的即可,下图中将主服务器文件中的0改为1,重启服务器后两台服务器里的DNS同步更新
在测试端server中:
设置ip、hostname:dns-slave、配置yum源、安装dns服务器
[root@dns-salve ~]# vim /etc/named.conf ##主配置文件中修改
11 listen-on port 53 { any; };
17 allow-query { any; };
32 dnssec-validation no;
[root@dns-salve ~]# vim /etc/named.rfc1912.zones
25 zone "westos.com" IN {
26 type slave;
27 masters { 172.25.254.119; }; ##测试端ip
28 file "slaves/westos.com.zone"; ##编辑内容
29 allow-update { none; };
30 };
[root@dns-salve ~]# vim /etc/resolv.conf
search example.com
nameserver 172.25.254.219 ##本机ip
[root@dns-salve ~]# systemctl stop firewalld ##关闭火墙
[root@dns-salve ~]# systemctl restart named ##重启服务
[root@dns-salve ~]# dig hello.westos.com
hello.westos.com. 86400 IN A 192.168.0.119
在主配置文件中修改内容:/etc/named.conf
在域名文件中编辑内容: /etc/named.rfc1912.zones
在/etc/resolv.conf 写入本机ip:
测试结果:
在服务端desktop中:
在测试端server中:
由测试结果可知,测试端和服务端的解析地址同步
在服务端desktop中:
[root@dns-server ~]# cd /var/named/
[root@dns-server named]# ls
data named.ca named.localhost slaves westos.com.ptr
dynamic named.empty named.loopback westos.com.inter westos.com.zone
[root@dns-server named]# cp -p westos.com.zone /mnt/ ##复制是为了备用
[root@dns-server named]# cd
[root@dns-server ~]# vim /etc/named.rfc1912.zones
28 allow-update { 172.25.254.71; }; ##远程更新ip
29 also-notify{ 172.25.254.219; };
[root@dns-server ~]# systemctl restart named
[root@dns-server ~]# > /var/log/messages ##清空日志
[root@dns-server ~]# cd /var/named
[root@dns-server named]# ls
data named.ca named.localhost slaves westos.com.ptr
dynamic named.empty named.loopback westos.com.inter westos.com.zone
[root@dns-server named]# chmod 770 /var/named/ ##赋予权限
打开真机,在真机中:
[kiosk@foundation71 Desktop]$ nsupdate
> server 172.25.254.119
> update add test.westos.com 86400 A 172.25.254.111 ##建立解析文件
> send
>
在服务端desktop中:
[root@dns-server named]# systemctl restart named
[root@dns-server named]# vim westos.com.zone ##运行这一步之后的结果(可以看出发生的变化)
$ORIGIN .
$TTL 86400 ; 1 day ##发生的变化(86400是一天的时间:秒)
westos.com IN SOA dns.westos.com. root.westos.com. (
4 ; serial
86400 ; refresh (1 day)
3600 ; retry (1 hour)
604800 ; expire (1 week)
10800 ; minimum (3 hours)
)
NS dns.westos.com.
$ORIGIN westos.com.
dns A 172.25.254.119
hello A 172.25.254.119
node1 A 172.25.254.113
A 172.25.254.213
test A 172.25.254.111
www CNAME node1
在服务端:
在域名文件中写入远程更新ip /etc/named.rfc1912.zones
在测试端真机:
测试结果:
删除解析文件:(真机)
> server 172.25.254.119
> update delete test.westos.com ##删除解析文件
> send
在服务端desktop中:
[root@dns-server named]# ls
westos.com.zone.jnl ##查看时多了一个文件
[root@dns-server named]# rm -fr westos.com.zone* ##删除是为了还原
[root@dns-server named]# ls
[root@dns-server named]# cp -p /mnt/westos.com.zone . ##复制到当前
[root@dns-server named]# ls
删除新建解析文件:
还原文件:
注:做完以上实验必须删除文件以及还原文件,否则会影响以下实验
[root@dns-server named]# cd /mnt/
[root@dns-server mnt]# dnssec-keygen -a HMAC-MD5 -b 125 -n HOST westos ##加密
-a:类型
-b:大小
-n:名称
[root@dns-server mnt]# ls ##加密成功
Kwestos.+157+23510.key Kwestos.+157+23510.private westos.com.zone
[root@dns-server mnt]# cat Kwestos.+157+23510.key ##查看密钥
westos. IN KEY 512 3 157 +ugSypZwJaCt0Pv55LL99w==
westos:用户
+ugSypZwJaCt0Pv55LL99w==:密码
[root@dns-server mnt]# cp -p /etc/rndc.key /etc/westos.key ##复制
[root@dns-server mnt]# vim /etc/westos.key
key "westos" { ##更改名称
algorithm hmac-md5;
secret "`+ugSypZwJaCt0Pv55LL99w==`"; ##更改密码
};
[root@dns-server mnt]# vim /etc/named.conf
43 include "/etc/westos.key"; ##编写内容
[root@dns-server mnt]# vim /etc/named.rfc1912.zones
28 allow-update { key westos; }; ##更改
[root@dns-server mnt]# scp Kwestos.+157+23510.* [email protected]:/mnt/ ##传钥匙给客户端(ip为客户端ip)
在 /etc/westos.key 写入名称以及密码:
在 /etc/named.conf 在43行写入内容:
在 /etc/named.rfc1912.zones 更改:
在客户端server中:
[root@dns-salve ~]# cd /mnt/
[root@dns-salve mnt]# ls ##传送成功
Kwestos.+157+23510.key Kwestos.+157+23510.private
[root@dns-salve mnt]# nsupdate -k Kwestos.+157+23510.private
> server 172.25.254.119
> update add hello.westos.com 86400 A 172.25.254.111
> send
> quit
[root@dns-server named]# ls
westos.com.zone.jnl
[root@dns-server named]# rm -fr westos.com.zone*
[root@dns-server named]# cp -p /mnt/westos.com.zone .
[root@dns-server named]# systemctl restart named
[root@dns-server named]# yum install dhcp -y
[root@dns-server ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp: overwrite ‘/etc/dhcp/dhcpd.conf’? y
[root@dns-server ~]# vim /etc/dhcp/dhcpd.conf
7 option domain-name "westos.com";
8 option domain-name-servers 172.25.254.119;
14 ddns-update-style interim; ##打开,最后并改为interim
删除27,28行
subnet 172.25.254.0 netmask 255.255.255.0 {
range 172.25.254.80 172.25.254.90;
option routers 172.25.254.119;
}
[root@dns-server ~]# cd /mnt/
[root@dns-server mnt]# ls
Kwestos.+157+23510.key Kwestos.+157+23510.private westos.com.zone
[root@dns-server mnt]# cat Kwestos.+157+23510.key
westos. IN KEY 512 3 157 +ugSypZwJaCt0Pv55LL99w==
[root@dns-server mnt]# vim /etc/dhcp/dhcpd.conf
key westos {
alogrithm hamc-md5;
secret +ugSypZwJaCt0Pv55LL99w==;
};
zone westos.com. {
primary 127.0.0.1;
key westos;
}
[root@dns-server mnt]# systemctl restart dhcpd
在客户端server中:
[root@dns-salve mnt]# hosetnamectl set-hostname linux.westos.com ##更改名为linux.westos.com
[root@dns-salve mnt]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 ##将静态ip为动态ip
[root@dns-salve mnt]# systemctl restart network
[root@linux ~]# ifconfig
inet 172.25.254.80
[root@linux ~]# dig linux.westos.com