DNS and Bind
DNS : 工作在应用层
DNS 作用 : 完成域名到IP的解析过程 FQDN --> IP
例如 : www.ifeng.com --> 123.103.122.24
DNS 查询方式:
1. 迭代查询
由DNS服务器通过层层查询得到结果的过程称为迭代查询
2. 递归查询
客户机向服务器请求,返回结果的过程称为递归查询
DNS 工作过程:
1. 客户机通过自身host 文件 及 DNS 缓存查找解析记录;
2. 客户机将解析请求发送给指定的 DNS 服务器,例:114.114.114.114
3. DNS服务器通过层层查找得到解析地址
4. DNS服务器将得到的解析地址缓存到自身DNS cache中 ,并发送给客户机
5. 客户将结果放入DNS cache ,并使用

DNS 服务器资源解析记录类型:
SOA : 起始解析记录,写在区域解析库文件的第一行
NS : ns 解析记录 ,可以有多个
MX : 邮件交换器解析记录
A : 正向解析
AAAA : 正向解析(IPV6)
PTR : 反向解析
CNAME : 别名解析
资源解析记录库配置格式:
name [TTL] IN RR_TYPE value
SOA : 1. 当前区域的名称
2. 当前区域管理员的邮箱地址
3. 配置与从属服务器协商内容
协商内容: 序列号 (从服务器通过序列号的变更从主服务器更新资源库,如初始序列号为1,每更新一次资源库加1);
刷新间隔: 从服务器多久从主服务器更新资源库;
重传间隔 : 从服务器无法从主服务器更新资源库后,重试时间间隔;
过期时间 : 从服务器无法联系主服务器多久之后放弃从主服务器同步数据,并停止服务;
否定答案的缓存时常: 客户机获取否定答案(无法解析)后,将该答案缓存在本机的时常
示例: ifeng.com. 86400 IN SOA ifeng.com. admin.ifeng.com. (
10;serial (定义序列号)
2H;refresh (定义刷新间隔)
20M;retry (定义重传间隔)
1W;expire (定义过期时间)
1D;negative answer ttl (定义否定答案的缓存时常)
)
注:在解析库中@表示DNS主机区域名,因此邮件中的@用.代替,为 admin.ifeng.com
NS : name : 区域名称 (一个区域中可以有多个NS记录)
value : 区域内某DNS服务器的名称
示例;
ifeng.com. 86400 IN NS ns1.ifeng.com.
MX : name : 区域名称 (一个区域内可以有多个MX记录, value之前用优先级标识,1~99,越低越优先)
value : 区域内邮件交换器的名称
示例:
ifeng.com. 86400 IN MX mx1.ifeng.com.
A : name : 某 FQDN , 例如 www.ifeng.com
value : FQDN 对应的 ip 地址
示例:
www.ifeng.com. 86400 IN A 192.168.1.1
AAAA : name : 某 FQDN
value : FQDN对应的 IPV6地址
PTR : name:IP地址,有特定格式,反过来写,加特定后缀: 例如:ip为 1.2.3.4 的记录应该写为 4.3.2.1.in-addr-arpa.
value : FQDN
示例:
4.3.2.1.in-addr-arpa. IN PTR web.ifeng.com
CNAME : name: FQDN格式的名字
value : FQDN 格式的正式名字
示例:
web.ifeng.com IN CNAME www.ifeng.com
注意: NS,MX 等记录的value为fqdn,该fqdn应该有一个A记录
实战: 配置一个正向解析 DNS 服务器:
(1) 安装 DNS 服务程序
yum install bind (主DNS程序)
yum instal bind-utils (DNS程序辅助工具)
(2) 修改主配置文件及添加解析区域;
vim /etc/named.conf
option {
listen-on port 53 { 192.168.8.16; }; (监听地址为服务器网卡外网地址)
。。。
allow-query { any; }; (允许请求改为 any )
};
dnssec-enable no;
dnssec-validation no; (关闭DNS校验)
保存退出
vim /etc/named.rfc1912.zones (在文件尾部添加解析区域)
zone "ifeng.com" IN { (此处以区域 ifeng.com 为例)
type master;
file "ifeng.com.zone"; (定义区域解析库文件名)
};
保存退出
(3) 添加资源解析库文件及修改DNS
cd /var/named/
vim ifeng.com.zone (文件名与区域中定义文件名一致)
$TTL 1D (在新文件中写以下内容,@会自动替换为区域名称,此处自动替换为 ifeng.com)
@ IN SOA ns1.ifeng.com. admin.ifeng.com (
10
2H
10M
1W
1D
)
@ IN NS ns1.ifeng.com. (ns解析记录)
@ IN MX 10 mx1.ifeng.com. (邮件交换器解析记录)
ns1.ifeng.com. IN A 192.168.8.16
mx1.ifeng.com. IN A 192.168.8.17
www.ifeng.com. IN A 192.168.8.16 (正向解析记录 FQDN --> IP)
bbs.ifeng.com. IN A 192.168.8.17 (正向解析记录)
保存退出
vim /etc/resolv.conf
nameserver 192.168.8.16 (将DNS修改为服务器自身IP地址)
保存退出
(4) 修改文件权限 ,确保文件不被其用户修改
chgrp named /var/named/ifeng.com.zone
chmod o= /var/named/ifeng.com.zone
(5) 重载配置文件 及启动服务
systemctl start named
systemctl enable named
rndc reload (重载配置文件)
systemctl reload named (重载配置文件)
(6) 测试
dig -t A www.ifeng.com
dig -t A www.baidu.com
(修改其他主机DNS指向服务器端,测试是否可以递归解析)
实战: 配置反向 DNS 解析区域
(1) 添加反向解析区域
vim /etc/named.rfc1912.zones
zone "8.168.192.in-addr.arpa" IN { ( ip 解析区域为反向,此处需要解析区域为 192.168.8.1~254 ,则区域名称为 8.168.192.in-addr.arpa)
type master;
file "192.168.8.in-addr-arpa.zone"; (定义区域解析库文件名)
};
(2) 添加反向解析区域库文件
cd /var/named/
vim 192.168.8.in-addr-arpa.zone
$TTL 3600
$ORIGIN 8.168.192.in-addr.arpa. (表示自动补全内容,如下输入16 通过自动补全为 16.8.168.192.in-addr.arpa. )
@ IN SOA ns1.ifeng.com admin.ifeng.com (
10
2H
10M
1W
1D
)
@ IN NS ns1.ifeng.com.
16 IN PTR www.ifeng.com.
17 IN PTR mx1.ifeng.com.
18 IN PTR bbs.ifeng.com.
16 IN PTR ns1.ifeng.com.
保存退出
(3) 检查配置文件 :
named-checkconf (检查主配置文件)
named-checkzone 8.168.192.in-addr.arpa /var/named/192.168.8.in-addr-arpa.zone (检查区域配置文件)
(4) 修改文件权限
chgrp named /var/named/ifeng.com.zone
chmod o= /var/named/ifeng.com.zone
(5) 重载 配置文件
rndc reload
systemctl reload named
(6) 测试
dig -x 192.168.8.17
实战: 主从服务器配置
从服务器配置;
(1) 安装DNS服务程序;
yum install bind
yum install bind-utils
(2) 添加解析区域及修改主配置文件
vim /etc/named.rfc1912.zones
在文件尾部添加以下行:
zone "ifeng.com" IN {
type slave; (定义区域类型为 slave,从服务器)
file "slaves/ifeng.com.zone"; (定义区域解析库文件路径,无需创建,从主服务器同步)
masters { 192.168.8.16; }; (定义主服务器地址)
};
保存退出
vim /etc/named.conf
options {
listen-on port 53 { 192.168.8.17; }; (修改监控Ip地址为从服务器外网卡地址)
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 { any; }; (允许DNS请求,any为所有
recursion yes; (是否为客户机进行递归查询,此处为允许, no 为不进行递归查询)
dnssec-enable no; (关闭dnssec ,DNS校验)
dnssec-validation no;
保存退出
(3) 启动named服务并重载配置文件
systemctl start named
rndc reload
systemctl status named (查看服务状态)
主服务器配置
(1) 添加从服务器ns记录
vim /var/named/ifeng.com.zone (修改主资源解析库文件)
@ IN NS ns2.ifeng.com (添加从服务器ns2记录)
ns2.ifeng.com IN A 192.168.8.17 (添加从服务器正向解析记录)
(2) 重载配置文件 (主,从服务器都需重载)
rndc reload
(3) 测试从服务器
dig -t A www.ifeng.com @192.168.8.17
实战: 子域委派配置
(1) 主DNS服务器配置
vim /var/named/ifeng.com.zone (编辑正向解析库文件)
添加行:
ops.ifeng.com. IN NS ns1.ops.ifeng.com. (添加子域ns解析记录)
ns1.ops.ifeng.com. IN A 192.168.8.18 (添加子域A记录)
保存退出 (注:序列号加1,重载配置文件)
(2) 委派服务器配置
(2.1) 安装bind ,bind-utils 及修改主配置文件
yum install bind yum install bind-utils
vim /etc/named.conf
listen-on port 53 { 192.168.8.18; 127.0.0.1; }; (设置监听地址为外网地址)
allow-query { any; }; (允许所有请求)
dnssec-enable no; (关闭DNS 校验)
dnssec-validation no;
保存退出
(2.2) 添加解析区域,及区域配置文件
vim /etc/named.rfc1912.zones
文件尾部添加行:
zone "ops.ifeng.com" IN {
type master;
file "ops.ifeng.com.zone";
};
保存退出
vim /var/named/ops.ifeng.com.zone (编辑新解析库文件)
$TTL 3600
$ORIGIN ops.ifeng.com.
@ IN SOA ns1.ops.ifeng.com admin.ops.ifeng.com (
10
2H
10M
1W
1D
)
@ IN NS ns1.ops.ifeng.com.
ns1 IN A 192.168.8.18
www IN A 1 92.168.8.17
bbs IN A 192.168.8.18
max IN A 192.168.8.16
保存退出
(2.3) 检查文件及启动程序重载配置文件
named-checkconf
named-checkzone ops.ifeng.com /var/named/ops.ifeng.com.zone
systemctl start named
rndc reload
(2.4) 测试
dig -t A www.ops.ifeng.com
实战:定义转发域:
(1)区域转发,只把对某个区域的请求转发给指定的服务器
zone "ZONE_NAME" IN {
type forward;
forward {first|only}
forwarders { server_ip; };
};
first : 首先转发;转发器不响应时自行去迭代查询;
only : 只转发
server_ip 可以有多个
示例: /etc/named.rfc1912.zones
zone "ifeng.com" IN {
type forward;
forward only
forwarders { 172.16.100.67; };
};
(2)全局转发,只要不是自己服务器定义的区域请求都转发给指定的服务器
/etc/named.conf
option {
添加行:
forwarders { 172.16.199.67; }; (只要自己无法解析,通通转发)
};
实战:DNS acl 配置:
访问控制指令:
allow-query {} :允许查询的主机(白名单)
allow-transfer {} :允许向哪些区域做区域传送;默认为向所有主机;应该配置仅允许从服务器
allow-recursion {} :允许哪些主机通过本主机递归查询
allow-update {} ;DDNS ,允许动态更新区域数据库文件中内容;(一般不允许更新)
BIND 有四个内置的alc
none :没有一个主机
any : 任意主机
local : 本机
localnet :本机所在的ip所属的网络;
示例 : 定义 acl ,仅允许指定的主机查询
vim /etc/named.conf
添加行:
acl control {
192.168.8.0/24; (设置允许网段
};
option {
...
allow-query { control; }; (修改改行,调用 acl控制)
};
保存退出
测试: 仅允许 192.168.8.0/24 网段进行解析请求)
DNS and Bind的更多相关文章
- 移植DNS服务bind
移植DNS服务bind 标签: makefile工作linuxbuildgcc工具 先写用于DNS的bind. 一. 移植环境 1 .硬件环境: Host : X86 PC Target : MPC8 ...
- DNS之BIND使用小结(Forward转发)
之前详细介绍了DNS及其在linux下的部署过程,今天再说下DNS的BIND高级特性-forwarder转发功能.比如下面一个案例:1)已经在测试环境下部署了两台内网DNS环境,DNS的zone域名为 ...
- 【Linux】DNS服务-BIND从服务器、缓存服务器及转发服务器配置(三)
环境 操作系统:CentOS 6.5 DNS软件:bind(安装参照:[Linux]DNS服务-BIND基础配置(二)) BIND从服务器 从服务器就是在bind的主配置文件中添加从域example. ...
- centos6.5环境DNS-本地DNS服务器bind的搭建
centos6.5环境DNS-本地DNS服务器bind的搭建 域名系统(英文:Domain Name System,缩写:DNS)是因特网的一项服务.它作为将域名和IP地址相互映射的一个分布式数据库, ...
- Linux运维实战之DNS(bind)服务器的安装与配置
转自http://sweetpotato.blog.51cto.com/533893/1598225 上次博文我们讨论了DNS的基础,本次博文我们重点来看看如何配置一台DNS服务器. [本次博文的主要 ...
- DNS和Bind配置指南
/////////////////////////////目录//////////////////////////////////////一.DNS原理相关二.使用bind搭建最简单的DNS服务器三. ...
- DNS和BIND
https://www.jianshu.com/p/296b2c7ea76f DNS和BIND 毛利卷卷发关注 0.482018.07.25 10:33:44字数 4,919阅读 4,909 DNS ...
- (一)跟我一起玩Linux网络服务:DNS服务——BIND(/etc/named.conf、/var/named)设置实现和解释
2015年3月24更新 添加了要加的配置域名解析器(否则会找不到域名) 一.创建该实验的的模型 配置完gate虚拟机的两张网卡后,就启动gate的转发 [root@localhost ro ...
- 【Linux】DNS服务-BIND基础配置(二)
BIND简介 现在使用最为广泛的DNS服务器软件是BIND(Berkeley Internet Name Domain),最早有伯克利大学的一名学生编写,现在最新的版本是9,有ISC(Internet ...
- 内建DNS服务器--BIND
参考 BIND 官网:http://www.isc.org/downloads/bind/ 1.系统环境说明 [root@clsn6 ~]# cat /etc/redhat-release CentO ...
随机推荐
- 三 Spring和DI(面试)
IOC:控制反转,将对象的创建权反转给了Spring DI:依赖注入,前提要有IOC的环境.Spring管理这个类的时候会将类的依赖的属性,在xml注入(设置)进来. 面向对象的时候,类和类之间的 ...
- Linux 修改/etc/profile 出错 导致所有命令都 command not found 的解决办法
执行命令 export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin 然后再修改/etc/profile 再执行文件: source /etc/p ...
- tcp连接建立和断开
TCP协议作为传输层主要协议之一,具有面向连接,端到端,可靠的全双工通信,面向字节流的数据传输协议. 1.TCP报文段 虽然TCP面试字节流,但TCP传输的数据单元却是报文段.TCP报文段分为TCP首 ...
- luogu P4014 分配问题
简单的费用流问题,每个人对每个任务连边,每个任务对汇点连,源点对每个人连,最大费用取反即可 #include<bits/stdc++.h> using namespace std; #de ...
- 至少你要了解RSS
本文概要: 1.RSS是什么,有什么作用? 2.是不是所有的网站都有RSS功能? 3.没有RSS功能的网站如何订阅? 4.RSS是否已经过时? 5.推荐一些热门的RSS订阅地址 1.RSS是什么,有什 ...
- jmeter实现文件下载
通过浏览器下载文件时,会提示选择保存路径,但是利用测试工具jmeter请求时,在页面看到请求次数是增加了,而本地没有具体下载下来的文件. 需要在具体的文件下载请求下面,添加后置处理器-bean she ...
- mybatis动态参数查询
参考:https://blog.csdn.net/zbw18297786698/article/details/53727594
- Pytorch 分割模型构建和训练【直播】2019 年县域农业大脑AI挑战赛---(四)模型构建和网络训练
对于分割网络,如果当成一个黑箱就是:输入一个3x1024x1024 输出4x1024x1024. 我没有使用二分类,直接使用了四分类. 分类网络使用了SegNet,没有加载预训练模型,参数也是默认初始 ...
- JS 一键复制插件应用 和 原生实现
一.目前来说复制功能 clipboard.js基本可以兼容所有浏览器,可以任意复制文本,官方地址 https://clipboardjs.com/ 1.进入官方网站下载 然后引入 <script ...
- 前端学习(20)~css布局(十三)
常见的布局属性 (1)display 确定元素的显示类型: block:块级元素. inline:行内元素. inline-block:对外的表现是行内元素(不会独占一行),对内的表现是块级元素(可以 ...