RHCE笔记-DNS服务器

一.DNS简介

DNS(域名系统)是一种互联网服务,负责将我们熟悉的域名(比如 www.example.com)转换为计算机能理解的IP地址(比如 192.0.2.1)。这样,当你在浏览器中输入网址时,计算机能够找到对应的网站。

DNS服务的工作原理

  1. 输入网址:你在浏览器中输入一个网址。
  2. 查询本地缓存:计算机会先检查自己是否有这个网址的IP地址存储在本地缓存中。
  3. 向DNS服务器请求:如果没有找到,计算机会向DNS服务器发送请求。
  4. 递归查询:DNS服务器会帮你查找这个网址对应的IP地址,可能会向其他服务器询问,直到找到为止。
  5. 返回结果:一旦找到IP地址,DNS服务器将这个地址返回给你,浏览器再根据这个地址访问网站。

DNS服务器的角色

  • 根服务器 :负责管理互联网的顶层域名,比如.com、.org等。
  • TLD服务器:管理某一类域名的服务器,比如所有的.com域名。
  • 权威DNS服务器:存储某个特定域名的详细信息(比如网站的IP地址)。

总结

DNS服务就像一个电话簿,将人类易懂的域名和计算机使用的IP地址关联起来,确保你可以快速访问想要的网站。DNS服务器则是提供这个服务的"助手",帮助完成查询和转换的工作。

二.域名结构

域名是以根开始的倒树状结构 ,以点为分割符,从上往下分别是:

国家顶级域名:中国(cn),英国(uk),mil(美国军事),gov(美国政府),edu(教育),org(开源非盈利组织),net(网络相关),com(公司企业),aero(航空航天相关),biz(商业和商业活动),info(信息相关),coop(合作社的身份识别).

基础结构域名:唯一arpa,用于反向解析.

域名服务器分类

根域名服务器:ipv4全球13台,1台主根服务器(美国),12台辅根服务器,9台美国,欧洲英国,瑞典,亚洲日本各一台.

顶级域名服务器:管理在该顶级域名服务器注册的2级域名

权限域名服务器:负责一个区的域名服务器

本地域名服务器:负责接收查询请求报文

主从DNS服务器:主服务器定期复制DNS记录到从服务器

缓存服务器:不解析域名,只缓存域名解析结果

DNS服务解析过程

1. 用户输入域名

当用户在浏览器中输入一个域名(例如:www.example.com)并按下回车键,浏览器会开始查找该域名对应的IP地址。

2. 检查本地缓存
  • 浏览器缓存:首先,浏览器会检查其本地缓存中是否已经存储了该域名的IP地址。如果有,直接使用该地址进行连接。
  • 操作系统缓存:如果浏览器没有缓存,操作系统也会检查其DNS缓存。
3. 查询DNS服务器

如果本地缓存没有找到,浏览器将向DNS解析器(通常由用户的互联网服务提供商提供)发送请求。

4. DNS解析器

DNS解析器接收到请求后,会进行以下步骤:

  • 根域名服务器查询:首先,它向根域名服务器发送查询请求,根服务器会指向相应的顶级域名服务器(TLD服务器),例如".com"域名的TLD服务器。
5. TLD服务器查询
  • 获取权威DNS服务器 :DNS解析器接下来向TLD服务器询问域名(例如,example.com)对应的权威DNS服务器的地址,TLD服务器返回该域名的权威DNS服务器的信息。
6. 权威DNS服务器查询
  • 最终解析:DNS解析器向权威DNS服务器发送请求,以获取域名的实际IP地址。权威DNS服务器会返回该域名对应的IP地址。
7. 返回结果
  • 返回给用户的浏览器:DNS解析器将获得的IP地址返回给用户的浏览器。
8. 建立连接
  • 访问目标网站:浏览器使用该IP地址与目标服务器建立连接,开始请求网页内容。
9. 缓存结果
  • 缓存机制:为了提高效率,DNS解析器和操作系统会将解析结果缓存一段时间(根据TTL设置),以便后续请求时可以快速响应。
10. 完成请求
  • 网页加载:最终,浏览器加载网页,用户可以查看请求的内容。

三.DNS配置

DNS服务器的配置文件通常包含了域名解析所需的各种信息。不同类型的DNS服务器(如BIND、dnsmasq等)有不同的配置文件格式。以下是以BIND(Berkeley Internet Name Domain)为例的DNS服务器配置文件详解:

1. BIND基本结构

BIND的主要配置文件通常是named.conf,这个文件定义了DNS服务器的全局选项、区域(zone)和转发器(forwarders)等信息。

主要配置文件示例
options {
    directory "/var/named";  # DNS数据文件存放目录
    allow-query { any; };     # 允许所有查询
    recursion yes;            # 启用递归查询
    forwarders {              # 指定转发器
        8.8.8.8;              # Google DNS
        8.8.4.4;
    };
    dnssec-enable yes;        # 启用DNSSEC
    dnssec-validation auto;   # 自动验证DNSSEC
};

2. 区域配置

区域配置用于定义DNS服务器管理的域名以及它们的记录。区域通常在named.conf中定义,也可以放在单独的文件中。

示例区域配置
zone "example.com" {
    type master;  # 主DNS服务器
    file "example.com.db";  # 区域数据文件
};

zone "0.168.192.in-addr.arpa" {  # 反向查找区域
    type master;
    file "192.168.0.db";
};

3. 区域数据文件

区域数据文件包含域名及其对应的资源记录(RR)。每条记录的格式通常如下:

$TTL 86400  ; 默认生存时间为86400秒(1天)
@   IN  SOA  ns1.example.com. admin.example.com. (
        2024010101 ; Serial #代表新旧程度
        3600       ; Refresh #更新频率
        1800       ; Retry #失败重传时间
        604800     ; Expire #失败失效时间
        86400 )    ; Negative Cache TTL #有效期

; Name Server Records
@   IN  NS   ns1.example.com.
@   IN  NS   ns2.example.com.

; A Records
@   IN  A    192.168.0.1
www IN  A    192.168.0.1

; CNAME Records
mail IN CNAME www
记录类型详解
  • SOA (Start of Authority):定义区域的起始权威信息,包括主DNS、管理员邮箱、序列号等。
  • NS (Name Server):定义域名使用的DNS服务器。
  • A (Address):将域名映射到IPv4地址。
  • AAAA:将域名映射到IPv6地址。
  • CNAME (Canonical Name):将一个域名别名映射到另一个真实的域名。

4. 高级配置

  • ACL(Access Control Lists):用于控制哪些IP可以查询或更新DNS记录。

    acl "trusted" {
    192.168.0.0/24; # 允许本地网络
    10.0.0.0/8; # 允许另一个网络
    };

    options {
    allow-query { trusted; }; # 仅允许受信任的网络查询
    };

  • 视图(Views):根据来源IP提供不同的DNS响应。

    view "internal" {
    match-clients { 192.168.0.0/24; };
    zone "example.com" { type master; file "internal/example.com.db"; };
    };

    view "external" {
    match-clients { any; };
    zone "example.com" { type master; file "external/example.com.db"; };
    };

5. 重启DNS服务

在修改配置文件后,通常需要重启BIND服务以使更改生效:

sudo systemctl restart named

6.测试工具

host

host 是一个简单的 DNS 查询工具,用于查找主机名或 IP 地址。

基本用法

host [选项] [主机名|IP地址]

示例

  • 查询域名的 IP 地址:

    host example.com
    
  • 查询指定 DNS 服务器:

    host example.com 8.8.8.8
    

2. nslookup

nslookup 是一个交互式和非交互式的 DNS 查询工具,可以用于查找 DNS 记录。

基本用法

nslookup [主机名|IP地址] [DNS服务器]

示例

  • 查询域名的 DNS 记录:

    nslookup example.com
    
  • 查询特定类型的记录(例如 MX 记录):

    nslookup -query=mx example.com
    

3. dig

dig(Domain Information Groper)是一个更为强大的 DNS 查询工具,提供详细的查询信息。

基本用法

dig [选项] [主机名] [记录类型] @DNS服务器

示例

  • 查询域名的 A 记录:

    dig example.com
    
  • 查询特定类型的记录(如 MX 记录):

    dig example.com MX
    
  • 使用特定的 DNS 服务器:

    dig @8.8.8.8 example.com
    

总结

  • host:简单易用,适合基本的 DNS 查询。
  • nslookup:适合交互式查询,提供更多选项。
  • dig:功能强大,适合深入分析和脚本化使用。
相关推荐
bitcsljl4 分钟前
Linux 命令行快捷键
linux·运维·服务器
ac.char7 分钟前
在 Ubuntu 下使用 Tauri 打包 EXE 应用
linux·运维·ubuntu
Youkiup34 分钟前
【linux 常用命令】
linux·运维·服务器
qq_2975046138 分钟前
【解决】Linux更新系统内核后Nvidia-smi has failed...
linux·运维·服务器
_oP_i43 分钟前
.NET Core 项目配置到 Jenkins
运维·jenkins·.netcore
weixin_437398211 小时前
Linux扩展——shell编程
linux·运维·服务器·bash
小燚~1 小时前
ubuntu开机进入initramfs状态
linux·运维·ubuntu
小林熬夜学编程1 小时前
【Linux网络编程】第十四弹---构建功能丰富的HTTP服务器:从状态码处理到服务函数扩展
linux·运维·服务器·c语言·网络·c++·http
上海运维Q先生1 小时前
面试题整理15----K8s常见的网络插件有哪些
运维·网络·kubernetes
hhhhhhh_hhhhhh_1 小时前
ubuntu18.04连接不上网络问题
linux·运维·ubuntu