文章目录
实验环境
两台操作系统:一台可以正常上网(服务端),另一台的IP和上网机的IP在同一网段(测试端)
Linux真机
虚拟机采用桥接模式
真机连接WiFi,正常上网
Window真机虚拟机上网
设定虚拟机的网桥搭到无线网卡上,
设定网关DNS,
虚拟机的IP要求和Windows真机的IP在同一网段
需要3台主机
- 服务端环境配置
- 测试端环境配置
1. DNS名词介绍
- 测试端(客户端)
1)修改合适的IP地址
2)修改/etc/resolv.conf
- 服务端
1)bind 安装包
2)named 服务名称
3)/etc/named.conf 主配置文件
4)/var/named 数据目录
5)端口是53
- 报错信息
1)no servers could be reached
:服务无法访问,服务开启?火墙?网络?端口?
2)服务启动失败:配置文件写错,journalctl -xe
查询错误
- A记录文件
$TTL 1D //TIME-TO-LIVE(dns地址保存时间长短)
@ IN SOA dns.westos.org. root.westos.org. ( //SOA授权起始
2021022501 ; serial //域名版本序列号
1D ; refresh //刷新时间(辅助dns)
1H ; retry //重试时间(辅助dns)
1W ; expire //过期时间(辅助dns,查询失败过期停止对辅助域名的应答)
3H ) ; minimum //A记录最短有效期
NS dns.westos.org.
dns A 192.168.0.18
www CNAME bbs.westos.org. //规范域名
bbs A 192.168.0.133 //正向解析记录
bbs A 192.168.0.222 //邮件解析记录
westos.org. MX 1 mail.westos.org.
mail A 192.168.0.18
- 解析
dig www.westos.org //查询正向解析
dig -t mx www.westos.org //邮件解析记录查询
2. 高速缓存DNS
Q:企业想要连接外网,该怎么做?
A:需要要设定DNS
A:如果user1要访问1.1.1.1,则DNS服务器会将1.1.1.1的数据返回给user1 ;user1已经获得了1.1.1.1的域名等信息,而user2还是需要花费同等的时间再让DNS服务器去解析一次(这样太花费时间)
Q:如何避免这种时间损耗?
A:user1已经解析到了地址,那么user2可以去问user1
(相当于:本地解析永远是最快的)
用户1相当于充当了高速缓存DNS
2.1 服务端操作
注意!!服务端不能dig
, 但是,在服务端的/etc/resolv.conf
文件中写入了服务端的IP地址,这代表,服务端主机node4此时可以作为测试机询问服务端(自己)解析数据,因此,该主机node4既可以作为测试端,也可以作为服务端!
- 在/etc/resolv.conf配置文件中写入实验机的地址
nameserver 192.168.0.18
vim /etc/resolv.conf
- 开启服务,设定火墙策略
安装dns服务
dnf install bind -y
systemctl enable --now named
添加火墙策略
firewall-cmd --permanent --add-service=dns
firewall-cmd --reload
- 查看服务端口开放情况
默认只开启了回环接口上的服务,除了本机外的主机无法使用
netstat -antuple | grep named
- 编辑dns服务的配置文件
vim /etc/named.conf
systemctl restart named
1)默认只开启了回环接口上的服务,除了本机外的主机无法使用
要求本机所有网络接口都开启53端口,对外提供dns服务
修改11行:listen-on port 53 { any; };
2)之前的配置文件只要求为本机服务
要求为所有主机提供dns服务
修改19行:allow-query { any; };
3)当做解析www.baidu.com时,需要到.com服务器中获得数据
(dns分级;根域名13个.net .com .cn )
解析www.baidu.com时,去baidu.com中查找数据;如果没有,再去 .com 中查找;如果还是没有,就去根域名中查找
(13个根域名都在美国,每次都去根域名查找,耗费太多的时间)
设定在国内的域名解析服务器中查找数据
添加20行:forwarders {114.114.114.114; };
从114.114.114.114取得缓存,所有的解析数据获取渠道是114.114.114.114
4)完成以上操作后,这时再去 dig ,还是很耗时,很慢。这是因为,访问时遇到dns劫持
修改35行:dnssec-validation no;
关闭dns的认证功能,关闭自检,加速解析速度
vim /etc/named.conf
systemctl restart named
2.2 测试端操作
测试端node2 会向 服务端node4 询问 解析地址信息
在/etc/resolv.conf配置文件中写入服务端的地址
nameserver 192.168.0.18
vim /etc/resolv.conf
解析地址
dig www.jd.com
2.3 已有解析缓存
当测试端/etc/resolv.conf文件中的域名解析服务器已经获得了某个网址的解析信息,测试端再去 dig 获取该网址的解析信息时,耗时为0ms
服务端
测试端
3. 正向解析
以上操作都是询问上级的DNS 服务器
我们也可以尝试不去询问上级的服务器
保留:第11和19,35行
注释20行:114,//
3.1 服务端操作
- 编辑子配置文件
在主配置文件 /etc/named.conf
中,我们可以写入下列内容:
如果添加58行:
zone "westos.org" IN {
type master;
file "westos.org.zone"
};
在企业,如果这样一个一个写入zone语句,会使主配置文件太长,不方便排错;所以,一般都在子配置文件中写zone语句
子配置文件要写上主配置文件的第11,19,35行
vim /etc/named.rfc1912.zones
zone "westos.org" IN { //维护的域名
type master; //当前服务器的主DNS
file "westos.org.zone" //域名A记录文件
allow-update { none; }; //允许更新主机列表
};
- 编辑A记录解析文件
1)生成A记录文件
注意,复制时,也要将A记录文件的权限复制过去
-p:复制权限
cp -p /var/named/named.localhost /var/named/westos.org.zone
2)编辑A记录文件
此文件中所有不用“.”结尾的字符串会自动补齐@的值
vim /var/named/westos.org.zone
systemctl restart named
内容解释:
1D
:缓存时间为1天
TTL
:time to life:缓存时长
@
:等于zone后面的内容,比如,此实验的@代表了westos.org
1D;refreash
:辅助DNS,自动刷新
1H;retry
1W;expire
:如果连续刷新的时间超过1周,就对外宣称DNS 不能服务
3H;minimum
:最小时间
NS
:域名服务器的名称nameserver
A
:ipv4
AAAA
:ipv6
3.2 客户端操作
dig www.westos.org
dig 中 A记录没有的地址,会自动访问上级DNS服务器
dig www.baidu.com
4. MX记录
规范域名转换
mx解析记录
4.1 服务端操作
vim /var/named/westos.org.zone
systemctl restart named
4.2 测试端操作
dig -t mx westos.org
5. 反向解析
5.1 服务端操作
- 编辑子配置文件
vim /etc/named.rfc1912.zones
zone "0.168.192.in-addr.arpa" IN {
type master;
file "192.168.0.ptr";
allow-update { none; };
};
- 编辑PTR记录,反向解析记录
cp -p /var/named/named.loopback /var/named/192.168.0.ptr
vim /var/named/192.168.0.ptr
systemctl restart named
6. 双向解析
内网的人解析内网的地址
外网的人解析外网的地址
主配置文件中做2套解析
6.1 服务端操作1
ip addr add 1.1.1.100/24 dev ens160
ip addr show ens160
6.2 客户端操作
修改IP地址到服务端的新网段
添加新的域名解析服务器1.1.1.100
6.3 服务端操作2
1)编辑A记录解析文件westos.org.inter
cp -p /var/named/westos.org.zone /var/named/westos.org.inter
vim /var/named/westos.org.inter
2)编辑双向解析的子配置文件
cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.inter
vim /etc/named.rfc1912.zones.inter
3)编辑主配置文件
vim /etc/named.conf
systemctl restart named
4)测试
dig www.westos.org
7. 辅助DNS,集群
实验环境
服务端:将配置文件中的上一个实验 双向解析 的内容注释掉
(该实验可以和双向解析实验一起做,但是,为了保险,不受到影响,我选择注释掉)
测试端的IP地址改成192.168.0.200
辅助DNS的作用:缓解主DNS的压力
7.1 服务端操作
- 修改子配置文件
vim /etc/named.rfc1912.zones
zone "westos.org" IN {
type master;
file "westos.org.zone";
allow-update { none; }; //不允许指定客户端更新域
also-notify { 192.168.0.200; };
};
- 修改A记录文件
vim /var/named/westos.org.zone
注意:dns版本数字发生改变,才可以同步更新(只能增量,最多十位)
$TTL 1D
@ IN SOA dns.westos.org. root.westos.org. (
2021022501 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.westos.org.
dns A 192.168.0.18
www CNAME bbs.westos.org.
bbs A 192.168.0.133
bbs A 192.168.0.222
westos.org. MX 1 mail.westos.org.
mail A 192.168.0.18
- 重启服务
systemctl restart named
7.2 测试端操作
- 安装dns服务器
dnf install bind -y
- 修改配置文件
修改11行:any
修改19行:any
修改35行:no
vim /etc/named.conf
- 修改子配置文件
vim /etc/named.rfc1912.zones
zone "westos.org" IN { //维护的域名
type slave; //dns状态位辅助dns
masters { 192.168.0.18; }; //主dns
file "slaves/westos.org.zone"; //同步数据文件
};
- 修改域名服务器的配置文件
vim /etc/resolv.conf
nameserver 192.168.0.200
- 设定火墙策略
firewall-cmd --permanent --add-service=dns
firewall-cmd --reload
- 重启服务
systemctl restart named
- 测试
dig www.westos.org
8. 更新DNS
8.1 服务端操作
- 编辑dhcp的配置文件
修改7行:option domain-name "westos.org";
修改8行:option domain-name-servers 192.168.0.18;
修改14行:ddns-update-style inerim
,dhcp开启网络更新dns的服务
修改30行:修改IP池
vim /etc/dhcp/dhcpd.conf
systemctl restart dhcpd
- 生成密钥
cd /var/named
dnssec-keygen -a HMAC -SHA256 -b 128 -n host westos
cat Kwestos.+163+10845.private
- 在dhcp的主配置文件中写入密钥
key westos {
algorithm hmac-sha256;
secret LbmPE1sc0r3ZQ3HXmsNUNA==;
};
zone westos.org. {
primary 127.0.0.1;
key westos;
}
- 在dns的主配置文件中写入密钥
vim /etc/named.conf
key westos {
algorithm hmac-sha256;
secret LbmPE1sc0r3ZQ3HXmsNUNA==;
};
- 修改dns的子配置文件
vim /etc/named.rfc1912/zones
zone "westos.org" IN {
type master;
file "westos.org.zone";
allow-update { key westos; }; //允许指定客户端更新westos域
also-notify { 192.168.0.200; };
};
- 重启服务
systemctl restart dhcpd
systemctl restart named
8.2 测试端操作
- 修改网卡配置文件
修改:BOOTPROTO=dhcp
修改:PEERDNS=no
vim /etc/sysconfig/network-scripts/ifcfg-ens160
nmcli connection reload
nmcli connection down ens160
nmcli connection up ens160
- 修改域名服务器的配置文件
写入:nameserver 192.168.0.18
vim /etc/resolv.conf
- 最好修改一下主机的名字(名字里不要有特殊字符)
hostnamectl set-hostname linux.westos.org
- 测试
dig linux.westos.org