DNS(2) -- bind服务介绍及配置文件语法格式
1. bind服务
1.1 bind概述
BIND 是由美国加州大学开发并且维护的,BIND是一个开源、稳定、且应用广泛的DNS服务。
- 开源:指 BIND 服务源代码是开放的;
- 稳定:指 BIND 服务运行非常稳定;
- 广泛:政府企业、单位机构、学校、等;
BIND提供域名解析服务、权威域名服务、DNS调试工具:
- 域名解析服务:将域名解析为IP地址;
- 权威域名服务:能从该服务器查询到完整域名对应的IP地址,则这台服务器就算权威解析;
- DNS调试工具:主要提供DNS客户端调试工具,供客户端使用;
1.2 bind程序包结构
安装bind
[root@dns01 ~]# yum install bind bind-utils [root@dns01 ~]# rpm -q bind
bind-9.11.4-16.P2.el7.x86_64
其中:
bind-utils:bind客户端程序集,例如dig, host, nslookup等;
bind:提供的dns server程序、以及几个常用的测试程序;
bind-libs:被bind和bind-utils包中的程序共同用到的库文件;
bind包文件:
bind的system的unit文件:
/usr/lib/systemd/system/named.service
bind主配置文件:
/etc/named.conf
主程序文件:
/usr/sbin/named
bind子配置文件:
/etc/named.rfc1912.zones
区域解析数据库文件,也就是IP地址与域名的对应关系存放的目录:
/var/named
bind的日志文件默认存放在/var/log/messages文件中。
1.3 bind配置文件详解
1.3.1 bind配置文件
1.3.1.1 bind主配置文件
主配置文件组成部分::
- options {} :全局选项(监听端口、数据文件存储位置、缓存位置、权限等)
- logging {} :服务日志选项
- zone . {} :自定义区域配置
- include :包含其他的文件
主配置文件注意事项
- 语法非常严格;
- 文件权限属主 root ,属组 named ,文件权限 640;
配置文件各个字段意义:
[root@dns01 ~]# cat /etc/named.conf
options {
#监听的地址和端口,localhost表示监听在本机所有地址上;
listen-on port 53 { localhost; };
listen-on-v6 port 53 { ::1; };
#区域数据库文件存放的目录;
directory "/var/named";
#dns解析过内容的缓存文件
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";
#允许谁向本台DNS发起查询请求(localhost|ip|any);
allow-query { any; };
#本DNS是否提供递归请求服务,yes表示提供,no表示不提供;
recursion yes;
dnssec-enable yes;
dnssec-validation yes; /* Path to ISC DLV key */
bindkeys-file "/etc/named.root.key"; managed-keys-directory "/var/named/dynamic"; pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
#控制日志输出的级别以及输出的位置
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
#默认可以对任何域名提供解析服务;因为named.ca中存储的是全球根域服务器;
zone "." IN {
type hint;
#区域配置文件名称;
file "named.ca";
};
#包含的其他文件;
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
1.3.1.2 bind区域配置文件
可以使用bind来解析自定义的的域名,需要配置自定义的区域解析文件。
自定义域分为如下两类:
- 主机域:
- 1.主机域其实是一个假域;
- 2.主机域其实是不能解析到互联网上;
- 3.主机域它只对局域网(内网)提供服务;
- 业务域:
- 1.业务域一般都是真实可用的;
- 2.业务域则为一个真正需要对外提供服务的域名;
首先要自定义区域配置文件,指明区域解析文件的名称:
区域 zone 文件定义在 /etc/named.conf 配置;
也可以配置在自定义的其他文件里,并在 named.conf 里 include;
注意文件的权限,属主 root 属组 named 文件权限 640;
zone "example.com" IN {
type master|slave;
#自定义区域类型
file /path/to/zonefile;
#绝对路径和相对路径
allow-update {ip|none};
#允许哪个ip可以使用nsupdate动态更新 区域文件
};
1.3.2 区域解析文件
自定义的区域数据库解析范例以及编写注意事项:
- 1.严格注意语法书写,其格式非常严格;
- 2.记录不准许折行书写;
- 3.单行记录开头不准许空格或tab开头;
- 4.文件权限属主 root ,属组 named ,文件权限 640;
资源记录语法格式
区域数据库解析文件是由资源记录RR组成的,不论哪种记录都包含五项元素,其语法格式如下:
语法:name [TTL] IN rr_type value 元素说明:
name 指示拥有资源记录的 DNS 域名,该名称与资源记录所在的控制台树节点的名称相同
TTL 缓存的时间,生命期,以秒为单位,可定义为类似变量$TTL 86400,那么以下各条相同时间的资源记录就可以省略
IN 代表Internet,保留下来不动就可以
rr_type 资源记录类型,例如SOA,表示起始授权记录
value 记录特定数据,描述资源的信息
注意:
@代表当前区域的域名,可以用来引用当前域名,例如@ IN SOA;
同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应
同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机;
1.3.2.1 SOA记录
SOA记录位于解析文件的开始,每个解析文件都有唯一一个SOA记录,用于描述这个区域的整体信息,格式如下:
$TTL 86400 <==定义整个记录的TTL时间为86400
|example.com. | IN | SOA | ns.example.com. | nsadmin.example.com.| (
| name | IN |TYPE| value 1 | value 2 |
2021071501 ;serial <==value 3
2H ;refresh <==value 4
10M ;retry <==value 5
1W ;expire <==value 6
1D ) ;negative answer ttl <==value 7
以上的元素意义如下:
| 元素 | 意义 |
|---|---|
| name | 当前区域的名字,例如“example.com.” com后的点必须写,不然系统会自动将域名再补一次,变成"example.com.example.com." |
| type | 资源类型为SOA类型 |
| value1 | 主DNS的名称,例如ns.example.com. |
| value2 | DNS服务器的管理员邮箱,注意:因为@在资源记录中有特殊含义,这里用点来代替,例如nsadmin.example.com. |
| value3 | 序列号(serial number) 十进制表示,不能超过10位,通常使用日期时间戳,例如2021071501;其作用是主从同步,当主DNS服务器的解析文件发生变化时,管理员需要手动更新此序列号的值,主服务器比对主从的序列号不一致,会立刻进行主从同步操作,否则会等待刷新时间到了才由从服务器同步主服务器数据。 |
| value4 | 刷新时间,表示从服务器从主服务器请求同步解析的时间间隔,默认以秒为单位,支持1h、1d表示,例如:2H。 |
| value5 | 重试时间,表示从服务器请求同步失败时,再次尝试同步的时间间隔,应该比同步间隔小 ,例如10m。 |
| value6 | 过期时间,表示从服务器联系不到主服务器时,辅助DNS在多长时间内认为其缓存是有效的, 例如1W。 |
| value7 | 否定答案的TTL值,表示不存在的记录缓存时长, 将不正确的域名缓存起来,直接返回结果给用户,不需要查询。 |
1.3.2.2 NS记录
NS记录的格式如下:
| name | TTL | IN | TYPE | value |
|example.com.|86400| IN | NS | ns1.example.com.|
|example.com.|86400| IN | NS | ns2.example.com.|
以上的元素意义如下:
| 元素 | 意义 |
|---|---|
| name | 当前区域的域名 |
| type | 类型为NS |
| value | 当前区域的某DNS服务器的域名,例如ns1.example.com. |
注意:
一个区域可以有多个NS记录,表示主从关系;
相邻的两个资源记录的name相同时,后续的可省略;
对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录,用于告知客户端DNS的地址。
ns1.example.com. 86400 IN A 192.168.169.5
ns2.example.com. 86400 IN A 192.168.169.6
1.3.2.3 A记录和AAAA记录
A 记录可实现将域名解析为 IPV4 地址,AAAA记录可实现将域名解析为 IPV6 地址,两者格式相同:
www.example.com. IN A 1.1.1.1
www.example.com. IN A 1.1.1.2
以上的元素意义如下:
| 元素 | 意义 |
|---|---|
| name | FQDN,即域名 |
| type | 类型为A或AAAA |
| value | 某IPv4地址或IPV6地址; |
1.3.2.4 CNAME记录
CNAME为别名记录,格式如下:
www.example.com. 86400 IN CNAME www.example1.com.
以上的元素意义如下:
| 元素 | 意义 |
|---|---|
| name | FQDN,即域名 |
| type | CNAME |
| value | 真正名字的FQDN |
注意:
涉及到名字,也需要在A记录中增加对应的解析记录,例如:
www.example1.com. 86400 IN A 101.200.188.230
1.3.2.5 PTR记录
PTR记录为逆向解析记录,由IP地址解析域名,示例:
#表示把1.2.3.4的IP地址解析为www.example.com.域名
4.3.2.1.in-addr.arpa. 86400 IN PTR www.example.com.
#注意:网络地址及后缀可省略;主机地址依然需要反着写
4 86400 IN PTR www.example.com.
以上的元素意义如下:
| 元素 | 意义 |
|---|---|
| name | IP,有特定格式,把IP地址反过来写(例如1.2.3.4,要写作4.3.2.1);然后加特定后缀:in-addr.arpa.;所以完整写法为:4.3.2.1.in-addr.arpa. |
| type | PTR |
| value | FQDN |
1.3.2.6 MX记录
MX为区域的邮件记录,一个区域内MX记录可有多个,示例如下:
example.com. 86400 IN MX 10 mail.example.com.
86400 IN MX 20 mail2.example.com. <==name相同,下面的记录可以忽略此元素
#涉及到名字,需要在A记录中增加对应解析项:
mail 86400 IN A 3.3.3.3 <==mail为简写,其后没有加[ . ],会自动补上域名
mail2 86400 IN A 3.3.3.4
以上的元素意义如下:
| 元素 | 意义 |
|---|---|
| name | 当前区域的名字 |
| type | MX |
| value | 当前区域的某邮件服务器(smtp服务器)的主机名,由2部分组成:1.服务器的优先级,由数字(0-99)表示,表示此;数字越小优先级越高;2.服务器名; |
DNS(2) -- bind服务介绍及配置文件语法格式的更多相关文章
- centos7 主从dns配置 bind服务
一,配置前请先关闭防火墙selinux 防火墙关闭方法,参见上一篇文章. setenforce 0 #临时关闭 修改/etc/selinux/config 文件 将SELINUX=enforc ...
- 玩转DNS服务器——Bind服务
合理的配置DNS的查询方式 实验环境: 虚拟机:VMware® Workstation 15 Pro 均使用NAT连接 网段为192.168.1.0/24 DNS 服务器 ---- Centos ...
- Apache服务介绍
http服务器程序 httpd 服务名称 apache 软件包名 特性: 高度模块化: core + modules DSO: Dynamic Share ...
- DNS与BIND介绍
前言 DNS(Domain Name System),网域名称系统,是互联网上基础性的服务.DNS 将域名和网络服务器的 IP 地址相互映射,并将这些数据保存至 DNS 服务器.两台主机通信事实上是依 ...
- CentOS6.7搭建部署DNS服务 (详解主配置文件)
-DNS服务器的基本原理 域名简介:使用tcp/udp协议,默认使用53端口号 默认情况下,客户端发起的查询请求都是用UDP/53查询的. 默认情况下,从从服务器到主服务器传输数据用的是TCP/53. ...
- 《linux就该这么学》第十四节课:第13章,部署DNS域名解析服务(bind服务)
(借鉴请改动) 第十二章收尾 12.2.nfs网络文件系统 RHEL7默认安装了nfs,配置文件在 /etc/export 写入格式:共享目录 允许的客户端(参数) ro ...
- 使用Bind服务配置DNS服务器
bind是什么 bind是DNS服务器软件 ,他的服务名称是named 功能区分: 正向解析:根据主机名查找对应的IP地址 反向解析:根据IP地址查找对应的主机名(域名) 工作形式上区分: 主服务器: ...
- DNS服务器:主要介绍DNS的服务原理以及安装及其主从配置
DNS服务器:主要介绍DNS的服务原理以及安装及其主从配置 一.DNS简介 1.DNS DNS是域名系统(Domain Name System)的简称,它是一个将域名和IP相互映射的分布式数据库 ...
- Linux运维实战之DNS(bind)服务器的安装与配置
转自http://sweetpotato.blog.51cto.com/533893/1598225 上次博文我们讨论了DNS的基础,本次博文我们重点来看看如何配置一台DNS服务器. [本次博文的主要 ...
- Debian9.5系统DNS服务器BIND软件配置说明
DNS的出现的历史 网络出现的早期是使用IP地址通讯的,那时就几台主机通讯.但是随着接入网络主机的增多,这种数字标识的地址非常不便于记忆,UNIX上就出现了建立一个叫做hosts的文件(Linux和W ...
随机推荐
- Java面试题【3】
20)什么是线程安全? 含义:当多个线程访问某个方法时,不管你通过怎样的调用方式或者说这些线程如何交替的执行,我们在主程序中不需要去做任何的同步,这个类的结果行为都是我们设想的正确行为,那么我们就可以 ...
- 19 JavaScript的hook
19 JavaScript的hook 什么叫hook? Hook技术又叫钩子函数,在系统没有调用该函数之前,钩子程序就捕获该消息,钩子函数先得到该函数的控制权,这时钩子函数既可以改变该函数的执行行为, ...
- OpenHarmony应用实现二维码扫码识别
本文转载自<OpenHarmony应用实现二维码扫码识别>,作者zhushangyuan_ 概念介绍 二维码的应用场景非常广泛,在购物应用中,消费者可以直接扫描商品二维码,浏览并购买产品 ...
- Go 语言学习:了解 const 关键字及常量声明
如果一个变量应该有一个固定的.不能改变的值,你可以使用const关键字. const关键字将变量声明为"常量",这意味着它是不可改变和只读的. 语法 const CONSTNAME ...
- Unity 音乐或者视频播放完毕之后执行方法
视频播放完毕后,执行某个方法 方法1 官方给的解释 private VideoPlayer video2; private void Awake() { video2.loopPointReached ...
- HarmonyOS位置服务开发指南
位置服务开发概述 移动终端设备已经深入人们日常生活的方方面面,如查看所在城市的天气.新闻轶事.出行打车.旅行导航.运动记录.这些习以为常的活动,都离不开定位用户终端设备的位置. 当用户处于这些丰富 ...
- HDC 2022 开发者主题演讲与技术分论坛干货分享(附课件)
原文:https://mp.weixin.qq.com/s/axm6HyX0PqKCKksFxIfehg,点击链接查看更多技术内容. 11月4日-11月6日,HDC 2022在东莞成功举办,这是 ...
- 演示webuploader和cropperjs图片裁剪上传
最近有个项目要在浏览器端裁剪并上传图片.由于缺乏人力,只能我上阵杀敌.通过参考各种文章,最后决定用cropperjs进行图片裁剪,用webuploader上传文件.本文涉及到的知识至少有Java基础. ...
- TypeScript 中泛型的理解?应用场景?
一.是什么 泛型程序设计(generic programming)是程序设计语言的一种风格或范式 泛型允许我们在强类型程序设计语言中编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型 ...
- webpack中常见的Plugin?解决了什么问题?
一.是什么 Plugin(Plug-in)是一种计算机应用程序,它和主应用程序互相交互,以提供特定的功能 是一种遵循一定规范的应用程序接口编写出来的程序,只能运行在程序规定的系统下,因为其需要调用原纯 ...