Linux DNS服务系列之原理介绍及正反向解析配置

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介:

前言

我们在访问一个网站的时候,只要输入该网站的网址就会跳转到该网站页面,而实现这一过程就需要DNS服务器将域名解析为IP地址,进而实现数据通信。那么DNS服务器是如何工作的呢?本系列分为两部分,本文将详解DNS服务原理及正反向解析配置。

DNS服务原理详解

DNS相关知识

DNS:Domain Name Service,域名解析服务

监听端口:udp/53,tcp/53

应用程序:bind

根域:.

一级域:

            组织域:.com, .org, .net, .mil, .edu, .gov, .info, .cc, .me, .tv

            国家域:.cn, .us, .uk, .jp, .tw, .hk, .iq, .ir

            反向域:.in-addr.arpa

DNS树状结构

wKioL1Ujm6DTDAHCAADU75CZLqc087.jpg

解析方式

正向解析:FQDN --> IP

反向解析:IP --> FQDN

FQDN:(Fully Qualified Domain Name)全称域名

DNS查询方式

递归:DNS请求被服务器接受后,如果属于此服务器管辖范围则请求上级服务器依次传递请求,并且依次传递结果给发出请求的主机。

wKioL1Ujrk7DOayeAAHRZIa112o736.jpg  

1
#客户端指向的服务器一定给递归服务

迭代: DNS请求被服务器接受后,如果不是自己管辖范围,让客户端访问根域服务器,然后跟域通知客户端去访问下级服务器,直到最后客户端访问管辖请求域名的服务器为止。

wKiom1Ujs6mSGTc8AAHT8A4ZwxU859.jpg

区域解析库

资源记录:rr(resource record)用于此记录解析的属性

                SOA: Start Of Authority, 起始授权记录,一个区域文件只能有一个

                 NS:Name Server,域名服务器

                 MX: Mail eXchange, 邮件交换器,MX记录有优先级属性(0-99)

                 A:FQDN --> IP,专用于正向解析库

                 PTR: IP --> FQDN,专用于反向解析库

                 AAAA:FQDN --> IPv6,专用于正向解析库

                 CNAME: Canonical Name,正式名称

DNS服务器类型

主DNS服务器

从DNS服务器

缓存服务器

区域传送

解析库文件同步的过程,即辅助DNS服务器与主DNS服务器间的区域文件同步传输过程。

完全区域传送:传送区域的所有数据,AXFER

增量区域传送:传送区域中改变的数据,IXFER

DNS资源记录格式

格式:

1
name   [ttl]  IN     RRType    value

SOA记录:

1
2
3
4
5
6
7
8
9
10
11
12
name: 区域名称,通常可以简写为@
value: 主DNS服务器的FQDN,也可以当前区域的区域名称
注意:任何解析库文件的第一个记录的类型必须是SOA
 
例如:
@    IN    SOA    ns.scholar.com.    admin.scholar.com.    (
                                      serial number ; #解析库版本号,例如2015040701
                                      refresh  time   ; #刷新时间,即同步时间
                                      retry  time     ; #重试时间
                                      expire  time    ; #过期时间
                                      negative answer ttl ; #否定答案的统一缓存时长
                                     

NS记录:

1
2
3
4
5
6
7
name: 区域名称
value: DNS服务器的FQDN
注意:如果有多台NS服务器,每一个都必须有对应的NS记录;
       对于正向解析文件来讲,每一个NS的FQDN都应该有一个A记录;
 
例如:
@    IN    NS    ns.scholar.com.

MX记录:

1
2
3
4
5
6
7
8
9
name: 区域名称
value: 邮件服务器的FQDN
优先级:0-99.数字越小,越优先
注意:如果有多台MX服务器,每一个都必须有对应的MX记录;但各MX记录还有优先级属性
对于正向解析文件来讲,每一个NS的FQDN都应该有一个A记录;
 
例如:
@    IN    MX 10    mail.scholar.com.
@    IN    MX 20    mail2.scholar.com.

A记录:

1
2
3
4
5
6
7
8
name: FQDN(可简写)
value: IP
 
例如:
www    IN    A    172.16.10.10
www    IN    A    172.16.10.100
pop3    IN   A    172.16.10.10
imap    IN   A    172.16.10.10

AAAA记录:

1
2
name: FQDN(可简写)
value: ipv6 IP

CNAME记录:

1
2
3
4
5
6
name: FQDN
value: FQDN
 
例如:
www    IN    A    172.16.10.10
ftp     IN    CNAME    www

PTR记录:

1
2
3
4
5
6
name: 逆向的主机IP地址加后缀 in -addr.arpa,例如172.16.10.10 /16 , 网络地址为172.16, 
主机地址为10.10,其name为10.10. in -addr.arpa.(可简写)
value: FQDN
 
例如:
10    IN    PTR    www.scholar.com.

DNS服务配置之正反向解析

服务程序包介绍

Linux下可提供DNS服务的程序包为bind(bekerley internet name domain)

服务脚本:/etc/rc.d/init.d/named

主配置文件:/etc/named.conf, /etc/named.rfc1912.zones

区域解析库文件:/var/named/zone_name.zone

主配置文件中通常有三个区域:根、localhost、127.0.0.1的反向区域

域类型:主域(master)、从域(slave)、缓存域(hint)、转发域(forward)

实战正反向解析配置

案例要求:

DNS服务器地址:172.16.10.10

www:172.16.10.10

mail:172.168.10.12

pop:mail别名,指向mail

ftp:www别名,指向www

要求可以实现正反向解析

编辑主配置文件,添加正向区域和反向区域

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
[root@scholar ~] # vim /etc/named.conf 
 
 
options {                                                 #全局配置
         //listen-on  port 53 { 127.0.0.1; };               #注释后监听全部IP的53端口
         //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" ;
         //allow-query      { localhost; };           #访问控制,注释后允许所有IP访问
         recursion  yes ;                              #是否递归
 
         //dnssec-enable  yes ;
         //dnssec-validation  yes ;
         //dnssec-lookaside  auto;
 
         /* Path to ISC DLV key */
         bindkeys- file  "/etc/named.iscdlv.key" ;
 
         managed-keys-directory  "/var/named/dynamic" ;
};
 
logging {                                            #定义日志
         channel default_debug {
                 file  "data/named.run" ;
                 severity dynamic;
         };
};
 
zone  "."  IN {
         type  hint;
         file  "named.ca" ;
};
zone  "scholar.com"  IN {                              #正向区域
         type  master;
         file  "scholar.com.zone" ;
};
zone  "10.16.172.in-addr.arpa"  IN {                   #反向区域
         type  master;
         file  "172.16.10.zone" ;
}; 
include  "/etc/named.rfc1912.zones" ;                 
//include  "/etc/named.root.key" ;

创建正向区域文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@scholar named] # vim scholar.com.zone   #必须与区域文件名保持一致
 
$TTL 3600
@       IN      SOA     dns.scholar.com.        admin.scholar.com. (
                                                         2015040701
                                                         2H
                                                         10M
                                                         7D
                                                         1D )
@       IN      NS      dns
@       IN      MX 10   mail
dns     IN      A       172.16.10.10
mail    IN      A       172.16.10.12
www     IN      A       172.16.10.10
pop     IN      CNAME   mail
ftp      IN      CNAME   www

创建反向区域文件

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@scholar named] # vim 172.16.10.zone    #必须与区域文件名保持一致
 
$TTL 3600
@       IN      SOA     dns.scholar.com.        admin.scholar.com. (
                                                         2015040701
                                                         2H
                                                         10M
                                                         7D
                                                         1D )
@       IN      NS      dns.scholar.com.
10      IN      PTR     dns.scholar.com.
12      IN      PTR     mail.scholar.com.
10      IN      PTR     www.scholar.com.

修改权限及属组

wKiom1Uj4ASBDahIAAHr6X_dfFs757.jpg

检查语法,启动服务并设置开机自启

wKiom1Uj4gvh4xDoAAGoCPMKA9o370.jpg

查看tcp和upd的53端口是否开启

wKiom1Uj4rjT2t5GAACM16TTrh4308.jpg

正向解析测试

wKiom1Uj5XPAAffxAAHtMqEYfRw707.jpg

反向解析测试

wKiom1Uj5rvxSiMvAAIczjZgdtk946.jpg

The end

经过以上测试,正向反向都可以成功解析,至此DNS服务的基本服务算是完成了,测试命令除了dig还可使用nslookup等,想了解dig和其它测试命令命令想自行查手册,这里不做详解了。第二部分将会讲解主从复制,子域授权和转发以及view,如有兴趣请关注下文。

以上仅为个人学习整理,如有错漏,大神勿喷~~~



本文转自 北城书生  51CTO博客,原文链接:http://blog.51cto.com/scholar/1629834

相关文章
|
30天前
|
安全 Linux 开发工具
【Linux】vim使用与配置教程
Vim是一款功能强大的文本编辑器,广泛应用于Linux环境,是开发者和系统管理员的必备工具。本文介绍了Vim的基本操作与简单配置,涵盖命令模式、插入模式和底行模式的使用方法,以及光标定位、复制粘贴、搜索替换等常用技巧。同时,文章还提供了实用的分屏操作和代码注释方法,并分享了通过`.vimrc`文件进行个性化配置(如显示行号、语法高亮、自动缩进等)的技巧,帮助用户提升文本编辑效率。掌握这些内容,能让Vim更好地服务于日常工作与开发需求。
136 3
|
8天前
|
域名解析 存储 网络协议
域名解析的终极指南:从基础到进阶,彻底搞懂 DNS 记录
域名解析是网站运行的基础,正确配置DNS记录至关重要。本文从基础到进阶全面解析DNS知识,涵盖A、AAAA、CNAME、MX、TXT、CAA等常见记录类型及其应用场景。通过学习,你将了解DNS的工作原理,掌握如何优化域名配置,确保网站与邮件服务高效运行。无论搭建个人博客还是企业官网,本文都能助你轻松搞定域名解析!
66 0
|
30天前
|
域名解析 存储 缓存
深入学习 DNS 域名解析
在平时工作中相信大家都离不开 DNS 解析,因为 DNS 解析是互联网访问的第一步,无论是使用笔记本浏览器访问网络还是打开手机APP的时候,访问网络资源的第一步必然要经过DNS解析流程。
|
13天前
|
安全 Linux 网络安全
在Linux(CentOS和AWS)上安装更新的git2的方法并配置github-ssh
经过以上这些步骤,你现在就能在GitHub上顺利往返,如同海洋中的航海者自由驰骋。欢迎你加入码农的世界,享受这编程的乐趣吧!
45 10
|
1月前
|
Java Linux 应用服务中间件
在Rocky Linux 9上安装JDK并配置环境变量!
本教程介绍在Rocky Linux 9上安装JDK并配置环境变量的完整步骤。首先更新系统,清理旧版本JDK相关包及残留文件,确保环境干净。接着搜索并安装所需版本的JDK(如OpenJDK 17),验证安装是否成功。然后查找JDK安装路径,配置全局环境变量`JAVA_HOME`和`PATH`,最后验证环境变量设置。按照此流程操作,可顺利完成Java开发环境搭建,支持多版本切换(如JDK 8/11/17)。生产环境请谨慎操作,避免影响现有服务。
114 21
|
15天前
|
人工智能 Kubernetes Ubuntu
linux配置IP
linux配置IP
56 1
|
23天前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
|
11月前
|
Linux
linux中服务管理
在Linux服务管理中,从传统的System V init到Upstart,再到广泛采用的systemd,管理方式不断发展。systemd以其强大的功能和依赖解决成为现代Linux的核心。`systemctl`是管理服务的关键命令,如启动(`start`)、停止(`stop`)、重启(`restart`)服务及设置开机启动(`enable`)或取消(`disable`)。了解和服务管理,特别是systemd和`systemctl`的使用,对系统管理员至关重要。其他如xinetd用于控制网络服务,而特定环境下有OpenRC等工具。
90 2
|
安全 Ubuntu 网络协议
Linux中的服务管理
Linux系统可以同时运行数百个任务。其中大多数都属于操作系统环境的组成部分,不过可能也会有那么一两个你不需要的**守护进程**。有3种可用于启动守护进程和服务的工具,Linux发行版支持其中任意一种。传统的SysV系统使用/etc/init.d中的脚本。较新的systemd守护进程除了使用/etc/init.d之外,还用到了systemctl调用。还有些发行版使用的是upstart,配置脚本保存在/etc/init中。systemd如今已经取代了SysVinit系统。upstart是由Ubuntu开发并采用的,但是在14.04版中,已经改成了systemd。
222 3
|
Ubuntu 关系型数据库 MySQL
【Linux进阶篇】启动流程和服务管理
【Linux进阶篇】启动流程和服务管理
234 0

相关产品

  • 云解析DNS