C03S03-Linux网络之DNS服务器

news2024/11/13 20:54:31

一、DNS

1. DNS概述

DNS(域名系统、Domain Name System)是将域名和IP地址相互映射的一个分布式数据库,方便用户访问互联网。IP地址是互联网上所有设备的唯一标识,设备之间的通信依赖于IP地址。DNS使得用户在访问网站时不需要记住复杂的数字IP地址,而是可以使用容易记忆的域名。DNS使用的端口是53号端口,它同时支持TCP和UDP协议;UDP适用于快速解析域名,TCP适用于区域传输,也就是与主域名服务器通信查询解析是否正确。

2. 域名结构

域名是以点分隔,被分为若干个部分,从右到左依次阅读。以百度完整域名为例:

www.baidu.com.cn.
  • .:根域名,最高一级的域名,类似Linux系统里的根目录。在实际使用中会省略。
  • .cn:顶级域名,也叫做一级域名。一般代表一种类型的组织机构或者国家地区。
  • .com.cn:二级域名。代表顶级域内的一种类型的组织机构。
  • baidu.com.cn:注册该域名的实体。
  • www:主机名,也可以称为子域名或三级域名。

3. DNS解析过程

  1. 用户在客户端中通过域名发起访问请求。
  2. 客户端首先检查本地缓存和文件/etc/hosts,看是否已经存储了该域名的IP地址。
  3. 如果在本地没有找到域名对应的IP地址,客户端会向配置的本地域名服务器发起递归查询请求。
  4. 本地DNS服务器如果没有缓存该域名的IP地址,它会向根域服务器查询。
  5. 根域服务器返回顶级域名服务器的IP地址给本地DNS服务器,本地域名服务器再向顶级域名服务器发送查询请求。
  6. 顶级域名服务器返回二级域名服务器的IP地址给本地DNS服务器,本地域名服务器再向二级域名服务器发送查询请求。
  7. 二级域名服务器返回子域名服务器的IP地址给本地DNS服务器,本地域名服务器再向子域名服务器发送查询请求。
  8. 子域名服务器返回域名对应的IP地址给本地域名服务器,本地域名服务器将IP地址存入换成当中,再将IP告诉客户端。
  9. 客户端获得IP后,根据IP访问对应服务。

递归查询:客户端向DNS服务器发起查询请求,如果该服务器没有缓存域名对应的IP,它会代替客户端去其他DNS服务器查询,直到找到答案或者查询失败。

迭代查询:客户端向DNS服务器发起查询请求,如果该服务器没有缓存域名对应的IP,它会提供另一个DNS服务器的地址,让客户端去那里查询。这个过程会一直持续,直到找到答案或者查询失败。

迭代查询过程中,客户端需要自己管理查询过程,直到找到对应IP;递归查询过程中,DNS服务器代替客户端管理查询过程。

4. DNS解析类型

正向解析、反向解析和主备解析是DNS系统中三个重要的解析类型。

  • 正向解析:将域名解析为IP地址。
  • 反向解析:将IP地址解析为域名。
  • 主从解析:DNS服务器之间的数据同步和负载分担机制,提高DNS服务的可用性和可靠性。

5. curl命令 – 文件传输工具

curl命令来自英文词组CommandLine URL的缩写,功能是在Shell终端界面中基于URL规则进行文件传输工作。

curl [选项] 文件

常见的选项:

选项功能
-I显示网站的响应头信息
-K读取指定文件
-o设置文件下载到本地的路径

二、DNS安装部署

1. BIND概述

1.1 安装BIND

  1. 执行下面的命令,安装BIND。BIND是一款广泛使用的DNS服务软件。

    apt -y instll bind9
    
  2. 安装完成后,会生成一个/etc/bind目录。

    ls /etc/bind
    
    bind.keys  db.127  db.empty  named.conf                named.conf.local    rndc.key
    db.0       db.255  db.local  named.conf.default-zones  named.conf.options  zones.rfc1918
    

    主要配置文件:

    • db.empty:DNS区域文件的模板文件。
    • named.conf:BIND服务的主配置文件,引入其他配置文件。
    • named.conf.local:包含本地配置区域,如区域文件的位置、视图的定义等。
    • named.conf.default-zones:包含BIND服务默认配置的区域,通常是一些根区域和常用的顶级域。
    • named.conf.options:BIND服务的其他配置。

1.2 主要配置文件说明

  1. name.conf文件。

    // This is the primary configuration file for the BIND DNS server named.
    //
    // Please read /usr/share/doc/bind9/README.Debian.gz for information on the
    // structure of BIND configuration files in Debian, *BEFORE* you customize
    // this configuration file.
    //
    // If you are just adding zones, please do that in /etc/bind/named.conf.local
    
    include "/etc/bind/named.conf.options";
    include "/etc/bind/named.conf.local";
    include "/etc/bind/named.conf.default-zones";
    
    • include:引入配置文件。
  2. named.conf.local文件。

    //
    // Do any local configuration here
    //
    
    // Consider adding the 1918 zones here, if they are not used in your
    // organization
    //include "/etc/bind/zones.rfc1918";
    
    • 建议在本文件中进行本地的区域配置。
  3. named.conf.default-zones文件。

    // prime the server with knowledge of the root servers
    zone "." {
            type hint;
            file "/usr/share/dns/root.hints";
    };
    
    // be authoritative for the localhost forward and reverse zones, and for
    // broadcast zones as per RFC 1912
    
    zone "localhost" {
            type master;
            file "/etc/bind/db.local";
    };
    
    zone "127.in-addr.arpa" {
            type master;
            file "/etc/bind/db.127";
    };
    
    zone "0.in-addr.arpa" {
            type master;
            file "/etc/bind/db.0";
    };
    
    zone "255.in-addr.arpa" {
            type master;
            file "/etc/bind/db.255";
    };
    
    • 本文件是BIND服务默认的特定区域配置,包括根域服务器区域、本地主机的正向区域和反向区域、网段和广播的反向区域。

    • 区域配置的常见格式。

      zone "example.com" {
          type master;
          file "/etc/bind/db.example.com";
          allow-transfer {IP;};
          master {IP;};
      };
      
      • zone “example.com”:定义了一个适用于example.com的区域配置。
      • type:区域的类型,常见类型包括:master、slave等。
      • file:区域数据文件的存放位置。
      • allow-transfer {IP;};:设置能够请求区域传输的服务端IP,主要用于主服务器。
      • master {IP;};:设置主服务器的IP,告诉从服务器可以该IP地址请求区域数据。
  4. named.conf.options文件。

    options {
        directory "/var/cache/bind";
        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113
    
        // If your ISP provided one or more IP addresses for stable
        // nameservers, you probably want to use them as forwarders.
        // Uncomment the following block, and insert the addresses replacing
        // the all-0's placeholder.
    
        // forwarders {
        //      0.0.0.0;
        // };
    
        //========================================================================
        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys
        //========================================================================
        dnssec-validation auto;
    
        listen-on-v6 { any; };
    };
    
    • 用于设置服务器的基本运行参数,包括监听端口、允许查询的客户端等设置。
  5. db.empty文件。

    ; BIND reverse data file for empty rfc1918 zone
    ;
    ; DO NOT EDIT THIS FILE - it is used for multiple zones.
    ; Instead, copy it, edit named.conf, and use that copy.
    ;
    $TTL    86400
    @       IN      SOA     localhost. root.localhost. (
                                  1         ; Serial
                             604800         ; Refresh
                              86400         ; Retry
                            2419200         ; Expire
                              86400 )       ; Negative Cache TTL
    ;
    @       IN      NS      localhost.
    
    • 本文件是区域数据文件的模板文件。包括记录的存活时间(TTL)、起始授权机构(SOA)记录、服务器和IP记录。

2. 配置正向解析

  1. 编辑named.conf.options文件,在文件中加入以下内容,用于配置网络接口和允许进行DNS查询的客户端地址范围。

    listen-on port 53 {192.168.1.128;};
    allow-query {192.168.1.0/24;};
    
  2. 编辑named.conf.local文件,在文件中定义区域的相关配置,设置一个匹配域名xy104.com的区域。

    zone "xy104.com" {
        type master;
        file "/etc/bind/xy104.local";
    };
    
  3. 复制区域数据文件目标,复制后的文件路径要和区域设置里的路径保持一致。修改文件,设置域名xy104.com对应的IP等信息。

    $TTL    86400
    @       IN      SOA     xy104.com. admin.xy104.com. (
                                  1         ; Serial
                             604800         ; Refresh
                              86400         ; Retry
                            2419200         ; Expire
                              86400 )       ; Negative Cache TTL
    ;
    @       IN      NS      xy104.com.
    @       IN      A       192.168.1.128
    www     IN      A       192.168.1.128
    
  4. 配置完成后,重启BIND服务。

    systemctl restart bind9
    
  5. 编辑网络配置文件,重新设置DNS的IP。

    network:
      ethernets:
        ens33:
          dhcp4: no
          addresses: [192.168.1.128/24]
          gateway4: 192.168.1.254
          nameservers:
            addresses: [192.168.1.128]
    
  6. 查看正向解析是否设置成功。

    nslookup www.xy104.com
    
    Server:         127.0.0.53
    Address:        127.0.0.53#53
    
    Non-authoritative answer:
    Name:   www.xy104.com
    Address: 192.168.1.128
    

3. 配置反向解析

  1. 编辑named.conf.local文件,在文件中定义区域的相关配置,设置一个匹配域名xy104.com的反向区域。

    zone "1.168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/xy104.local";
    };
    
  2. 复制区域数据文件目标,复制后的文件路径要和区域设置里的路径保持一致。修改文件,设置域名xy104.com对应的IP等信息。

    $TTL    86400
    @       IN      SOA     xy104.com. admin.xy104.com. (
                                  1         ; Serial
                             604800         ; Refresh
                              86400         ; Retry
                            2419200         ; Expire
                              86400 )       ; Negative Cache TTL
    ;
    @       IN      NS      xy104.com.
    @       IN      A       192.168.1.128
    www     IN      A       192.168.1.128
    128     IN      PTR     www.xy104.com.
    
  3. 配置完成后,重启BIND服务。

    systemctl restart bind9
    
  4. 查看反向解析是否设置成功。

    nslookup 192.168.1.128
    
    128.1.168.192.in-addr.arpa      name = www.xy104.com.
    

4. 配置主从解析

  1. 基于前面配置实现主从解析。原有的主机作主服务器,编辑原有的named.conf.local文件,修改区域配置。保存文件后,重启BIND服务。

    zone "xy104.com" {
        type master;
        file "/etc/bind/xy104.local";
        allow-transfer {192.168.1.129;};
    };
    
    zone "1.168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/xy104.local";
        allow-transfer {192.168.1.129;};
    };
    
  2. 配置主服务器的网络配置,设置两个DNS,并重启网络服务。

    network:
      ethernets:
        ens33:
          dhcp4: no
          addresses: [192.168.1.128/24]
          gateway4: 192.168.1.254
          nameservers:
            addresses: [192.168.1.128, 192.168.1.129]
    
  3. 在另一台主机上安装BIND服务。

    apt -y install bind9
    
  4. 编辑named.conf.options文件,在文件中加入以下内容.

    listen-on port 53 {any;};
    allow-query     {any;};
    
  5. 编辑named.conf.local文件,修改从服务器的区域配置。

    zone "xy104.com" {
        type slave;
        file "xy104.local";
        masters {192.168.1.128;};
    };
    
    zone "1.168.192.in-addr.arpa" {
        type slave;
        file "xy104.local";
        masters {192.168.1.128;};
    };
    
  6. 重启从服务器的BIND服务。

    systemctl restart bind9
    
  7. 配置从服务器网络,然后重启网络服务。

    network:
      ethernets:
        ens33:
          dhcp4: no
          addresses: [192.168.1.129/24]
          gateway4: 192.168.1.254
          nameservers:
            addresses: [192.168.1.128, 192.168.1.129]
    
  8. 验证主从解析是否存在问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2239656.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue3中使用LogicFlow实现简单流程图

实现结果 实现功能&#xff1a; 拖拽创建节点自定义节点/边自定义快捷键人员选择弹窗右侧动态配置组件配置项获取/回显必填项验证历史记录&#xff08;撤销/恢复&#xff09; 自定义节点与拖拽创建节点 拖拽节点面板node-panel.vue <template><div class"node-…

机器学习——贝叶斯

&#x1f33a;历史文章列表&#x1f33a; 机器学习——损失函数、代价函数、KL散度机器学习——特征工程、正则化、强化学习机器学习——常见算法汇总机器学习——感知机、MLP、SVM机器学习——KNN机器学习——贝叶斯机器学习——决策树机器学习——随机森林、Bagging、Boostin…

大模型书籍推荐丨这本书必看:大语言模型 基础与前沿(附PDF)

哈喽大家好&#xff01;很久都没有更新大模型这块的书了&#xff0c;今天给大家说一下这本&#xff1a;《大语言模型&#xff1a;基础与前沿》&#xff0c;本书深入阐述了大语言模型的基本概念和算法、研究前沿以及应用&#xff0c;涵盖大语言模型的广泛主题&#xff0c;从基础…

Tofu AI视频处理模块视频输入配置方法

应用Tofu产品对网络视频进行获取做视频处理时&#xff0c;首先需要配置Tofu产品的硬件连接关系与设备IP地址、视频拉流地址。 步骤1 Tofu设备点对点直连或者通过交换机连接到电脑&#xff0c;电脑IP配置到与Tofu默认IP地址同一个网段。 打开软件 点击右上角系统设置 单击左侧…

MTSET可溶于DMSO、DMF、THF等有机溶剂,并在水中有轻微的溶解性,91774-25-3

一、基本信息 中文名称&#xff1a;[2-(三甲基铵)乙基]甲硫基磺酸溴&#xff1b;MTSET巯基反应染料 英文名称&#xff1a;MTSET&#xff1b;[2-(Trimethylammonium)ethyl]methanethiosulfonate Bromide CAS号&#xff1a;91774-25-3 分子式&#xff1a;C6H16BrNO2S2 分子量…

BERT框架详解

BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;是由Google在2018年提出的一种自然语言处理&#xff08;NLP&#xff09;模型。BERT通过使用Transformer架构&#xff0c;实现了对文本的双向上下文理解&#xff0c;从而在多个NLP任务中取…

定时器(QTimer)与随机数生成器(QRandomGenerator)的应用实践——Qt(C++)

一、QTimer与QRandomGenerator &#xff08;一&#xff09;QTimer&#xff08;定时器&#xff09;[2] QTimer类为定时功能提供了一个高级编程接口。在使用QTimer时&#xff0c;实例化一个QTimer对象并将其timeout()发射信号与合适的信号槽相连接。通过调用QTimer的start()函数…

Linux 进程线程间通信总结

线程 线程共享存储空间主要带来的问题是数据同步和互斥。由于线程在同一进程中运行&#xff0c;它们共享相同的内存空间&#xff0c;任何线程都可以访问共享数据。这样&#xff0c;多个线程并发执行时&#xff0c;可能会导致以下两种主要问题&#xff1a; 互斥问题&#xff0…

什么是RAG? LangChain的RAG实践!

1. 什么是RAG RAG的概念最先在2020年由Facebook的研究人员在论文《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》中提出来。在这篇论文中他们提出了两种记忆类型&#xff1a; 基于预训练模型&#xff08;当时LLM的概念不像现在这么如日中天&#xff0…

Python 进阶函数教程

Python 进阶函数教程 引言 在 Python 编程中&#xff0c;函数是组织代码、提高可重用性和可读性的关键组成部分。尽管许多初学者掌握了基本的函数定义和调用&#xff0c;但 Python 还提供了许多高级功能&#xff0c;使函数更加灵活和强大。本文将深入探讨 Python 中的高级函数…

ReactPress:深入解析技术方案设计与源码

ReactPress Github项目地址&#xff1a;https://github.com/fecommunity/reactpress 欢迎提出宝贵的建议&#xff0c;欢迎一起共建&#xff0c;感谢Star。 ReactPress是一个基于React框架开发的开源发布平台&#xff0c;它不仅仅是一个简单的博客系统&#xff0c;更是一个功能全…

c++实现B树(下)

书接上回小吉讲的是B树的搭建和新增方法的实现&#xff08;blog传送门&#x1f6aa;&#xff1a;B树实现上&#xff09;&#xff08;如果有小可爱对B树还不是很了解的话&#xff0c;可以先看完上一篇blog&#xff0c;再来看小吉的这篇blog&#xff09;。那这一篇主要讲的是B树中…

【漏洞分析】Fastjson最新版本RCE漏洞

01漏洞编号 CVE-2022-25845CNVD-2022-40233CNNVD-202206-1037二、Fastjson知多少 万恶之源AutoType Fastjson的主要功能是将Java Bean序列化为JSON字符串&#xff0c;这样得到的字符串就可以通过数据库等方式进行持久化了。 但是&#xff0c;Fastjson在序列化及反序列化的过…

PSRAM,Flash,SRAM,ROM有什么区别

PSRAM、Flash、SRAM 和 ROM 是四种不同类型的存储器&#xff0c;它们在计算机和嵌入式系统中的用途、特性和工作方式各不相同。下面是这四种存储器的区别和各自的特点&#xff1a; ### 1. **SRAM&#xff08;静态随机存取存储器&#xff09;** - **特性**&#xff1a; - **易…

大数据学习13之Scala基础语法(重点)

1. 简介 Scala 是 Scalable Language 的简写&#xff0c;是一门多范式的编程语言。创始人为 Martin Odersky 马丁奥德斯基。 Scala 这个名字来源于 Scalable Language(可伸缩的语言&#xff09;&#xff0c;它是一门基于 JVM 的多范式编程语言&#xff0c;通俗的说&#xff1a;…

django入门【05】模型介绍——字段选项(二)

文章目录 1、null 和 blank示例说明⭐ null 和 blank 结合使用的几种情况总结&#xff1a; 2、choices**choices 在 Django 中有以下几种形式&#xff1a;**&#xff08;1&#xff09; **简单的列表或元组形式**&#xff08;2&#xff09; **字典映射形式**&#xff08;3&#…

微信小程序:vant组件库安装步骤

前言&#xff1a;在微信小程序中引用vant组件报错&#xff0c;提示路径不存在&#xff0c;这很有可能是因为没有安装构建vant组件库导致。下面是我整理的安装vant组件库的步骤: 第一步&#xff1a;安装node.js(执行完第一步请重启小程序) 具体步骤请看链接&#xff1a;node.js…

Python如何根据给定模型计算权值

目录 一、特征权重的重要性 二、线性回归中的特征权重计算 1. 导入必要的库 2. 创建示例数据集 3. 分割数据集 4. 训练线性回归模型并计算权重 三、特征选择方法 四、实际案例&#xff1a;金融科技数据集 五、总结 在机器学习中&#xff0c;特征权重的计算是理解模型如…

过去几年电子学习的趋势

近年来&#xff0c;在技术和不断变化的学习者期望的推动下&#xff0c;电子学习已经发展成为一种适应性强、沉浸式和社会化的教育形式。个性化已成为最具影响力的趋势之一&#xff0c;Coursera和LinkedIn Learning等平台为个人量身定制内容。这些平台使用人工智能来建议课程、跟…

面相小白的php反序列化漏洞原理剖析

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文整理反序列化漏洞的一些成因原理 建议学习反序列化之前 先对php基础语法与面向对象有个大体的了解 (我觉得我整理的比较细致&#xff0c;了解这俩是个啥就行) 漏洞实战情况 这个漏洞黑盒几乎不会被发现&am…