DNS 基础知识

在排查一些DNS 问题时,顺便学了些DNS的基础知识,记录一下。

什么是根、顶级、权威、本地域名服务?

域名解析过程涉及4个DNS服务器,分别如下:

分类 作用
根DNS服务器 英文:Root nameserver。本地域名服务器在本地查询不到解析结果时,则第一步会向它进行查询,并获取顶级域名服务器的IP地址。
顶级域名服务器 英文:Tld nameserver。负责管理在该顶级域名服务器下注册的二级域名,例如 www.example.com,.com则是顶级域名服务器,在向它查询时,可以返回一级域名“example.com”所在的权威域名服务器地址。
权威域名服务器 英文:authoritative nameserver。在特定区域内具有唯一性,负责维护该区域内的域名与IP地址之间的对应关系,例如云解析DNS。
本地域名服务器 英文:DNS resolver或Local DNS。本地域名服务器是响应来自客户端的递归请求,并最终跟踪直到获取到解析结果的DNS服务器。例如用户本机自动分配的DNS、运营商ISP分配的DNS、谷歌/114公共DNS等。
  
 DNS

CoreDNS 的 template、hosts、file 插件使用方法

CoreDNS 是一个开源的域名系统(DNS)服务器,用于将域名解析为 IP 地址以实现网络通信。它是一个用 Go 语言编写的可扩展 DNS 服务器,旨在取代传统的 DNS 服务器并提供更灵活、可配置的解析方案。

安装配置

一个极简的Corefile配置如下

1
2
3
4
.:PORT {
whoami
log
}

DNS服务默认端口为53。本机测试期间,选择使用 1053 端口。

首先创建名为 Corefile1 的配置文件,内容如下:

1
2
3
4
.:1053 {
whoami
log
}

启动 coredns 服务:

1
2
3
4
% coredns -conf ./Corefile1
.:1053
CoreDNS-1.11.1
darwin/arm64, go1.21.0,

使用hosts插件

在某个项目中,我要用CoreDNS来 为特定域名指定hosts。这时用到了 hosts 插件。

例如:要实现把 a.example.com 指向 192.168.1.2。


:D 一言句子获取中...