目录
DNS(Domain Name System,域名系统) 是一种用于将域名解析为 IP 地址的系统。人类可以轻松记住域名(例如www.jd.com),而计算机则通过 IP 地址(如192.168.1.1)进行通信。DNS 的作用就是将域名转换为机器可理解的 IP 地址。
一、域名服务器类型
- 根DNS服务器(Root DNS Servers):根 DNS 服务器是 DNS 系统的顶级服务器,负责处理对域名根级别(如.com,.org等)的查询。
- 顶级域名服务器(TLD Servers):管理顶级域名的 DNS 服务器。
- 权威DNS服务器(Authoritative DNS Servers):这些服务器存储有关于某个域名的最终信息,如域名到 IP 地址的映射。如果查询的域名有结果,权威 DNS 服务器将直接提供该域名的解析结果。
- 递归 DNS 服务器(Recursive DNS Servers):递归服务器接受 DNS 查询请求并负责将查询请求发送到其他 DNS 服务器,直到获取到域名的 IP 地址。
二、DNS解析过程
- 浏览器查询本地缓存:浏览器会首先查看本地缓存,检查是否有该域名的解析结果。
- 操作系统查询本地DNS缓存:操作系统也会缓存DNS解析的结果,如果缓存中有该域名的解析结果,直接返回。
- 查询本地 DNS 服务器:如果本地没有缓存,系统会将查询请求发送到本地 DNS 服务器(通常由 ISP 提供)。
- 递归查询过程:本地 DNS 服务器可能需要进一步向其他 DNS 服务器查询来解析域名,通常是从根 DNS 服务器开始,逐步查询下去,直到返回域名的 IP 地址。
- 返回结果:最终,IP 地址返回给用户的计算机,计算机与目标服务器建立连接。
三、DNS相关配置
3.1、/etc/hosts
[root@padoru ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.153.23 test //新增一条DNS解析规则
[root@padoru ~]# ping test //可以通过test成功解析IP地址
PING test (192.168.153.23) 56(84) bytes of data.
64 bytes from test (192.168.153.23): icmp_seq=1 ttl=64 time=0.045 ms
64 bytes from test (192.168.153.23): icmp_seq=2 ttl=64 time=0.038 ms
3.2、本地DNS缓存文件
[root@padoru ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 144.144.144.144
nameserver 8.8.8.8
四、DNS正向解析
4.1、bind域名解析和管理软件
bind是一个开源软件,支持多种DNS功能,包括递归查询、权威解析、DNS 负载均衡、缓存等。它是大多数 Linux 系统中的默认 DNS 服务器软件。
bind软件种类:
- bind:服务器
- bind-libs:相关库
- bind-utils:客户端
- bind-chroot:安全包
bind相关文件
- BIND主程序:/usr/sbin/named
- 服务脚本和Unit名称:/etc/rc.d/init.d/named,/usr/lib/systemd/system/named.service
- 主配置文件:/etc/named.conf,/etc/named.rfc1912.zones,/etc/rndc.key
- 管理工具:/usr/sbin/rndc:remote name domain controller,默认与bind安装在同一主机,且只能通过127.0.0.1连接named进程,提供辅助性的管理功能;953/tcp rndc reload systemctl reload named
- 解析库文件:/var/named/ZONE_NAME.ZONE
4.2、常见的DNS记录类型
- A 记录(Address Record):将域名映射到 IPv4 地址。
- AAAA 记录:将域名映射到 IPv6 地址。
- CNAME 记录(Canonical Name Record):将一个域名指向另一个域名。
- MX 记录(Mail Exchange Record):定义邮件交换服务器的地址,用于电子邮件的路由。
- NS 记录(Name Server Record):指定负责该域名的 DNS 服务器。
- PTR 记录(Pointer Record):将 IP 地址映射回域名,用于反向 DNS 查询。
- TXT 记录:可以存储任意文本数据,通常用于 SPF(Sender Policy Framework)和验证等功能。
4.3、配置DNS正向解析
4.3.1、安装bind软件包
[root@localhost ~]#systemctl stop firewalld.service //关闭防火墙
[root@localhost ~]#setenforce 0 //关闭selinux
[root@localhost ~]#yum install bind bind-utils -y //安装主软件和配置包管理软件
[root@localhost ~]#systemctl start named //开启bind服务
[root@padoru ~]# netstat -natp |grep named
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 12047/named
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 12047/named
tcp6 0 0 ::1:953 :::* LISTEN 12047/named
tcp6 0 0 ::1:53 :::* LISTEN 12047/named
4.3.2、修改DNS主机网络配置
[root@padoru ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR=192.168.153.23
NETMASK=255.255.255.0
GATEWAY=192.168.153.2
DNS1=192.168.153.23 //将DNS地址指向本机IP
[root@padoru ~]# systemctl restart network //重启服务,刷新配置
[root@padoru ~]# cat /etc/resolv.conf //查看DNS配置情况
# Generated by NetworkManager
nameserver 192.168.153.23
4.3.3、修改主配置文件
[root@padoru ~]# vim /etc/named.conf
13 listen-on port 53 { any; }; //将括号内字符改为any,或者注释,删除
21 allow-query { any; }; //将括号内字符改为any,或者注释,删除
4.3.4、修改局域配置文件
[root@padoru ~]# vim /etc/named.rfc1912.zones
13 zone "padoru.com" IN { //修改为自定的正向解析域名
14 type master;
15 file "padoru.com.zone"; //指定数据库文件名
16 };
4.3.5、新建数据库文件,并修改配置
[root@padoru ~]# cd /var/named
[root@padoru named]# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves
[root@padoru named]# cp -a named.localhost padoru.com.zone
[root@padoru named]# vim padoru.com.zone
1 $TTL 1D
2 @ IN SOA master.padoru.com admin.padoru.com ( //本行也可不修改
//@:区域的根,即域名本身。
//IN SOA:定义区域的起始授权记录,包含主DNS服务器、管理员邮箱地址等信息
3 0 ; serial
4 1D ; refresh
5 1H ; retry
6 1W ; expire
7 3H ) ; minimum
8 NS master
9 master A 192.168.153.23 //添加解析域名
10 wwww A 192.168.153.23 //添加解析域名
11 ftp A 192.168.153.23 //添加解析域名
[root@padoru named]# systemctl start named //重启服务
4.3.6、验证DNS解析
[root@padoru named]# nslookup www.padoru.com
Server: 192.168.153.23
Address: 192.168.153.238#53