第十四章 DNS系统

一、DNS系统的作用及类型
DNS 系统的作用
正向解析:根据主机名称(域名)查找对应的 IP 地址
反向解析:根据 IP 地址查找对应的主机域名
DNS 系统的分布式数据结构

? 缓存域名服务器
– 也称为高速缓存服务器
– 通过向其他域名服务器查询获得域名 -> IP 地址记录
– 将域名查询结果缓存到本地,提高重复查询时的速度
? 主域名服务器
– 特定 DNS 区域的官方服务器,具有唯一性
– 负责维护该区域内所有域名 -> IP 地址的映射记录
? 从域名服务器
– 也称为 辅助域名服务器
– 其维护的 域名 -> IP 地址记录 来源于主域名服务器

二 BIND安装配置
? BIND(Berkeley Internet Name Daemon)
– 伯克利 Internet 域名服务
– 官方站点:https://www.isc.org/
? 相关软件包
– bind-9.9.4-37.el7.x86_64.rpm
– bind-utils-9.9.4-37.el7.x86_64.rpm
– bind-libs-9.9.4-37.el7.x86_64.rpm
– bind-chroot-9.9.4-37.el7.x86_64.rpm
? BIND 服务器端程序
– 主要执行程序:/usr/sbin/named
– 默认监听端口:53
– 主配置文件
? /etc/named.conf
– 保存 DNS 解析记录的数据文件位于
? /var/named/
主配置文件 named.conf
? 全局配置部分
– 设置 DNS 服务器的全局参数
– 包括监听地址/端口、数据文件的默认位置、允许访问的网段等
– 使用 options { …… }; 的配置段
? 区域配置部分
– 设置本服务器提供域名解析的特定 DNS 区域
– 包括域名、服务器角色、数据文件名等
– 使用 zone “区域名” IN { …… }; 的配置段

? 全局 TTL 配置项及 SOA 记录
– $TTL(Time To Live,生存时间)记录
– SOA(Start Of Authority,授权信息开始)记录
– 分号“;” 开始的部分表示注释信息
? 正向域名解析记录
– NS 域名服务器(Name Server)记录
– MX 邮件交换(Mail Exchange)记录
– A 地址(Address)记录,只用在正向解析区域中
– CNAME 别名(Canonical Name)记录
? 反向域名解析记录
? PTR 指针(Point)记录,只用在反向解析区域中
? 记录的第一列指定 IP 地址中的主机地址部分即可
特殊示例
? 基于域名解析的负载均衡
– 同一域名对应到多个 IP 地址
? 泛域名解析
– 找不到精确对应的 A 记录时,使用“”进行匹配
? www IN A 173.16.16.173
? www IN A 173.16.16.174
? www IN A 173.16.16.175
?
IN A 173.16.16.173
对配置文件进行语法检查
? named-checkconf 工具
? named-checkconf [-z] [主配置文件]
? named-checkzone 工具
? named-checkzone <域名> <区域数据文件>
辅助DNS服务器建立
[[email protected] chroot]# cat /var/named/chroot/etc/named.conf
options
{
// Put files that named is allowed to write in the data/ directory:
directory "/var/named"; // "Working" directory

    listen-on port 53       { any; };
    allow-query         { any; };

notify yes; #####通知从DNS全局
#also-notify {192.168.99.99 ;};
recursion yes;
listen-on-v6 port 53 { ::1; };
};
zone "wang.com" IN {
type master;
file "lqb.com.zon";
allow-transfer {192.168.99.99;}; ####只允许通知的从服务器
notify yes; ####主从同步通知从DNS这个配置很重要
also-notify {192.168.99.99 ;};
};

[[email protected] chroot]# vim /var/named/chroot/var/named/
data/ dynamic/ wang.com.zon slaves/
[[email protected] chroot]# cat /var/named/chroot/var/named/wang.com.zon
$TTL 1D
$ORIGIN wang.com.
@ IN SOA wang.com. admin.wang.com. (
20180511; serial ########这个很重要,每次修改记录的时候都要修改这个数T+1(每次修改完主DNS配置后,都需要改一下serial序列号,且必须比从服务器号大才会同步。)
1D ; refresh
1H ; retry
1W ; expire
3H ; minimum
)
IN NS ns1.wang.com.

mail IN A 172.20.66.111
www2 IN A 172.20.66.112
ns1 IN A 192.168.99.99
www IN A 172.20.66.110
ftp IN A 10.128.105.250

从DNS配置(注意目录权限)
[[email protected] ~]# vim /var/named/chroot/etc/named.conf

options {
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
allow-query { any; };
directory "/var/named";
recursion yes;
};

zone "wang.com" IN {
type slave; ###本机是从服务器
file "slaves/wang.com.zon"; ###将同步后的文件放置在哪里,这里是相对路径绝对路径是/var/named/chroot/var/named/slaves/
masters { 192.168.99.98; }; ###指定主服务器的ip地址
};

小知识
区域(zone)和域(domain):
FQDN --> IP正向解析库;区域
IP --> FQDN反向解析库;区域
区域数据库文件:
资源记录:Resource Record, 简称rr、记录类型如下:
1、SOA: Start Of Authority,起始授权记录,一个区域解析库有且只能有一个SOA记录,而且必须br/>放在第一条,而且在编写时不能使用“@”符号,使用“.”符号代替,后续有示例:
2、NS: Name Service,域名服务记录,一个区域解析库可以有多个NS记录,其中一个为主的,任何
一个NS记录后面的服务器名字,都应该在后续有一个A(地址记录);
3、A: Address, 地址记录,FQDN --> IPv4(正向解析库);
4、AAAA: 地址记录, FQDN --> IPv6(正向解析库);
5、CNAME:Canonical Name,别名记录;
6、PTR: Pointer,IP --> FQDN(反向解析库),IP有特定格式,把IP地址反过来写,1.2.3.4,
要写作4.3.2.1;而有特定后缀:in-addr.arpa.,所以完整写法为:4.3.2.1.in-addr.arpa.
7、MX: Mail eXchanger,邮件交换器,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录
优先级:0-99,数字越小优先级越高;
三、构建缓存域名服务器
可以通过以下设置完成:
    forwarders{218.30.19.40; };
也可以通过以下选项让服务器转发所有dns查询到forwarders服务器;
    forward only或first;

作业:

第十四章 DNS系统

原文地址:http://blog.51cto.com/jxwpx/2316959

时间: 2024-11-05 12:33:52

第十四章 DNS系统的相关文章

TCP/IP详解 卷一(第十四章 DNS:域名系统)

域名系统(DNS Domain Name System)是一种用于TCP/IP应用程序的分布式数据库,它提供主机名字和IP地址之间的转换及有关电子邮件的选路信息. 从应用角度上看,对DNS的访问时通过一个地址解析器(resolver)来完成的. 在Unix主机中,该解析器主要是通过两个库函数gethostbyname(3)和gethostbyaddr(3)来访问的.前者接收主机名字返回IP地址,而后者接收IP地址来寻找主机名字. 解析器通过一个或多个名字服务器来完成这种相互转换. DNS基础 D

java-第十四章-代参的方法(二)-实现MyShopping系统的添加会员功能

 package com.wxws.sms; public class Customer {  int No;  int integarl; } package com.wxws.sms; public class Customers {  Customer[] customers = new Customer[100];  public void add(Customer cust){   for (int i = 0; i <customers.length; i++) {    if (c

Python基础教程(第十四章 网络编程)

本文内容全部出自<Python基础教程>第二版,在此分享自己的学习之路. ______欢迎转载:http://www.cnblogs.com/Marlowes/p/5538341.html______ Created on Marlowes 本章将会给读者展示一些例子,这些例子会使用多种Python的方法编写一个将网络(比如因特网)作为重要组成部分的程序.Python是一个很强大的网络编程工具,这么说有很多原因,首先,Python内有很多针对常见网络协议的库,在库顶部可以获得抽象层,这样就可以

Gradle 1.12 翻译——第十四章. 教程 - 杂七杂八

有关其他已翻译的章节请关注Github上的项目:https://github.com/msdx/gradledoc/tree/1.12,或访问:http://gradledoc.qiniudn.com/1.12/userguide/userguide.html 本文原创,转载请注明出处:http://blog.csdn.net/maosidiaoxian/article/details/41006627 关于我对Gradle的翻译,以Github上的项目及http://gradledoc.qin

第十四章 数组

第十四章 数组 1.  什么是数组 三要素:数组类型  数组名  下标 2.  数组元素 3.  数组下标越界 一旦越界程序就会报错 4.  倒序输出 5.  将数组的下标定义为常量以便于修改 6.  手动操作数组元素 7.  数组的初始化 空间不够报错,多了用0补 ① ② 字符数组的初始化 char array[10]={"hello"} 等价于char array[10]= "hello" char array[10]={'h','e','l','l','o',

perl 第十四章 Perl5的包和模块

第十四章 Perl5的包和模块 by flamephoenix 一.require函数  1.require函数和子程序库  2.用require指定Perl版本二.包  1.包的定义  2.在包间切换  3.main包  4.包的引用  5.指定无当前包  6.包和子程序  7.用包定义私有数据  8.包和系统变量  9.访问符号表三.模块  1.创建模块  2.导入模块  3.预定义模块 一.require函数    用require函数可以把程序分割成多个文件并创建函数库.例如,在myfi

Gradle 1.12用户指南翻译——第三十四章. JaCoCo 插件

本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://github.com/msdx/gradledoc/tree/1.12. 直接浏览双语版的文档请访问: http://gradledoc.qiniudn.com/1.12/userguide/userguide.html. 另外,Android 手机用户可通过我写的一个

Gradle 1.12用户指南翻译——第二十四章. Groovy 插件

其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://github.com/msdx/gradledoc/tree/1.12. 直接浏览双语版的文档请访问: http://gradledoc.qiniudn.com/1.12/userguide/userguide.html. 另外,Android 手机用户可通过我写的一个程序浏览文档,带缓存功能的,兼容

第十四章 掌握环境

1.获取环境变量 $env:USERNAME $env:USERNAME=1 2.获取脚本调用的信息 $MyInvocation $MyInvocation.ScriptName   #获取正在执行的脚本名称 3.获取常见系统路径 [System.Environment]::GetFolderPath("system") 4.获取当前路径 Get-Location Join-Path(Get-Location)newfile.txt   #获取当前不存在的路径 第十四章 掌握环境