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学习(一)
搭建环境 1.创建普通的Java工程 2.添加相应的jar包,下载链接:https://files.cnblogs.com/files/AmyZheng/lib.rar,此外,为了打印信息,我们还需要 ...
- Microsoft Cortana移动版除美国市场外不再可用
导读 先前已经透露,Microsoft Cortana的移动版本已不复存在.目前,Microsoft Cortana在移动设备上的多个国家和地区中支持多种语言.微软的Cortana移动版本不再支持的市 ...
- Educational Codeforces Round 73 (Rated for Div. 2)D(DP,思维)
#define HAVE_STRUCT_TIMESPEC#include<bits/stdc++.h>using namespace std;long long a[300007],b[3 ...
- 利用java反射调用类的的私有方法--转
原文:http://blog.csdn.net/woshinia/article/details/11766567 1,今天和一位朋友谈到父类私有方法的调用问题,本来以为利用反射很轻松就可以实现,因为 ...
- SSIS 無法將保護的 XML 節點 "DTS:Password" 解密,錯誤為 0x8009000B "機碼用在特定狀態時無效
发现之前部署的SSIS,执行失败,查看日志 來源: 描述: 無法將保護的 XML 節點 -- ::-- ::-- :: DataReader 來源 [] 描述: System.Exception: S ...
- js图片瀑布流效果
要实现图片瀑布流效果,首先得准备几张图片. html的部分比较简单就是将图片加载到浏览器就可以了 代码如下(注意放的图片多一点要不然之后无法滑动鼠标就无法达到瀑布流效果): <!DOCTYPE ...
- 「JSOI2010」满汉全席
前言 由于蒟蒻才刚开始学 \(\text{2-SAT}\),所以题解中有的地方可能不够精炼,望多包涵! 题目描述 题目意思很简单,标准的\(\text{2-SAT}\)问题模型.那么我们就先来介绍一下 ...
- prototype入门----自定义创建元素
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- pytorch张量数据索引切片与维度变换操作大全(非常全)
(1-1)pytorch张量数据的索引与切片操作1.对于张量数据的索引操作主要有以下几种方式:a=torch.rand(4,3,28,28):DIM=4的张量数据a(1)a[:2]:取第一个维度的前2 ...
- 【剑指Offer面试编程题】题目1524:复杂链表的复制--九度OJ
题目描述: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点). 输入: 输入可能包含多个测试样例,输入以EOF结束. 对于每个测试案例,输入的第 ...