前言
身为一个三年的运维工程师,从开发转测开再转运维,都是不断学习的过程,未必开发才是最优秀的,找到适合自己的职业不断深耕,你也会在自己的行业大放光彩,本系列依照《Linux就该这么学》系列随书学习练习操作,将一些课本上不顺畅的地方,全部以最简方式免费开源展示给大家,资源大家可以自行百度,也希望大家多关注刘遄老师的第二版关于centos8的丛书,学习最前沿的Linux相关技术。
常用命令汇总
DNS 域名解析服务
DNS(Domain Name System,域名系统)技术用于管理和解析域名与 IP 地址对应关系,自动查找与之匹配(或者说具有映射关系)的 IP 地址或域名, 即将域名解析为 IP 地址(正向解析),或将 IP 地址解析为域名(反向解析)
最常见的域名后缀有.com(商业组织)、.org(非营利组 织)、.gov(政府部门)、.net(网络服务商)、.edu(教研机构)、.pub(公共大众)、.cn(中国 国家顶级域名)等。
DNS 技术作为互联网基础设施中重要的一环,为了为网 民提供不间断、稳定且快速的域名查询服务,保证互联网的正常运转,提供了下面三种类型 的服务器。
主服务器:在特定区域内具有唯一性,负责维护该区域内的域名与 IP 地址之间的对 应关系。
从服务器:从主服务器中获得域名与 IP 地址的对应关系并进行维护,以防主服务器 宕机等情况。
缓存服务器:通过向其他域名解析服务器查询获得域名与 IP 地址的对应关系,并 将经常查询的域名信息保存到服务器本地,以此来提高重复查询时的效率。
DNS 域名解析服务采用分布式的数据结构来存放海量的“区域数据”信息,在执行用户 发起的域名查询请求时,具有递归查询和迭代查询两种方式。
递归查询:是指 DNS 服务 器在收到用户发起的请求时,必须向用户返回一个准确的查询结果。
迭代查询:DNS 服务器在收到用户发起的请求时,并不直接回复查询结果,而是告诉另一台 DNS 服务器的地址,用户再向这台 DNS 服务器提交请求,这样依次反复,直到返回查询结果。
当用户向网络指定的 DNS 服务器发起一个域名请求时,通常情况下会有本地由此 DNS 服务器向上级的 DNS 服务器发送迭代查询请求;如果该 DNS 服务器没有要查询的信息,则 会进一步向上级 DNS 服务器发送迭代查询请求,直到获得准确的查询结果为止。
最高级、 最权威的根 DNS 服务器总共有 13 台,分布在世界各地,其管理单位、具体的地理位置,以 及 IP 地址
安装 bind 服务程序
BIND(Berkeley Internet Name Domain,伯克利因特网名称域)服务是全球范围内使用最 广泛、最安全可靠且高效的域名解析服务程序。
1.下载bind服务
[root@localhost ~]# yum install bind-chroot -y
2.配置bind文件
在 bind 服务程序中有下面这三个比较关键的文件
主配置文件(/etc/named.conf):只有 58 行,而且在去除注释信息和空行之后,实际有效的参数仅有 30 行左右,这些参数用来定义 bind 服务程序的运行。
区域配置文件(/etc/named.rfc1912.zones):用来保存域名和 IP 地址对应关系的所在位 置。类似于图书的目录,对应着每个域和相应 IP 地址所在的具体位置,当需要查看 或修改时,可根据这个位置找到相关文件。
数据配置文件目录(/var/named):该目录用来保存域名和 IP 地址真实对应关系的数 据配置文件。
bind 服务程序的名称为 named。首先需要在/etc 目录中找到该服务程序 的主配置文件,然后把第 13 行和第 21 行的地址均修改为 any,分别表示服务器上的所有 IP 地址均可提供 DNS 域名解析服务,以及允许所有人对本服务器发送 DNS 查询请求。
[root@localhost ~]# vim /etc/named.conf
...
12 options {
13 listen-on port 53 {
any
; };
14 listen-on-v6 port 53 { ::1; };
15 directory "/var/named";
16 dump-file "/var/named/data/cache_dump.db";
17 statistics-file "/var/named/data/named_stats.txt";
18 memstatistics-file "/var/named/data/named_mem_stats.txt";
19 recursing-file "/var/named/data/named.recursing";
20 secroots-file "/var/named/data/named.secroots";
21 allow-query {
any
; };
...
正向解析
在 DNS 域名解析服务中,正向解析是指根据域名(主机名)查找到对应的 IP 地址。当用户输入了一个域名后,bind 服务程序会自动进行查找,并将匹配到的 IP 地址返 给用户。
1.编辑区域配置文件
[root@localhost named]# vim /etc/named.rfc1912.zones
(教个小技巧)当配置文件想批量注释的时候有两种办法,第一种vim进入后按ctrl+v进入模块化,然后按大写I进入插入模式,输入//或#(只显示普通单行插入),然后按esc(批量同步单行插入),稍微有点慢但是也会全部插入注释,效果如下
另外一种办法是在命令模式下批量替换在底行命令模式下使用命令(按shift+:):起始行号,结束行号s/^/注释符/g(行号可以通过命令模式输入set number显示),在指定的行首添加注释,12,42s/^/\/\//g
,效果如下
注释掉之后另起一行,录入如下命令
43 zone "linux" IN {
44 type master;
45 file "linux.zone";
46 allow-update {none;};
47 };
2.编辑数据配置文件
[root@localhost ~]#
cd /var/named/
[root@localhost named]#
cp -a named.localhost linux.com.zone
[root@localhost named]# vi linux.com.zone
$TTL 1D
@ IN SOA linux.com. root.linux.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.linux.com.
ns IN A 192.168.227.133
IN MX 10 mail.linuxprobe.com.
mail IN A 192.168.227.133
www IN A 192.168.227.133
bbs IN A 192.168.227.130
修改DNS配置文件并重启
[root@localhost named]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
添加DNS
...
DNS1=192.168.227.133
[root@localhost named]# vim /etc/resolv.conf
添加DNS
...
nameserver 192.168.227.133
[root@localhost named]# systemctl restart network
[root@localhost named]# systemctl restart named
3.检验解析结果
先把 Linux 系统网卡中的 DNS 地址 参数修改成本机 IP 地址,这样就可以使用由本机提供的 DNS 查询服务,nslookup 命令用于检测能否从 DNS 服务器中查询到域名与 IP 地址的解析记录
巨坑解析
我这边出现了如下的报错
[root@localhost named]# nslookup bbs.linux.com
;; Got recursion not available from 192.168.227.2, trying next server
Server: 192.168.227.133
Address: 192.168.227.133#53
** server can't find bbs.linux.com: NXDOMAIN
原因很简单,DNS没有配好,但是我发现我resolv.conf配置完成之后重启总是会改变,然后就在ifcfg-ens33加了如下参数
PEERDNS=no
重新把上边DNS的配置再重复一遍即可
[root@localhost named]# nslookup bbs.linux.com
Server: 192.168.227.133
Address: 192.168.227.133#53
Name: bbs.linux.com
Address: 192.168.227.130
[root@localhost named]# nslookup www.linux.com
Server: 192.168.227.133
Address: 192.168.227.133#53
Name: www.linux.com
Address: 192.168.227.133
[root@localhost named]# nslookup mail.linux.com
Server: 192.168.227.133
Address: 192.168.227.133#53
Name: mail.linux.com
Address: 192.168.227.133
反向解析实验
1.编辑区域配置文件
[root@localhost named]# vim /etc/named.rfc1912.zones
zone "227.168.192.in-addr.arpa" IN {
type master;
file "192.168.227.arpa";
};
2.编辑数据配置文件
[root@localhost named]# cp -a named.loopback 192.168.227.arpa
[root@localhost named]# vi 192.168.227.arpa
$TTL 1D
@ IN SOA linux.com root.linux.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.linux.com.
ns A 192.168.227.133
133 PTR ns.linux.com.
133 PTR mail.linux.com.
133 PTR www.linux.com.
130 PTR bbs.linux.com.
重启服务
[root@localhost named]# systemctl restart named
3.检验解析结果
输入 IP 地址 即可查询到对应的域名信息
[root@localhost named]# nslookup 192.168.227.133
133.227.168.192.in-addr.arpa name = ns.linux.com.
133.227.168.192.in-addr.arpa name = www.linux.com.
133.227.168.192.in-addr.arpa name = mail.linux.com.
[root@localhost named]# nslookup 192.168.227.130
130.227.168.192.in-addr.arpa name = bbs.linux.com.
部署从服务器
1.在主服务器的区域配置文件中允许该从服务器的更新请求,
[root@localhost named]# vim /etc/named.rfc1912.zones
zone "linux.com" IN {
type master;
file "linux.com.zone";
allow-update {
192.168.227.130
;};
};
zone "227.168.192.in-addr.arpa" IN {
type master;
file "192.168.227.arpa";
allow-update {
192.168.227.130
;};
[root@localhost named]# systemctl restart named
2.在从服务器中填写主服务器的 IP 地址与要抓取的区域信息
安装bind程序
[root@www
~
]# yum install bind-chroot
配置主文件
[root@www slaves]# vim /etc/named.conf
options {
listen-on port 53 {
any;
};
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query {
any
; };
配置数据文件
没用的配置加注释,然后添加如下配置
[root@www
~
]# vim /etc/named.rfc1912.zones
zone "linux.com" IN {
type slave;
masters { 192.168.227.133; };
file "slaves/linux.com.zone";
};
zone "227.168.192.in-addr.arpa" IN {
type slave;
masters { 192.168.227.133; };
file "slaves/192.168.227.arpa";
};
重启+自启动
[root@www slaves]# systemctl enable named
Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
3.从服务器配置DNS
[root@www slaves]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
添加如下
...
PEERDNS=no
DNS1=192.168.227.133
[root@www slaves]# vi /etc/resolv.conf
添加如下
...
nameserver 192.168.227.133
[root@www slaves]# systemctl restart network
4.从服务器验证
[root@www slaves]# cd /var/named/slaves
[root@www slaves]# ll
total 8
-rw-r--r-- 1 named named 429 Jun 26 20:34 192.168.227.arpa
-rw-r--r-- 1 named named 374 Jun 26 20:36 linux.com.zone
[root@www slaves]# nslookup www.linux.com
Server: 192.168.227.133
Address: 192.168.227.133#53
Name: www.linux.com
Address: 192.168.227.133
[root@www slaves]# nslookup 192.168.227.133
133.227.168.192.in-addr.arpa name = mail.linux.com.
133.227.168.192.in-addr.arpa name = www.linux.com.
133.227.168.192.in-addr.arpa name = ns.linux.com.
安全的加密传输
域名解析服务是互联网基础设施中重要的一环,几乎所有的网络应用都 依赖于 DNS 才能正常运行。TSIG 主要是利用了密码编码的方式来保护区域信息的传输(Zone Transfer),即 TSIG 加密机制保 证了 DNS 服务器之间传输域名区域信息的安全性。
根据主从服务的配置继续加密的步骤
1.在主服务器中生成密钥
dnssec-keygen 命令用于生成安全的 DNS 服务密钥
[root@localhost ~]# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST master-slave
Kmaster-slave.+157+13535
[root@localhost ~]# ls -al Kmaster-slave.+157+13535.*
-rw-------. 1 root root 56 Jun 26 22:54 Kmaster-slave.+157+13535.key
-rw-------. 1 root root 165 Jun 26 22:54 Kmaster-slave.+157+13535.private
[root@localhost ~]# cat Kmaster-slave.+157+13535.private
Private-key-format: v1.3
Algorithm: 157 (HMAC_MD5)
Key:
wbIh3jp95v4Vpc5WrkGX9w==
Bits: AAA=
Created: 20230627055458
Publish: 20230627055458
Activate: 20230627055458
2.主服务器中创建密钥验证文件
[root@localhost ~]# cd /var/named/chroot/etc/
[root@localhost etc]# vim transfer.key
key "master-slave" {
algorithm hmac-md5;
secret "
wbIh3jp95v4Vpc5WrkGX9w==
";
};
[root@localhost ~]# chown root:named transfer.key
[root@localhost etc]# chmod 640 transfer.key
[root@localhost etc]# ln transfer.key /etc/transfer.key
3.开启并加载 Bind 服务的密钥验证功能
[root@localhost etc]# vim /etc/named.conf
添加如下命令
include "/etc/transfer.key";
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
allow-transfer { key master-slave; };
...
[root@localhost etc]# systemctl restart named
4.配置从服务器
与主服务器配置一样步骤
[root@localhost ~]# cd /var/named/chroot/etc/
[root@localhost etc]# vim transfer.key
key "master-slave" {
algorithm hmac-md5;
secret "
wbIh3jp95v4Vpc5WrkGX9w==
";
};
[root@localhost ~]# chown root:named transfer.key
[root@localhost etc]# chmod 640 transfer.key
[root@localhost etc]# ln transfer.key /etc/transfer.key
[root@www etc]# vim /etc/named.conf
在截图位置添加截图下的命令
include "/etc/transfer.key";
...
server 192.168.227.133
{
keys { master-slave; };
};
6.从服务器验证是否可以同步
[root@www etc]# rm -rf /var/named/slaves/*
[root@www etc]# ls /var/named/slaves/
[root@www etc]# systemctl restart named
[root@www etc]# ls /var/named/slaves/
192.168.227.arpa linux.com.zone
部署缓存服务器
DNS 缓存服务器(Caching DNS Server)是一种不负责域名数据维护的 DNS 服务器。缓存服务器就是把用户经常使用到的域名与 IP 地址的解析记录保存在主机本地,从而提 升下次解析的效率。
1.在主服务器上添加网卡
首先给主服务器添加一个外网网卡(桥接)
添加完毕后通过ifconfig命令会出现如下情况
ens36: flags=4099 mtu 1500
ether 00:0c:29:24:7e:75 txqueuelen 1000 (Ethernet)
RX packets 4 bytes 519 (519.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
这个时候我们用如下命令
[root@localhost ~]# ifconfig ens36 192.168.1.100 up
然后再查看
ens36: flags=4099 mtu 1500
inet 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
ether 00:0c:29:24:7e:75 txqueuelen 1000 (Ethernet)
RX packets 4 bytes 519 (519.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
2.在主服务器 bind 服务程序的主配置文件中添加缓存转发参数
[root@localhost ~]# vim /etc/named.conf
...
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
forwarders { 221.130.33.60; };
...
添加的ip地址是北京市公共的DNS服务ip,可以通过https://dns.jiayongluyou.com/cx/1465.html查询到
3.重启 DNS 服务
在主、从服务器上的 DNS 服务器地址参数修改为 DNS 缓存服务器的 IP 地址192.168.227.133
[root@www ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
添加如下:
DNS1=192.168.227.133
如果之前的实验还没重置应该都是有的
[root@www ~]# systemctl start NetworkManager
[root@www ~]# nslookup www.linux.com
Server: 192.168.227.133
Address: 192.168.227.133#53
Name: www.linux.com
Address: 192.168.227.133
分离解析技术
1.主服务器删掉如下命令
[root@localhost ~]# vim /etc/named.conf
zone "." IN {
type hint;
file "named.ca";
};
2.编辑区域配置文件
[root@localhost ~]# vim /etc/named.rfc1912.zones
清空并把如下命令复制粘贴
acl "china" { 192.168.227.133/24; };
acl "american" { 192.168.1.100/24;};
view "china"{
match-clients { "china"; };
zone "linux.com" {
type master;
file "linux.com.china";
};
};
view "american" {
match-clients { "american"; };
zone "linux.com" {
type master;
file "linux.com.american";
};
};
3.建立数据配置文件
cd /var/named
cp -a named.localhost linux.com.china
cp -a named.localhost linux.com.american
vi linux.com.china
$TTL 1D
@ IN SOA linux.com. root.linux.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.linux.com.
ns IN A 192.168.227.133
www IN A 192.168.227.133
vi linux.com.american
$TTL 1D
@ IN SOA linux.com. root.linux.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.linux.com.
ns IN A 192.168.1.100
www IN A 192.168.1.100
4.重新启动 named 服务程序
[root@localhost named]# systemctl restart named
5.验证
将客户端主机(Windows 系统或 Linux 系统均可)的 IP 地址分别设置为 192.168.227.100和192.168.1.1,将 DNS 地址分别设置为服务 器主机的两个 IP 地址,然后访问相关地址。
[root@localhost named]# nslookup www.linux.com
最后这一步实在是拖太久了,还还需要重置虚拟机,我并没有实现成功,但是基本配置都是对的,如果有什么问题可以评论区留言
结语
简问简答
1.DNS 技术提供的三种类型的服务器分别是什么?
答:DNS 主服务器、DNS 从服务器与 DNS 缓存服务器。
2.DNS 服务器之间传输区域数据文件时,使用的是递归查询还是迭代查询?
答:DNS 服务器之间是迭代查询,用户与 DNS 服务器之间是递归查询。
3.在 Linux 系统中使用 Bind 服务程序部署 DNS 服务时,为什么推荐安装 chroot 插件?
答:能有效地限制 Bind 服务程序仅能对自身的配置文件进行操作,以确保整个服务器的 安全。
4.在 DNS 服务中,正向解析和反向解析的作用是什么?
答:正向解析是将指定的域名转换为 IP 地址,而反向解析则是将 IP 地址转换为域名。正向解析模式更为常用。
5.是否可以限制使用 DNS 域名解析服务的主机?如何限制?
答:是的,修改主配置文件中第 17 行的 allow-query 参数即可。
6.部署 DNS 从服务器的作用是什么?
答:部署从服务器可以减轻主服务器的负载压力,还可以提升用户的查询效率。
7.当用户与 DNS 服务器之间传输数据配置文件时,是否可以使用 TSIG 加密机制来确保文件 内容不被篡改?
答:不能,TSIG 加密机制保障的是 DNS 服务器与 DNS 服务器之间迭代查询的安全。
8.部署 DNS 缓存服务器的作用是什么?
答:DNS 缓存服务器把用户经常使用到的域名与 IP 地址的解析记录保存在主机本地,从而提升下次解析的效率。一般用于经常访问某些固定站点而且对这些网站的访问速度有较 高要求的企业内网中,但实际的应用并不广泛。
9. DNS 分离解析技术的作用是什么?
答:可以让位于不同地理范围内的读者通过访问相同的网址,而从不同的服务器获取到相同的数据,以提升访问效率。