开发者

Linux系统之dns域名解析全过程

开发者 https://www.devze.com 2025-04-08 10:29 出处:网络 作者: Martin_wjc
目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置2、测试dns正常工作3、配置反向解析4、dns复制三、DNS查询类型四、hosts文件的使用总结一、dns域名解析介绍
目录
  • 一、dns域名解析介绍
    • 1、DNS核心概念
      • 1.1 区域 zone
      • 1.2 记录 record
  • 二、DNS服务的配置
    • 1、正向解析的配置
      • 2、测试dns正常工作
        • 3、配置反向解析
          • 4、dns复制
          • 三、DNS查询类型
            • 四、hosts文件的使用
              • 总结

                一、dns域名解析介绍

                dns,应用层协议

                • 作用:域名解析
                • 正向解析,将主机名解析成对应的IP地址
                • 反向解析,将IP地址解析成对应的主机名

                涉及的软件

                • 软件: bind
                • 服务: named
                • 端口: 53/udp (提供解析服务)、53/tcp(提供多个DNS间数据同步)

                1、DNS核心概念

                Linux系统之dns域名解析全过程

                1.1 区域 zone

                正向区域

                • 一般就是个二级域名, linux.com

                反向区域

                • x.x.x.in-addr.arpa
                • 10.168.192.in-addr.arpa

                1.2 记录 record

                A记录, 标识主机名和IP地址的对应关系

                www.jd.com		A		123.45.6.78

                PTR记录, 标识IP地址和主机名的对应关系

                1.1.1.1		PTR		test.linux.com

                NS记录, 标识DNS服务器自身, 必须配合A记录

                		NS  ns1.jd.com
                ns1.jd.com		A		2.2.2.2

                MX记录, 标识邮件服务器, 必须配合A记录

                // 数字5:优先级,数字越小优先级越高
                				MX  5  mail1.linux.com
                mail1.linux.com		A		3.3.3.3
                				MX  10  mail2.linux.com
                mail2.linux.com		A		4.4.4.4

                CNAME记录, 别名记录

                www.baidu.com		CNAME		www.a.shifen.com

                二、DNS服务的配置

                1、正向解析的配置

                • 关闭selinux,防火墙
                [root@node01 ~]# getenforce 
                Disabled
                [root@nodphpe01 ~]# systemctl status firewalld.service 
                ● firewalld.service
                   Loaded: masked (/dev/null; bad)
                   Active: inactive (dead)
                • 安装bind软件
                [root@node01 ~]# yum install bind -y 
                
                [root@node01 ~]# rpm -q bind
                bind-9.11.4-26.P2.el7_9.16.x86_64
                • 修改dns主配置文件, named.conf
                [root@node01 ~]# ls -l /etc/named.conf 
                -rw-r----- 1 root named 1806 Jun 11 22:41 /etc/named.conf
                
                [root@node01 ~]# vim /etc/named.conf 
                listen-on port 53 { any; };				// 定义dns服务启动的地址、端口
                directory       "/var/named";			// 记录文件的存放位置 
                
                allow-query     { any; };				  // 定义dns服务可以为哪些主机提供解析
                ……………………
                include "/etc/named.rfc1912.zones";
                • 创建区域
                [root@node01 ~]# vim /etc/named.rfc1912.zones 
                
                zone "linux.com" IN {
                    type master;  						// 指定区域类型为master
                    file "linux.com.zone";		// 指定存放记录的文件名
                };
                • 创建记录
                [root@node01 ~]# cp -a /var/named/named.localhost /var/named/linux.com.zone
                
                -a:保留文件权限
                [root@node01 ~]# cat /var/named/linux.com.zone
                $TTL 1D
                @	IN SOA	linux.com. 454452000.qq.com. (
                					0	; serial
                					1D	; refresh
                					1H	; retry
                					1W	; expire
                					3H )	; minimum
                	NS ns01.linux.com.
                ns01	A	192.168.140.10
                www	A	192.168.10.1
                file	A	192.168.10.9
                	MX 5 mail.linux.com.
                mail	A	192.168.10.7
                • 启动named服务
                [root@node01 ~]# systemctl enable --now named 
                Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
                [root@node01 ~]# 
                [root@node01 ~]# ps -elf | grep named 
                5 S named      2911      1  0  80   0 - 171176 sigsus 11:20 ?       00:00:00 /usr/sbin/named -u named -c /etc/named.conf
                0 S root       2932   1268  0  80   0 - 28203 pipe_w 11:21 pts/0    00:00:00 grep --color=auto named
                [root@node01 ~]# 
                [root@node01 ~]# 
                [root@node01 ~]# netstat -tunlp | grep named 
                tcp        0      0 127.0.0.1:953         www.devze.com  0.0.0.0:*               LISTEN      2911/named          
                tcp6       0      0 ::1:953                 :::*                    LISTEN      2911/named          
                tcp6       0      0 ::1:53                  :::*                    LISTEN      2911/named          
                udp6       0      0 ::1:53                  :::*                                2911/named    

                2、测试dns正常工作

                C:\Users\admin>nslookup
                默认服务器:  public1.alidns.com
                Address:  223.5.5.5
                
                > server 192.168.140.10
                默认服务器:  [192.168.140.10]
                Address:  192.168.140.10
                
                >
                > ns01.linux.com
                服务器:  [192.168.140.10]
                Address:  192.168.140.10
                
                名称:    ns01.linux.com
                Address:  192.168.140.10
                
                > www.linux.com
                服务器:  [192.168.140.10]
                Address:  192.168.140.10
                
                名称:    www.linux.com
                Address:  192.168.10.1
                
                > file.linux.com
                服务器:  [192.168.140.10]
                Address:  192.168.140.10
                
                名称:    file.linux.com
                Address:  192.168.10.9
                
                > mail.linux.com
                服务器:  [192.168.140.10]
                Address:  192.168.140.10
                
                名称:    mail.linux.com
                Address:  192.168.10.7
                
                > 192.168.10.7
                服务器:  [192.168.140.10]
                Address:  192.168.140.10
                
                > exit

                3、配置反向解析

                • 创建反向解析区域
                [root@node01 ~]# vim /etc/named.rfc1912.zones 
                
                zone "10.168.192.in-addr.arpa" IN {
                    type master;
                    file "192.168.10.zone";
                };
                • 创建反向区域对应的记录文件
                [root@node01 ~]# cd /var/named/
                [root@node01 named]# cp -a linux.com.zone 192.168.10.zone
                [root@node01 named]# cat 192.168.10.zone
                $TTL 1D
                @	IN SOA	linux.com. 454452000.qq.com. (
                					0	; serial
                					1D	; refresh
                					1H	; retry
                					1W	; expire
                					3H )	; minimum
                	NS ns01.linux.com.
                ns01	A	192.168.140.10
                1	PTR	www.linux.com.
                9	PTR	file.linux.com.
                7	PTR	mail.linux.com.
                • 重启named服务,测试
                [root@node01 ~]# systemctl restart named
                C:\Users\admin>nslookup
                默认服务器:  public1.alidns.com
                Address:  223.5.5.5
                
                > server 192.168.140.10
                默认服务器:  [192.168.140.10]
                Address:  192.168.140.10
                
                > 192.168.10.9
                服务器:  [192.168.140.10]
                Address:  192.168.140.10
                
                名称:    file.linux.com
                Address:  192.168.10.9
                
                > 192.168.10.7
                服务器:  [192.168.140.10]
                Address:  192.168.140.10
                
                名称:    mail.linux.com
                Address:  192.168.10.7
                
                > exit

                4、dns复制

                作用:保证多个dns间的数据同步,实现备份

                环境描述

                • 192.168.140.10 ns01.linux.com 主DNS
                • 192.168.140.11 ns02.linux.com 从DNS
                • 从DNS安装bind软件
                [root@localhost ~]# yum install -y bind
                • 修改主DNS上区域配置文件
                [root@node01 ~]# vim /etc/named.rfc1912.zones 
                
                zone "linux.com" IN {
                    type master;
                    allow-transfer { 从DNS服务器地址; };	www.devze.com	// 允许哪个从来复制数据
                    file "linux.com.zone";
                };
                • 修改主DNS上记录文件
                [root@node01 ~]# vim /var/named/linux.com.zone 
                
                        NS ns01.linux.com.
                        NS ns02.linux.com.
                ns01    A       192.168.140.10
                ns02    A       192.168.140.11
                
                [root@node01 ~]# systemctl restart named
                • 修改从DNS的主配置文件
                [root@node01 ~]# vim /etc/named.conf 
                listen-on port 53 { any; };				
                allow-query     { any; };				 
                • 在从dns上创建和主dns一样的区域
                [root@localhost ~]# vim /etc/named.rfc1912.zones 
                
                zone "linux.com" IN {
                    type slave;			// 指定区域类型为slave从
                    masters { 主DNS服务器地址; };		
                    file "slaves/linux.com.zone";
                };
                • 启动从DNS服务,验证可以正常复制记录文件
                [root@localhost ~]# systemctl enable --now named
                [root@localhost ~]# 
                [root@localhost ~]# netstat -tunlp | grep named
                tcp        0      0 192.168.140.11:53       0.0.0.0:*               LISTEN      1475/named          
                tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      1475/named          
                tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      1475/named          
                tcp6       0      0 ::1:53                  :::*                    LISTEN      1475/named          
                tcp6       0      0 ::1:953                 :::*                    LISTEN      1475/named          
                udp        0      0 192.168.140.11:53       0.0.0.0:*                           1475/named          
                udp        0      0 127.0.0.1:53            0.0.0.0:*                           1475/named          
                udp6       0      0 ::1:53                  :::*                                1475/named          
                [root@localhost ~]# 
                [root@localhost ~]# ls /var/named/slaves/
                linux.com.zone
                
                [root@localhost ~]# file /var/named/slaves/linux.com.zone 
                /var/named/slaves/linux.com.zone: data
                • 验证使用从dns解析主机名
                C:\Users\admin>nslookup
                默认服务器:  public1.alidns.com
                Address:  223.5.5.5
                
                > server 192.168.140.11
                默认服务器:  [192.168.140.11]
                Address:  192.168.140.11
                
                > www.linux.com
                服务器:  [192.168.140.11]
                Address:  192.168.140.11
                
                名称:    www.linux.com
                Address:  192.168.10.1
                
                > mail.linux.com
                服务器:  [192.168.140.11]
                Address:  192.168.140.11
                
                名称:    mail.linux.com
                Address:  192.168.10.7
                • 验证数据同步

                主DNS修改记录,从DNS会根据记录文件中的序列号检测变化,同步复制数据

                [root@node01 ~]# vim /var/named/linux.com.zone
                添加一条记录,修改序列号
                 
                [root@node01 ~]# systemctl restart named
                
                验证使用从dns来解析变化的记录

                三、DNS查询类型

                递归查询

                • 只发送一次DNS请求,等待结果
                • 发生在客户端与DNS服务器daqpWwLW

                迭代查询

                • 发送多次DNS请求
                • 发生在DNS服务器间

                Linux系统之dns域名解析全过程

                四、hosts文件的使用

                保存主机名、IP地址对应关系

                • Linux
                [root@node01 ~]# cat /etc/hosts
                127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
                ::1         localhphpost localhost.localdomain localhost6 localhost6.localdomain6
                
                10.11.0.254	file.linux.com
                • Windows
                C:\Windows\System32\drivers\etc\hosts 
                • 主机域名解析的流程

                1、先找本地的DNS缓存

                2、再找hosts文件

                3、向网卡DNS服务器发送查询请求,经过多次迭代过程返回结果

                总结

                以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

                0

                精彩评论

                暂无评论...
                验证码 换一张
                取 消

                关注公众号