Linux——DNS(正向解析+反向解析+多域配置+主从配置)


一、DNS概念

1. 什么是DNS

DNS(domain name system ) 域名管理系统

域名:
由特定的格式组成,用来表示互联网中某一台计算机或者计算机组的名称,能够使人更方便的访问互联网,而不用记住能够被机器直接读取的IP地址。

计算机到IP地址,互联网中的计算机都是通过IP地址进行互相访问的,但是由于ip地址太过复制不方便记忆。就用域名来代替IP实现计算机的访问。
从域名经过DNS服务器的转换变成IP地址

2. DNS的正向解析

域名的正向解析:将域名转换为ip地址
将主机域名转换为对应的IP 地址,以便网络程序能够通过主机域名访问到对应的服务器主机

3. DNS的反向解析

域名的反向解析:将IP转换为对应的域名
将主机的IP地址转换为对应的域名,以便网络(服务)程序能够通过IP地址查询到主机的域名

4. DNS的结构

域名:www.baidu.com
DNS结构:www.baidu.com. => 从右向左解析

在这里插入图片描述

1)根域名(.)

  • 在整个DNS系统的最上方一定是.(小数点)这个DNS服务器称为root,就叫根域
  • 根域:全世界只有13台。1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本。

2)一级域名

  • .com: 商业公司

  • .net :互联网公司

  • .edu :教育(中小学、高中、大学…)

  • .gov :政府

  • .io :存储设备,redis

  • .cn :中国域名(国家域)

3)二级域名

说法不一样,有些可能说baidu.com是一级域名也有的说,www.baidu.com才是二级域名

  • qq.com.
  • baidu.com.
  • google.com

5. DNS工作原理

6. dig工具

dig工具可以用来查看dns的解析过程
安装命令: yum install bind-utils -y

  • 追踪DNS的解析过程:dig +trace [域名]
[root@samba ~]# dig -trace www.baidu.com
;; Warning, ignoring invalid type race

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> -trace www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21383
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.baidu.com.			IN	A

;; ANSWER SECTION:
www.baidu.com.		564	IN	CNAME	www.a.shifen.com.
www.a.shifen.com.	149	IN	A	183.232.231.174 #ip1
www.a.shifen.com.	149	IN	A	183.232.231.172 #ip2

;; Query time: 9 msec
;; SERVER: 8.8.8.8#53(8.8.8.8) #DNS服务器
;; WHEN: Mon Jul 18 21:27:36 CST 2022
;; MSG SIZE  rcvd: 90

[root@samba ~]# 

  • 正向解析:dig [域名]
  • 反向解析:dig -x [ip]

二、DNS服务器的搭建

1. DNS服务器软件介绍(Bind)

DNS 的域名解析都是 udp/53 , 主从之间的**数据传输默认使用tcp/53

DNS服务器端软件:

Bind是一款开放源码的DNS服务器软件,Bind由美国加州大学Berkeley(伯克利)分校开发和维护的,全名为Berkeley Internet Name Domain它是目前世界上使用最为广泛的DNS服务器软件,支持各种unix平台和windows平台。BIND现在由互联网系统协会(Internet Systems Consortium)负责开发与维护。

2. 环境准备

在这里插入图片描述

三台LInux主机

主机名ip作用
client192.168.44.150client客户端,用来测试dns
dns192.168.44.151dns服务器,用来实现域名解析
web192.168.44.152web服务器,用于搭建内部web服务

关闭防火墙和SELinux
命令:systemctl stop firewalld
systemctl disable firewalld

关闭SELinux
命令:setenforce 0
修改vim /etc/selinux/config
SELINUX=disabled

3. 安装DNS软件

在dns机器上:yum install bind -y

查看软件是否安装成功

[root@dns ~]# rpm -q bind
bind-9.11.4-26.P2.el7_9.9.x86_64

查看已经安装的软件的文件列表
命令:rpm -ql bind

# rpm -ql bind
# 日志轮转文件
/etc/logrotate.d/named
# 配置文件目录
/etc/named
# 主配置文件
/etc/named.conf
# zone文件,定义域
/etc/named.rfc1912.zones
# 服务管理脚本
/usr/lib/systemd/system/named.service
# 二进制程序文件
/usr/sbin/named
# 检测配置文件
/usr/sbin/named-checkconf
# 检测域文件
/usr/sbin/named-checkzone
# 根域服务器
/var/named/named.ca
# 正向解析区域文件模板
/var/named/named.localhost
# 反向解析区域文件模板
/var/named/named.loopback
# dns服务器下载文件的默认路径
/var/named/slaves
# 进程pid
/var/rum/named

三、 DNS正向解析配置

在这里插入图片描述

  • /etc/named.conf主要配置访问权限控制(哪些IP或哪些主机可以访问DNS服务器)
    - /etc/named.rfc1912.zones主要定义域名如何解析(正向解析),解析到具体哪个IP地址

1)对配置文件进行备份

为了防止配置文件被改坏,我们先对named.conf以及named.rfc1912.zones配置文件进行备份。

[root@dns etc]# cp /etc/named.conf /etc/named.conf.bak
[root@dns etc]# cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bak

2)修改named.conf主配置文件

修改配置文件:vim /etc/named.conf

在这里插入图片描述
修改第13行和21行,添加any;

# 定义监听端口、监听方式、允许查询来源
options {
// 定义监听方式  any代表全网监听
        listen-on port 53 { 127.0.0.1;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     { localhost;any; };

3)修改子配置文件

子配置文件named.rfc1912.zones定义DNS服务器管理哪些领域
zones子配置文件(域名应该指向哪个IP地址)
命令:vim /etc/named.rfc1912.zones

在文件末尾添加

# 正向 ,表示linux.com这个域名从linux.com.zone这个配置文件中获取ip
zone "linux.com" IN {
         type master;
         file "linux.com.zone";
         allow-update { none; };
 };

在vim 中
:13, 17 co 42,
表示把13到17行复制到42行以后

在这里插入图片描述

4)定义正向解析

/var/named目录创建test.hhy.zone文件定义正向解析

[root@dns etc]# cd /var/named/
[root@dns named]# cp -p named.localhost linux.com.zone

-p表示保留文件的原有属性

5)编辑test.hhy.zone文件,定义域名的指向

vim test.hhy.zone
在最后一行添加:www A web主机ip
在这里插入图片描述
zone文件的格式说明

zone文件详解
# $TTL  缓存的生存周期
# @ = zonename = test.hhy  当前域
# IN  互联网
# SOA 开始授权
# NS  dns服务端	nameserver
# A   ipv4 正向
# AAAA IPV6
# CNAME 别名
# MX  邮件交互记录  5 数字代表优先级 数字越小优先级越高

# 0       ; serial    更新序列号	
# 1D      ; refresh   更新间隔(从服务器下载数据)
# 1H      ; retry     失败重试
# 1W      ; expire    区域文件的过期时间
# 3H )    ; minimum   缓存的最小生存周期

# D Day(天)、H Hour(时)、W Week(周)

6)检查named.conf与zones文件

命令:named-checkconf /etc/named.conf
named-checkconf /etc/named.rfc1912.zones
只有没有错误提示就说明没问题

检查test.hhy.zone文件
注意:named-checkzone 格式要求写两遍文件

[root@dns named]# cd /var/named/
[root@dns named]# named-checkzone test.hhy.zone test.hhy.zone 
zone test.hhy.zone/IN: loaded serial 0
OK

7)启动DNS服务(named)

命令:systemctl restart named
通过命令:ss -tnlp | grep named
可以看到named服务器的端口号为53

在这里插入图片描述

1. Web服务搭建

在Web服务器上安装httpd并启动服务

命令:yum -y install httpd
启动服务:systemctl start httpd

[root@web html]# touch /var/www/html/index.html
[root@web html]# echo "<h1>DNS测试</h1>" >> /var/www/html/index.html

2. 测试DNS服务器的正向解析

1)添加DNS服务器

临时添加
命令:echo 'nameserver 192.168.44.151' > /etc/resolv.conf

永久添加
vim /etc/sysconfig/network-scripts/ifcfg-ens33
DNS=192.168.44.151

2)使用nslookup检测正向解析是否生效

安装:yum install bind-utils -y

测试

[root@client ~]# clear
[root@client ~]# nslookup www.linux.com
Server:		192.168.44.151
Address:	192.168.44.151#53

Name:	www.linux.com
Address: 192.168.44.152

3)使用elinks命令行浏览器或curl来实现访问

安装:yum install elinks -y

输入:elinks

输入配置文件里的域名

在这里插入图片描述

就会出现web服务器/var/www/html/index.html的信息

在这里插入图片描述

或者直接使用cutl命令

curl http://www.linux.com

三、DNS反向解析

示例:把web服务器192.168.44.152这个IP地址通过DNS服务器指向www.linux.com域名
在DNS服务器上:

1)开启网络的访问控制权限

vim /etc/named.conf

在这里插入图片描述

2)在zones文件中定义zone文件

命令:vim /etc/named.rfc1912.zones
注意:这里是把web主机的ip192.168.44.152反过来写的,且没有写最后一个主机号位置

这个ip通过192.168.44.zone这个配置文件来获取域名

zone "44.168.192.in-addr.arpa" IN {
          type master;
          file "192.168.44.zone";
          allow-update { none; };
 };

3)复制named.loopback文件

cd /var/named进入到DNS zone配置文件目录,复制named.loopback文件

[root@dns named]# cd /var/named/
[root@dns named]# cp -p named.loopback 192.168.44.zone

4)编辑192.168.44.zone文件

vim 192.168.44.zone

$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
        AAAA    ::1
        PTR     localhost.
# 增加一条反向解析:把192.168.44.152通过PTR解析成www.linux.com
152     PTR     www.linux.com

PTR:反向解析

在这里插入图片描述

5)检查配置文件和测试

在DNS服务器上测试

[root@dns named]# named-checkconf /etc/named.conf
[root@dns named]# named-checkconf /etc/named.rfc1912.zones
[root@dns named]# cd /var/named
[root@dns named]# named-checkzone 192.168.44.zone 192.168.44.zone
zone 192.168.44.zone/IN: loaded serial 0
OK
[root@dns named]# 

再重启named服务
命令:systemctl restart named

接着在client主机上测试

# 将dns服务器的ip设置为测试机的DSN
[root@client ~]# echo 'nameserver 192.168.44.151' > /etc/resolv.conf
[root@client ~]# nslookup 192.168.44.152
152.44.168.192.in-addr.arpa	name = www.linux.com.44.168.192.in-addr.arpa.

[root@client ~]# 

四、多域DNS服务器搭建

需求:搭建一个DNS服务器,可以同时解析www.testdns.netwww.testlinux.cc

域名ip地址
www.testdns.net192.168.44.152
www.testlinux.com192.168.44.152

也就是无论是通过www.testdns.net还是bbs.testlinux.com来访问,都是访问到192.168.44.152这台Web主机

1. 修改named.conf配置文件

在dns服务器上修改
vim /etc/named.rfc1912.zones
修改配置文件来设置网络访问权限

 zone "44.168.192.in-addr.arpa" IN {
          type master;
          file "192.168.44.zone";
          allow-update { none; };
 };

2. 添加域

vim /etc/named.rfc1912.zones

添加testdnstestlinux

zone "testdns.net" IN {
         type master;
         file "testdns.net.zone";
         allow-update { none; };
 };
 
 zone "testlinux.com" IN {
         type master;
         file "testlinux.com.zone";
         allow-update { none; };
 };

3. 创建配置文件

进入/var/named目录,复制named.localhost
就是创建testdnstestlinux这两个域的配置文件

[root@dns ~]# cd /var/named/
[root@dns named]# cp -P named.localhost testdns.net.zone
[root@dns named]# cp -P named.localhost testlinux.cc.zone

4. 编写配置文件

编写 testdns.net.zonetestlinux.cc.zone这两个配置文件

vim /var/named/testdns.net.zone
在配置文件的末尾添加

www     A       192.168.44.152

在这里插入图片描述
vim /var/named/testlinux.com.zone

bbs     A       192.168.44.152

在这里插入图片描述

5. 检测配置文件

检测配置文件

# named-checkconf /etc/named.conf

# named-checkconf /etc/named.rfc1912.zones

# cd /var/named

# named-checkzone testdns.net.zone testdns.net.zone 

# named-checkzone testlinux.cc.zone testlinux.com.zone

重启named服务
命令:systemctl restart named

6. 连接测试

在测试机clinet上测试

cd /etc/sysconfig/network-scripts/修改对应网卡的DNS为
我们测试的额DNS服务器的IP192.168.44.151

通过命令进行正向解析

测试www.testdns.net

[root@client ~]# nslookup www.testdns.net
Server:		192.168.44.151
Address:	192.168.44.151#53

Name:	www.testdns.net
Address: 192.168.44.152

测试bbs.testlinux.com

[root@client ~]# nslookup bbs.testlinux.com
Server:		192.168.44.151
Address:	192.168.44.151#53

Name:	bbs.testlinux.com
Address: 192.168.44.152

五、NTP服务器搭建

虽然通过ntpdate cn.ntp.org.cn

虽然以上方式,可以实现对时间的校对!但是由于需要连接外网,其同步需要消耗一定的时间,那有没有更好的解决办法呢?

1. 环境准备

一台NTP时间服务器

主机名ip作用
ntp192.168.44.153NTP内网时间服务器

安装ntp服务软件
yum install ntp -y

2. 更改配置文件

更改配置文件,开启ntp服务
vim /etc/ntp.conf

 13 restrict 127.0.0.1
 14 restrict ::1
 # 在15行手动添加192.168.44.0网段,表示范围为192.168.44.1 ~ 192.168.44.254
 15 restrict 192.168.44.0 mask 255.255.255.0

3. 关闭防火墙和SELInux

[root@ntp ~]# setenforce 0
[root@ntp ~]# systemctl stop firewalld

3. 启动ntpd服务

同步网络时间命令:ntpdate cn.ntp.org.cn
启动服务:systemctl restart ntpd

到此NTP时间服务器配置完毕,以后所有的计算机都可以直接使用ntpdate同步此NTP服务器
通过命令:ntpdate 192.168.44.153
命令+ntp主机ip就可以在内网同步ntpdate时间了

[root@web ~]# date -s 2002-03-04
Mon Mar  4 00:00:00 CST 2002
[root@web ~]# date -s 08:30
Mon Mar  4 08:30:00 CST 2002
[root@web ~]# date
Mon Mar  4 08:30:05 CST 2002
[root@web ~]# ntpdate 192.168.44.153
20 Jul 10:03:55 ntpdate[7338]: step time server 192.168.44.153 offset 643080786.390525 sec
[root@web ~]# date
Wed Jul 20 10:04:05 CST 2022
[root@web ~]# 

除此以外,我们还可以使用计划任务,定期进行时间的同步(针对所有的客户端)
命令:crontab -e

# 表示每2两小时从 192.168.44.153 这台ntp服务器同步一次时间
*/2 * * * * /usr/sbin/ntpdate 192.168.44.153 &>/dev/null

六、DNS主从部署

1. 思路

主从部署的核心思路:

  1. master和slave的系统时间保持一致
  2. slave服务器上安装相应的软件(系统版本、软件版本保持一致)
  3. 根据需求修改相应的配置文件(master和slave都应该去修改)
  4. 主从同步的核心是slave同步master上的区域文件(zone文件)

2. 环境准备

准备一台服务器

主机名ip作用
dns192.168.44.151dns主服务器
slave192.168.44.160dns 从服务器

配置静态ip+关闭防火墙和SELInux

3. 更改主DNS服务器配置

更改主dns服务器,允许其他的从服务器下载同步资源
vim /etc/named.conf

在第15添加一行allow-transfer {192.168.44.160; }运行从服务器IP地址过来同步资源

 12 options {
 13         listen-on port 53 { 127.0.0.1;any; };
 14         listen-on-v6 port 53 { ::1; };
 15         allow-transfer {192.168.44.160; };
 16         directory       "/var/named";
 17         dump-file       "/var/named/data/cache_dump.db";
 18         statistics-file "/var/named/data/named_stats.txt";
 19         memstatistics-file "/var/named/data/named_mem_stats.txt";
 20         recursing-file  "/var/named/data/named.recursing";
 21         secroots-file   "/var/named/data/named.secroots";
 22         allow-query     { localhost;any; };

在这里插入图片描述

重启服务:systemctl restart named

4. 从服务器配置

在这里插入图片描述

安装DNS软件:yum -y install bind

修改配置文件:

 12 options {
 13         listen-on port 53 { 127.0.0.1;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     { localhost;any; };

在这里插入图片描述

修改:vim /etc/named.rfc1912.zones

在43到53行添加下面的配置文件

 43 zone "testdns.net" IN {
 44         type slave;
 45         file "slaves/testdns.net";
 46         masters { 192.168.44.151; };
 47 };
 48 
 49 zone "testlinux.com" IN {
 50         type slave;
 51         file "slaves/testlinux.com";
 52         masters { 192.168.44.151; };
 53 };

5. 测试

检测配置文件是否有问题
命令:named-checkconf /etc/named.rfc1912.zones

重启服务:systemctl restart named

在Client客户端,把Slave从服务器的IP设置为DNS

vim /etc/sysconfig/network-scripts/ifcfg-ens33
在这里插入图片描述
重启网卡systemctl restart network

测试域名

[root@client ~]# nslookup www.testdns.net
Server:		192.168.44.160
Address:	192.168.44.160#53

Name:	www.testdns.net
Address: 192.168.44.152

[root@client ~]# nslookup bbs.testlinux.com
Server:		192.168.44.160
Address:	192.168.44.160#53

Name:	bbs.testlinux.com
Address: 192.168.44.152

[root@client ~]# 

  • 8
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: DNS反向解析配置是指将IP地址转换为域名的过程。在Linux系统中,可以通过修改/etc/named.conf文件来配置DNS反向解析。具体步骤如下: 1. 打开/etc/named.conf文件,找到zone "..127.in-addr.arpa"节点。 2. 在该节点下添加以下内容: zone "x.x.x.in-addr.arpa" { type master; file "x.x.x.rev"; }; 其中,x.x.x为你的IP地址的反向域名,如192.168.1.1的反向域名为1.1.168.192.in-addr.arpa。 3. 创建反向域名文件x.x.x.rev,文件内容如下: $TTL 86400 @ IN SOA ns1.example.com. admin.example.com. ( 2018010101 ; Serial 360 ; Refresh 180 ; Retry 604800 ; Expire 86400 ; Minimum TTL ) IN NS ns1.example.com. IN NS ns2.example.com. 1 IN PTR hostname.example.com. 其中,@表示当前域名,IN表示Internet,SOA表示Start of Authority,NS表示Name Server,PTR表示Pointer,hostname.example.com为你的主机名。 4. 保存文件并重启named服务。 以上就是Linux DNS反向解析配置的步骤。 ### 回答2: DNS是域名系统的缩写,它是一种用于将域名转换为IP地址的网络协议。反向解析DNS的一种基本功能,它允许通过IP地址解析出相应的域名。Linux系统也支持反向解析,下面我们就来介绍一下如何配置反向解析。 首先,在Linux系统中反向解析配置需要通过BIND软件实现,所以我们需要先安装BIND。如果已经安装了该软件,则可以直接开始配置。 在配置文件中,我们需要配置反向解析的操作,由于反向解析是根据IP地址来解析出相应的域名,所以我们需要首先绑定IP地址和域名之间的关系。这个配置是在Zone文件中完成的,我们可以在该文件的末尾添加以下配置: $TTL86400 @ IN SOA ns1.example.com. hostmaster.example.com. ( 2001062501 ;serial 21600 ; refresh after 6 hours 3600 ; retry after 1 hour 604800 ; expire after 1 week 86400 ) ; minimum TTL of 1 day IN NS ns1.example.com. IN NS ns2.example.com. 1 IN PTR mail.example.com. 2 IN PTR www.example.com. 3 IN PTR ftp.example.com. 上述配置中,$TTL用于配置缓存时间,IN指定了记录类型,SOA指定了主机的开始授权,NS指定了域名服务器,PTR指定了相应的IP地址,后面紧跟的则是对应的域名。 配置完成之后,我们需要将DNS服务重新启动,使其生效即可完成反向解析配置。 总的来说,反向解析配置需要先绑定IP地址和域名之间的关系,然后在Zone文件中添加相应的配置信息,最后重新启动DNS服务使其生效即可完成配置。该功能可以帮助网络管理员更好地管理和维护网络,保障网络的稳定性和安全性。 ### 回答3: DNS反向解析是指将IP地址解析为域名的过程。在Linux系统中,配置DNS反向解析需要以下步骤: 1. 创建反向解析区域文件 在DNS服务器上创建反向解析区域文件,比如将192.168.0.x地址段映射到域名example.com。 2. 配置反向解析区域文件 在反向解析区域文件中设置PTR记录,用于将IP地址解析为域名。 例如: $TTL 86400 @ IN SOA dns.example.com. admin.example.com. ( 2021021501 ;serial 3600 ;refresh 1800 ;retry 604800 ;expire 86400 ;default_ttl ) @ IN NS dns.example.com. x.0.168.192.in-addr.arpa. IN PTR example.com. 3. 配置DNS服务器DNS服务器上添加反向解析区域文件。编辑named.conf文件,添加以下配置: zone "0.168.192.in-addr.arpa" IN { type master; file "reverse.example.com.zone"; allow-update { none; }; }; reload DNS服务器以使反向解析生效。 4. 测试反向解析 最后,可以使用dig命令来测试反向解析是否生效。 例如: $ dig -x 192.168.0.x 如果反向解析设置正确,dig命令会返回IP地址所对应的域名。 总之,配置Linux DNS反向解析需要创建反向解析区域文件,配置反向解析区域文件,配置DNS服务器和测试反向解析。正确配置反向解析可以提高DNS服务器的准确性和弹性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱敲代码的三毛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值