• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

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

    发布者: 娅水9213 | 发布时间: 2025-8-15 03:53| 查看数: 8| 评论数: 0|帖子模式

    一、dns域名解析介绍

    dns,应用层协议

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

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

    1、DNS核心概念



    1.1 区域 zone

    正向区域

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

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

    1.2 记录 record

    A记录, 标识主机名和IP地址的对应关系
    1. www.jd.com                A                123.45.6.78
    复制代码
    PTR记录, 标识IP地址和主机名的对应关系
    1. 1.1.1.1                PTR                test.linux.com
    复制代码
    NS记录, 标识DNS服务器自身, 必须配合A记录
    1.                 NS  ns1.jd.com
    2. ns1.jd.com                A                2.2.2.2
    复制代码
    MX记录, 标识邮件服务器, 必须配合A记录
    1. // 数字5:优先级,数字越小优先级越高
    2.                                 MX  5  mail1.linux.com
    3. mail1.linux.com                A                3.3.3.3
    4.                                 MX  10  mail2.linux.com
    5. mail2.linux.com                A                4.4.4.4
    复制代码
    CNAME记录, 别名记录
    1. www.baidu.com                CNAME                www.a.shifen.com
    复制代码
    二、DNS服务的配置


    1、正向解析的配置


    • 关闭selinux,防火墙
    1. [root@node01 ~]# getenforce
    2. Disabled
    3. [root@node01 ~]# systemctl status firewalld.service
    4. ● firewalld.service
    5.    Loaded: masked (/dev/null; bad)
    6.    Active: inactive (dead)
    复制代码

    • 安装bind软件
    1. [root@node01 ~]# yum install bind -y

    2. [root@node01 ~]# rpm -q bind
    3. bind-9.11.4-26.P2.el7_9.16.x86_64
    复制代码

    • 修改dns主配置文件, named.conf
    1. [root@node01 ~]# ls -l /etc/named.conf
    2. -rw-r----- 1 root named 1806 Jun 11 22:41 /etc/named.conf

    3. [root@node01 ~]# vim /etc/named.conf
    4. listen-on port 53 { any; };                                // 定义dns服务启动的地址、端口
    5. directory       "/var/named";                        // 记录文件的存放位置

    6. allow-query     { any; };                                  // 定义dns服务可以为哪些主机提供解析
    7. ……………………
    8. include "/etc/named.rfc1912.zones";
    复制代码

    • 创建区域
    1. [root@node01 ~]# vim /etc/named.rfc1912.zones

    2. zone "linux.com" IN {
    3.     type master;                                                  // 指定区域类型为master
    4.     file "linux.com.zone";                // 指定存放记录的文件名
    5. };
    复制代码

    • 创建记录
    1. [root@node01 ~]# cp -a /var/named/named.localhost /var/named/linux.com.zone

    2. -a:保留文件权限
    复制代码
    1. [root@node01 ~]# cat /var/named/linux.com.zone
    2. $TTL 1D
    3. @        IN SOA        linux.com. 454452000.qq.com. (
    4.                                         0        ; serial
    5.                                         1D        ; refresh
    6.                                         1H        ; retry
    7.                                         1W        ; expire
    8.                                         3H )        ; minimum
    9.         NS ns01.linux.com.
    10. ns01        A        192.168.140.10
    11. www        A        192.168.10.1
    12. file        A        192.168.10.9
    13.         MX 5 mail.linux.com.
    14. mail        A        192.168.10.7
    复制代码

    • 启动named服务
    1. [root@node01 ~]# systemctl enable --now named
    2. Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
    3. [root@node01 ~]#
    4. [root@node01 ~]# ps -elf | grep named
    5. 5 S named      2911      1  0  80   0 - 171176 sigsus 11:20 ?       00:00:00 /usr/sbin/named -u named -c /etc/named.conf
    6. 0 S root       2932   1268  0  80   0 - 28203 pipe_w 11:21 pts/0    00:00:00 grep --color=auto named
    7. [root@node01 ~]#
    8. [root@node01 ~]#
    9. [root@node01 ~]# netstat -tunlp | grep named
    10. tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      2911/named         
    11. tcp6       0      0 ::1:953                 :::*                    LISTEN      2911/named         
    12. tcp6       0      0 ::1:53                  :::*                    LISTEN      2911/named         
    13. udp6       0      0 ::1:53                  :::*                                2911/named   
    复制代码
    2、测试dns正常工作
    1. C:\Users\admin>nslookup
    2. 默认服务器:  public1.alidns.com
    3. Address:  223.5.5.5

    4. > server 192.168.140.10
    5. 默认服务器:  [192.168.140.10]
    6. Address:  192.168.140.10

    7. >
    8. > ns01.linux.com
    9. 服务器:  [192.168.140.10]
    10. Address:  192.168.140.10

    11. 名称:    ns01.linux.com
    12. Address:  192.168.140.10

    13. > www.linux.com
    14. 服务器:  [192.168.140.10]
    15. Address:  192.168.140.10

    16. 名称:    www.linux.com
    17. Address:  192.168.10.1

    18. > file.linux.com
    19. 服务器:  [192.168.140.10]
    20. Address:  192.168.140.10

    21. 名称:    file.linux.com
    22. Address:  192.168.10.9

    23. > mail.linux.com
    24. 服务器:  [192.168.140.10]
    25. Address:  192.168.140.10

    26. 名称:    mail.linux.com
    27. Address:  192.168.10.7

    28. > 192.168.10.7
    29. 服务器:  [192.168.140.10]
    30. Address:  192.168.140.10

    31. > exit
    复制代码
    3、配置反向解析


    • 创建反向解析区域
    1. [root@node01 ~]# vim /etc/named.rfc1912.zones

    2. zone "10.168.192.in-addr.arpa" IN {
    3.     type master;
    4.     file "192.168.10.zone";
    5. };
    复制代码

    • 创建反向区域对应的记录文件
    1. [root@node01 ~]# cd /var/named/
    2. [root@node01 named]# cp -a linux.com.zone 192.168.10.zone
    复制代码
    1. [root@node01 named]# cat 192.168.10.zone
    2. $TTL 1D
    3. @        IN SOA        linux.com. 454452000.qq.com. (
    4.                                         0        ; serial
    5.                                         1D        ; refresh
    6.                                         1H        ; retry
    7.                                         1W        ; expire
    8.                                         3H )        ; minimum
    9.         NS ns01.linux.com.
    10. ns01        A        192.168.140.10
    11. 1        PTR        www.linux.com.
    12. 9        PTR        file.linux.com.
    13. 7        PTR        mail.linux.com.
    复制代码

    • 重启named服务,测试
    1. [root@node01 ~]# systemctl restart named
    复制代码
    1. C:\Users\admin>nslookup
    2. 默认服务器:  public1.alidns.com
    3. Address:  223.5.5.5

    4. > server 192.168.140.10
    5. 默认服务器:  [192.168.140.10]
    6. Address:  192.168.140.10

    7. > 192.168.10.9
    8. 服务器:  [192.168.140.10]
    9. Address:  192.168.140.10

    10. 名称:    file.linux.com
    11. Address:  192.168.10.9

    12. > 192.168.10.7
    13. 服务器:  [192.168.140.10]
    14. Address:  192.168.140.10

    15. 名称:    mail.linux.com
    16. Address:  192.168.10.7

    17. > exit
    复制代码
    4、dns复制

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

    • 192.168.140.10 ns01.linux.com 主DNS
    • 192.168.140.11 ns02.linux.com 从DNS
    • 从DNS安装bind软件
    1. [root@localhost ~]# yum install -y bind
    复制代码

    • 修改主DNS上区域配置文件
    1. [root@node01 ~]# vim /etc/named.rfc1912.zones

    2. zone "linux.com" IN {
    3.     type master;
    4.     allow-transfer { 从DNS服务器地址; };                // 允许哪个从来复制数据
    5.     file "linux.com.zone";
    6. };
    复制代码

    • 修改主DNS上记录文件
    1. [root@node01 ~]# vim /var/named/linux.com.zone

    2.         NS ns01.linux.com.
    3.         NS ns02.linux.com.
    4. ns01    A       192.168.140.10
    5. ns02    A       192.168.140.11

    6. [root@node01 ~]# systemctl restart named
    复制代码

    • 修改从DNS的主配置文件
    1. [root@node01 ~]# vim /etc/named.conf
    2. listen-on port 53 { any; };                               
    3. allow-query     { any; };                                 
    复制代码

    • 在从dns上创建和主dns一样的区域
    1. [root@localhost ~]# vim /etc/named.rfc1912.zones

    2. zone "linux.com" IN {
    3.     type slave;                        // 指定区域类型为slave从
    4.     masters { 主DNS服务器地址; };               
    5.     file "slaves/linux.com.zone";
    6. };
    复制代码

    • 启动从DNS服务,验证可以正常复制记录文件
    1. [root@localhost ~]# systemctl enable --now named
    2. [root@localhost ~]#
    3. [root@localhost ~]# netstat -tunlp | grep named
    4. tcp        0      0 192.168.140.11:53       0.0.0.0:*               LISTEN      1475/named         
    5. tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      1475/named         
    6. tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      1475/named         
    7. tcp6       0      0 ::1:53                  :::*                    LISTEN      1475/named         
    8. tcp6       0      0 ::1:953                 :::*                    LISTEN      1475/named         
    9. udp        0      0 192.168.140.11:53       0.0.0.0:*                           1475/named         
    10. udp        0      0 127.0.0.1:53            0.0.0.0:*                           1475/named         
    11. udp6       0      0 ::1:53                  :::*                                1475/named         
    12. [root@localhost ~]#
    复制代码
    1. [root@localhost ~]# ls /var/named/slaves/
    2. linux.com.zone

    3. [root@localhost ~]# file /var/named/slaves/linux.com.zone
    4. /var/named/slaves/linux.com.zone: data
    复制代码

    • 验证使用从dns解析主机名
    1. C:\Users\admin>nslookup
    2. 默认服务器:  public1.alidns.com
    3. Address:  223.5.5.5

    4. > server 192.168.140.11
    5. 默认服务器:  [192.168.140.11]
    6. Address:  192.168.140.11

    7. > www.linux.com
    8. 服务器:  [192.168.140.11]
    9. Address:  192.168.140.11

    10. 名称:    www.linux.com
    11. Address:  192.168.10.1

    12. > mail.linux.com
    13. 服务器:  [192.168.140.11]
    14. Address:  192.168.140.11

    15. 名称:    mail.linux.com
    16. Address:  192.168.10.7
    复制代码

    • 验证数据同步
    主DNS修改记录,从DNS会根据记录文件中的序列号检测变化,同步复制数据
    1. [root@node01 ~]# vim /var/named/linux.com.zone
    2. 添加一条记录,修改序列号

    3. [root@node01 ~]# systemctl restart named

    4. 验证使用从dns来解析变化的记录
    复制代码
    三、DNS查询类型

    递归查询

    • 只发送一次DNS请求,等待结果
    • 发生在客户端与DNS服务器间
    迭代查询

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


    四、hosts文件的使用

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

    • Linux
    1. [root@node01 ~]# cat /etc/hosts
    2. 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    3. ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

    4. 10.11.0.254        file.linux.com
    复制代码

    • Windows
    1. C:\Windows\System32\drivers\etc\hosts
    复制代码

    • 主机域名解析的流程
    1、先找本地的DNS缓存
    2、再找hosts文件
    3、向网卡DNS服务器发送查询请求,经过多次迭代过程返回结果

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

    来源:互联网
    免责声明:如果侵犯了您的权益,请联系站长(1277306191@qq.com),我们会及时删除侵权内容,谢谢合作!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×

    最新评论

    浏览过的版块

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表