关于dns的名词解释
dns:domain name service(域名解析服务)
关于客户端:
/etc/resolv.conf ,dns指向文件
host www.baidu.com ,地址解析命令
dig www.baidu.com,地址详细解析信息命令
A记录 ,ip地址叫做域名的Address 记录
SOA ,授权起始主机
dns顶级的种类是:“ . ”,点的个数最多是13个
次级:.com、 .net、 .edu、 .org …
安装包的名称是bind
服务名称是:named.service
DNS服务主配置文件:/etc/named.conf
数据目录:/var/named
端口 :53
关于报错信息:
1.no servers could be reached ,服务无法访问,出现这个问题需要关注的是(服务是否开启?火墙是否添加服务?网络通畅?端口是否添加?)
2.服务启动失败,配置文件写错 journalctl -xe查询错误
3.dig 查询状态
状态 | 说明 |
---|---|
NOERROR | 查询成功 |
REFUSED | 服务拒绝访问 |
SERVFAIL | 查询记录失败,(dns服务器无法到达上级,拒绝缓存) |
NXDOMAIN | 此域名A记录在dns中不存在 |
systemctl enable --now named,启动服务并设置开机自启
firewall-cmd --permanent --add-service=dns,在火墙里添加dns服务
firewall-cmd --permanent --add-port=53/tcp,在火墙里添加53端口
编辑服务的配置文件:vim /etc/named.conf
listen-on port 53 { any; }; 在本地所有网络接口上开启53端口
allow-query { any; }; 允许查询A记录的客户端列表
dnssec-validation no; 禁用dns检测,使dns能够缓存外部信息到本机
设置完后重启服务:systemctl restart named
完成上述操作后可以使用另一台主机来测试,更改测试主机的/etc/resolv.conf 文件里的 nameserver 后面的IP改为开启DNS服务主机的IP
然后 dig www.baidu.com 来测试,就可以正常显示了
我们使用自己架设的dns服务器去查看网站时
可以看到用了3272毫秒才看到,为了降低这种问题的出现,我们在开启dns服务的主机里添加配置
编辑:vim /etc/named.conf
写入配置:forwarders { 114.114.114.114; };,表示在服务主机里如果没有这个信息时直接去114查询答案
然后重启服务,去测试主机里访问网站,可以看到速度就变的很快
正向解析就是我们可以自己去设置一个域名的解析方式,在别人来访问我们的域名时可以去做A记录的解析,如我们去dig www.baidu.com 一样
正常我们写解析时应该直接在主配置文件里去写,但是为了规范管理,系统将zone文件单独放到了 /etc/named.rfc1912.zones 里
所以编辑 /etc/named.rfc1912.zones去写我们的正向解析,在这个文件里也是有系统给我们的模板的,我们复制模板直接去改就行
写入的内容如下:
zone "test.com" IN {
#维护的域名,一般就是公司的域名
type master; #当前的服务器主dns
file "test.com.zone"; #域名A记录文件
allow-update {
none; }; #允许更新主机列表
};
在目录cd /var/named/ 里有 “named.localhost” 这个文件,就是我们zone文件的模板,因为涉及权限和拥有组等不同的设定,直接去复制这个文件及它本身的属性并且命名为test.com.zone: cp -p named.localhost test.com.zone
然后编辑文件在里面写入我们需要的配置
$TTL 1D #Time To Live域名解析记录在DNS服务器中的存留时间
@ IN SOA dns.test.com. root.westos.com (
0 ; serial #这个值在每次修改此配置文件后都需要修改,并且数字只能增加,最大支持10位数,可以直接设置为2020031401这样的格式
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.test.com.
dns A 192.168.43.10
www CNAME test.a.test.com. #规范域名
test.a A 192.168.43.110 #正向解析记录
test.a A 192.168.43.111
test.com. MX 1 192.168.0.10. #邮件解析记录
写完后重启服务 systemctl restart named
我们还需要安装邮件服务去查看邮件解析记录
dnf install postfix -y
systemctl enable --now postfix
dnf install mailx -y
netstat -antlupe | grep 25
查询正向解析:dig www.test.com
邮件解析记录查询:dig -t mx westos.com
先用其他主机去给test.com台主机发一个邮件,就可以看到
我们设定的A记录也可以直接去访问,就像baidu里的 news.baidu.com、wenku.baidu.com 一样
正向解析是在访问域名时会解析到我们的主机IP
反向解析是通过访问IP去解析我们的域名:dig -x 192.168.43.111,没有做反向解析之前查询的PTR值是空的
首先编辑文件vim /etc/named.rfc1912.zones 写入配置
zone "43.168.192.in-addr.arpa" IN {
type master;
file "192.168.43.ptr";
allow-update {
none; };
};
切换路径 cd /var/named/ ,复制named.loopback文件
cp -p named.loopback 192.168.43.ptr
编辑:vim 192.168.0.ptr
$TTL 1D
@ IN SOA dns.test.com. root.test.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.test.com.
dns A 192.168.43.20
110 PTR test.a.test.com. #反向解析记录
111 PTR test.a.test.com.
重启服务,使用另一台主机测试 :dig -x 192.168.43.110
可以看到反向解析的A记录就出现了
在日常使用中如办公环境下,我们对于dns的设定可能会出现两种不同的需求,对外和对内的区别,我们谁当一个网段可以让其他外界客户来访问我们的服务,对于内部设定另一个网段来使用,那就需要保证两个网段查看到的内容都是各自的不会发生冲突
这种设定,我们测试时需要布置3台主机,
实验环境:
客户端2台:
一台IP是192.168.43.20
一台IP是172.25.254.30
服务端1台2个网段的ip:
192.168.43.10
172.25.254.10
在192.168.43网段的客户主机中:vim /etc/resolv.conf
写入 nameserver 192.168.43.10
在172.25.254网段的客户主机中:vim /etc/resolv.conf
写入 nameserver 172.25.254.10
配置方式:
cd /var/named/
cp -p test.com.zone test.com.inter
编辑文件: vim test.com.inter 配置方式和正向解析一样,配置为172.25.254网段的
$TTL 1D
@ IN SOA dns.test.com. root.westos.com (
2020031401 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.test.com.
dns A 172.25.254.10
www CNAME test.a.test.com.
test.a A 172.25.254.110
test.a A 172.25.254.111
test.com. MX 1 172.25.254.20.
然后在去复制:cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.inters
编辑 /etc/named.rfc1912.inters ,更改配置
编辑:vim /etc/named.conf ,注释掉之前的配置,再写信的配置
#zone "." IN {
# type hint;
# file "named.ca";
#};
#
#include "/etc/named.rfc1912.zones";
#include "/etc/named.root.key";
view localnet {
match-clients {
172.25.254.0/24; };
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.inters";
include "/etc/named.root.key";
};
view internet {
match-clients {
any; };
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
};
配置完后重启服务 systemctl restart named
测试:
在172.25.254网段的主机里dig www.test.com
在192.168.43网段主机里dig www.test.com
这样设定后,172.25.254网段就是我们的内网,只对内部开放,而192.168.43网段是对外部所有人开放的。
这样不同需求的主机用户对于域名的访问就会有不同的内容。
集群的意思就是多台dns服务器,在一台主机上更改设置就很亏制动同步到所有主机上。例如114.114.114.114这个dns服务器,它的每时每刻的访问量都是非常大的,一台主机去提供服务是远远不够的,那就需要辅助的dns服务器来帮助主dns服务器去分担流量。
搭建环境:
两台主机,一台主dns:192.168.43.10
一台搭建辅助dns:192.168.0.20
做这个测试前还原之前上个实验在 /etc/named.conf 里的设定,重启服务
主dns的配置:
vim /etc/named.rfc1912.zones
zone "test.com" IN {
type master;
file "test.com.zone";
allow-update {
none; };
also-notify {
192.168.43.20; }; #主动通知的辅助dns主机
};
vim /var/named/test.com.zone
$TTL 1D
@ IN SOA dns.test.com. root.westos.com (
2020031401 ; serial 每次更改A记录都需要更改此值,只增不减
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.test.com.
dns A 192.168.43.10
www CNAME test.a.test.com.
test.a A 192.168.43.110
test.a A 192.168.43.111
test.com. MX 1 192.168.43.20.
完成后重启服务
辅助dns主机:
首先安装程序:dnf install bind -y
在火墙里添加服务:firewall-cmd --permanent --add-service=dns
firewall-cmd --reload
编辑主配置文件: /etc/named.conf
编辑文件: /etc/named.rfc1912.zone
zone "test.com" IN {
type slave;
masters {
192.168.43.10; };
file "slaves/test.com.zone";
};
完成后重启服务
使用另一台192.168.43网段的主机测试,设置dns为192.168.43.20,然后dig www.test.com
并且在主dns配置的做A记录的更新,会自动同步到其他的辅助dns主机上
dns基于ip地址的更新:
在dns中设定:
vim /etc/named.rfc1912.zones
zone "westos.com" IN {
type master;
file "westos.com.zone";
allow-update {
192.168.43.20; }; ##允许指定客户端更新test域
also-notify {
192.168.43.20; };
};
重启服务
测试在192.168.43.20主机里,命令:nsupdate
更新新的A记录后,再去访问更新的域名
如果要删除更新的A记录的话,输入指令
dns基于key更新的方式:
首先需要去使用命令生成加密的key
dnssec-keygen -a HMAC-SHA256 -b 128 -n HOST test
-a 指定加密方式,-b 加密长度,-n 生成加密名称
并且这种加密方式属于对称加密,我们可以查看到加密内容
cp -p /etc/rndc.key /etc/test.key
vim /etc/test.key
key "test" {
algorithm hmac-sha256;
secret "nYLcyl0CSUfrUaan9yqdLQ=="; #加密字符串
};
vim /etc/named.conf 更改配置文件的对应文件的名称为我们刚建立的文件名
vim /etc/named.rfc1912.zones ,写入key更新的对应配置
重启服务,然后测试更新
如果想让其他主机来更新dns的A记录,把我们的公匙Ktest.+163+19596.private 传给他们就可以
在我们的工作域里的主机,如果它是通过dns主机发布的dhcp服务获取的ip,那我们在地址解析时没法去将它的地址解析写入A记录中,因为它的ip是会发生变化的,所以在这种情况下,我们还需要地址解析的话,就需要在dns服务主机里的dhcp服务里去配置信息,这种方式就是ddns。
在使用虚拟机做测试时,如果时通过路由器连接的网络,我们需要关闭路由器的dhcp功能,然后自己来搭建dhcp服务器
首先安装在dns主机里安装dhcp服务,并配置dhcp
dnf instsall dhcp-server -y
配置完成后启动dhcpd服务,在测试主机里设置,主机名为test.com域的主机名,网卡为dhcp模式,并获得一个IP
设置完后,测试访问:dig www.test.com ,可以访问到,但是访问自己的域名是无解的
如果是静态IP,直接写入A记录就可以,但是dhcp的动态IP不可能我们每次都去重新写入,所以我们还需要在dhcp的配置文件后面写入配置: vim /etc/dhcp/dhcpd.conf
key test {
#设定key加密
algorithm hmac-sha256;
secret nYLcyl0CSUfrUaan9yqdLQ==;
};
zone test.com. {
primary 127.0.0.1;
key test;
}
重启dhcpd和named服务
然后去访问测试主机的域名就可以得到正向解析