目录
一、概述
概念
Domain Name Service,一套分布式的域名服务系统,即有多个DNS服务器遍布于世界。每个DNS服务器上存放着大量的机器域名和IP地址的映射,并且是动态更新。众多网络客户端程序都使用DNS协议来向DNS服务器查询目标主机的IP地址。
作用
正向解析:将已知的域名解析为IP地址 反向解析:将已知的IP地址解析为域名
监听端口
53/udp | 53/TCP
默认运行用户
named
二、 完全限定域名
FQDN(Fully Qualified Domain Name)
组成
主机名.三级域.二级域名.顶级域名.
案例:www.baidu.com.
域类型
类型 | 举例 |
---|---|
根域 | . |
顶级域 | cn、hk、uk、org、edu、com、mil、gov、net |
二级域 | baidu、163、sina、sohu |
三、DNS解析过程
客户端如何解析域名(必须背会)
-
本地DNS缓存
-
本地hosts文件,在DNS服务器诞生之前,所有的主机之间都是通过hosts文件进行的。
-
指向的DNS服务器IP:
递归查询:直接给出解析结果,客户机与本地DNS服务器之间的查询。(所答即所问) 迭代查询:没有给出解析结果,本地DNS服务器与根等其他DNS服务器之间的查询。(所答非所问)
四、域名服务器的分类
根据作用
1.根域名服务器:最高层次的域名服务器,也是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址。 2.顶级域名服务器:负责管理该顶级域名注册的二级域名。 3.权限域名服务器:负责一个“区”的域名服务器。 4.本地域名服务器:本地域名服务器不属于域名服务器的层次结构,但是它对域名系统非常重要。当一个主机发出DNS查询请求时,这个查询请求报文就发送给本地域名服务器。
根据应用场景
主服务器(Primary Name server) 为客户端提供域名解析的主要区域,主DNS服务器宕机,会启用从DNS服务器提供服务。 辅助服务器(Second Name Server) 主服务器DNS长期无应答,从服务器也会停止提供服务,主从区域治安的同步采用周期性检查+通知的机制,从服务器周期性地检查主服务器上地记录情况,一旦发现修改就会同步,另外主服务器上如果又数据被修改了,会立即通知从服务器更新记录。 高速缓存服务器(Cache-only server) 缓存服务器是一种不负责域名数据维护,也不负责域名解析地DNS服务类型。它将用户经常使用到的域名与IP地址解析记录保存在主机本地中,来提升下次解析的效率。
五、DNS服务器部署
使用的bind软件包进行安装实现DNS解析服务!!
####在线安装####
[root@localhost ~]# yum install -y bind
主服务器配置
进入主配置文件 /etc/named.conf
options {
listen-on port 53 { 127.0.0.1; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { localhost; };
改成这样
options {
listen-on port 53 { 192.168.158.39; };
//listen-on-v6 port 53 { ::1; };
directory "/var/named"; #区域文件的路径
dump-file "/var/named/data/cache_dump.db"; #缓存的文件
statistics-file "/var/named/data/named_stats.txt"; #静态文件
memstatistics-file "/var/named/data/named_mem_stats.txt"; #数据内存状态
文件
recursing-file "/var/named/data/named.recursing"; #恢复文件
secroots-file "/var/named/data/named.secroots"; #安全配置路径文件
allow-query { any; };#客户端访问规则
进入解析配置文件
[root@localhost ~]# vim /etc/named.rfc1912.zones
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
//zone "localhost.localdomain" IN { #正向解析文件
// type master;
// file "named.localhost";
// allow-update { none; };
//};
//
//zone "localhost" IN {
// type master;
// file "named.localhost";
// allow-update { none; };
//};
//
//zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
// type master;
// file "named.loopback";
// allow-update { none; };
//};
//
//zone "1.0.0.127.in-addr.arpa" IN { #反向解析文件
// type master;
// file "named.loopback";
// allow-update { none; };
//};
//
//zone "0.in-addr.arpa" IN {
// type master;
// file "named.empty";
// allow-update { none; };
//};
//
改成这样
zone "c2505.com" IN {
type master;
file "c2505.com.zones";
allow-update { none; };
};
zone "157.168.192.in-addr.arpa" IN {
type master;
file "192.168.157.zones";
allow-update { none; };
};
接下来改第三个文件
[root@bogon named]# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves
这里需要生成指定文件,以named.empty 为模板
用cp
生成正向解析文档
$TTL 3H #时间(3消失)
@ IN SOA c2505.com. admin.c2505.com. ( # @是继承 SOA是服务注册中继
0 ; serial #当前文件的编号,越高>代表更新次数越多,0时是新文件,1代表同步
1D ; refresh #刷新间隔
1H ; retry #重置次数
1W ; expire #过期时间
3H ) ; minimum #最小间隔时间
NS dns1.c2505.com. #信息本身,指定谁是dns服务器
dns1 A 192.168.158.39 #ipv4地址解析记录
dns01 CNAME dns1.c2505.com. #别名记录
mail A 192.168.158.40 #邮件解析记录
mail MX 10 mail.c2505.com.
生成反向解析文档
$TTL 3H
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
进入客户机配置resolv.conf,配置主服务器的内容
[root@bogon ~]# vim /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.157.142
在客户机里用nslookup对正向地址进行解析
[root@bogon ~]# nslookup
> dns1.c2505.com
Server: 192.168.157.142
Address: 192.168.157.142#53
Name: dns1.c2505.com
Address: 192.168.157.142
>
接下来配置反向解析
vim 192.168.157.zones
$TTL 3H
@ IN SOA c2505.com. admin.c2505.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ NS dns1.c2505.com.
142 PTR dns2.c2505.com.
143 PTR mail.c2505.com.
143 PTR dns01.c2505.com.
这样,主要架构就完成了
但是有问题,万一主服务器挂了,那整个架构完蛋了,所以接下来配置一个从服务器,从服务器无需编写区域文件
[root@bogon ~]# cd /var/named/
[root@bogon named]# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves
主服务器的 /etc/named.rfc1912.zones 配置文件
zone "c2505.com" IN {
type master;
file "c2505.com.zones";
allow-update { none; };
allow-transfer { 192.168.157.144; };
};
zone "157.168.192.in-addr.arpa" IN {
type master;
file "192.168.157.zones";
allow-update { none; };
allow-transfer { 192.168.157.144; };
从服务器的主配置文件修改
[root@bogon slaves]# vim /etc/named.conf
options {
listen-on port 53 { 192.168.157.144; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
/*
然后再修改
zone "c2505.com." IN {
type slave;
file "slaves/2505.com.zones";
masters { 192.168.157.142; };
};
zone "157.168.192.in-addr.arpa" IN {
type slave;
file "slaves/192.168.157.zones";
masters { 192.168.157.142; };
};
接下来就是关闭主服务器在143客户机里配置然后解析
# Generated by NetworkManager
nameserver 192.168.157.144
nameserver 192.168.157.142
~
[root@localhost ~]# nslookup
> mail.c2505.com
Server: 192.168.157.144
Address: 192.168.157.144#53
Name: mail.c2505.com
Address: 192.168.157.143
> exit
解析成功,说明配置主服务器成功
dig命令指定域名
可以指向某服务器进行解析
[root@localhost ~]# dig mail.c2505.com @192.168.157.144
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.16 <<>> mail.c2505.com @192.168.157.144
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21708
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;mail.c2505.com. IN A
;; ANSWER SECTION:
mail.c2505.com. 10800 IN A 192.168.157.143
;; AUTHORITY SECTION:
c2505.com. 10800 IN NS dns1.c2505.com.
;; ADDITIONAL SECTION:
dns1.c2505.com. 10800 IN A 192.168.157.142
;; Query time: 2 msec
;; SERVER: 192.168.157.144#53(192.168.157.144)
;; WHEN: 三 6月 18 12:04:35 CST 2025
;; MSG SIZE rcvd: 94
客户端写解析脚本