dns详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dns详解相关的知识,希望对你有一定的参考价值。
dns的另外一种实现方式:dnsmasq较为简单请自行理解
一.主从架构 二.子域授权 三.转发区域 四.bind中的安全相关配置 五.bind view视图
一.主从架构
从s拥有和主s一样的解析库
注意:从服务器是区域级别的概念,从s是一个或多个区域的从s
一个区域可以为正向和反向分别配置不同的从s
AB可以互为主从:
一个是正向的主,反向的从
一个是反向的从,正向的主
AB负责一个区域
负载均衡:怎样实现都能提供解析
方法:一半配置ns为A,另一半配置为B
方法二:在父域中定义该域的两个NS //这样有人请求的时候,就会有两个NS轮流响应
配置实现:
Slave:
1.定义区域
zone “zone——name“ IN {
type slave;
file "slaves/zone_name.zone"; //只有slaves目录中named组具有写权限
masters { MASTERIP; };
};
named-checkconf
2.重载配置
rndc reload
systemctl reload rndc
Master:
1.确保区域数据文件中为每个服务配置NS记录
实现 1.:
192.168.4.109:slave 正向
192.168.4.100:master 正向
Slave: //配置成为正向的从s
yum install bind -y vim /etc/named.conf listen-on port 53 { 192.168.4.109; }; 关闭dnssec功能 vim /etc/named.rfc1912.zones zone "mt.com" IN { type slave; file "slaves/mt.com.zone"; masters { 192.168.4.100; }; }; named-checkconf service named start master: vim mt.com.zone //添加两条记录,已经启动的话,需要修改序列号 IN NS ns2 ns2 IN A 192.168.4.109 named-checkzone "mt.com" mt.com.zone
slave:
rndc reload //重载配置
systemctl status named.service //查看状态信息
dig -t A www.mt.com @192.168.4.109
cat /var/named/slaves/mt.com.zone //在CnetOS7上是二进制格式,在6上是文本格式可以直接查看
测试:在主s上添加一条记录,并修改serial
systemctl status named
sending notifies (serial 2017030102)
//第一次传送成功,后期增量传送未实现
原因:192.168.6.109的主机的ip地址是dhcp获取的,受dhcp的影响,导致默认dns不是主DNS
zone mt.com/IN: refused notify from non-master: 192.168.4.113#37131
效果:master上修改序列号+rndc reload,systemctl named status //查看结果
实验2:
192.168.4.109:slave 反向
192.168.4.100:master 反向
slave:
vim /etc/named.rfc1912.zones
zone "4.168.192.in-addr.arpa" IN {
type slave;
file "slaves/192.168.4.zone";
masters { 192.168.4.100; };
};
named-checkconf
master:
vim 192.168.4.zone
IN NS ns2.mt.com.
109 IN PTR ns2.mt.com.
named-checkzone 4.168.192.in-addr.arpa 192.168.4.zone
rndc reload
slave:
rndc reload
master:添加一个记录,修改serial
systemctl status named
On master:
1.确保区域数据文件为每个从服务器配置NS记录,并且在正向区域文件需要每个从服务器的NS记录的主机名配置一个A记录,且此后面的地址为真正的IP地址
手动区域传送
dig -t axfr 4.168.192.in-addr.arpa
失败总结:
1.注意:时间要同步
ntpdate命令:像同一台服务器同步时间
2.在从s上
cat /etc/named.rfc1912.zones
zone "mt.com" IN {
type slave;
file "slaves/mt.com.zone";
masters { 192.168.4.100; };
allow-notify { 192.168.4.0/24; }; //允许这个网段内的主机发送来的通知
};
开始的时候修改为:allow-notify { 192.168.4.100; }; //只修改为单个ip,是不可以的
因为:master有多个ip:192.168.4.100,192.168.4.113,192.168.4.112等
而默认使用的发送接口,很有可能不是192.168.4.100
二.子域授权
正向解析的区域授权子域的方法
ops.mt.com. IN NS ns1.ops.mt.com. ops.mt.com. IN NS ns2.ops.mt.com. ns1.ops.mt.com. IN A 192.168.4.11 ns2.ops.mt.com. IN A 192.168.4.12
//DNS一般会建立主从,主要是为了应付突发情况
实现:
192.168.4.110 :为父域
192.168.4.100:为子域
1.192.168.4.100
vim mt.com.zone
ops IN NS ns1.ops
ns1.ops IN A 192.168.4.110
rndc reload
2.192.168.4.110
vim named.conf
listen-on port 53 { 192.168.4.110; };
allow-query { 192.168.4.0/24; }; //允许本地查询
dnssec 关闭
sytemctl restart named
netstat -tunlp |grep named
vim named.rfc1912.zones
zone "ops.mt.com" IN {
type master;
file "ops.mt.com.zone";
};
named-checkconf
==================================================
vim ops.mt.com.zone $TTL 2500 $ORIGIN ops.mt.com. @ IN SOA ns1.ops.mt.com. admin.ops.mt.com. ( 2018010101 1H 10M 1D 2H ) IN NS ns1 ns1 IN A 192.168.4.110 www IN A 192.168.4.109
chmod o= ops.com.zone
chgrp named ops.com.zone
rndc reload
3.测试
dig -t A www.ops.mt.com @192.168.4.109
dig -t NS ops.mt.com
三.转发区域 //不查找根的折中方案,直接告诉你,mt.com区域的NS是谁
定义转发
注意:被转发的服务器必须允许为当前服务做递归
1.区域转发;仅转发对某特定区域的解析请求
zone "ZONE_NAME" IN {
type forward;
forward {first|only};
forwarders {SERVER_IP};
};
first:首先转发;转发器不在时,自行去迭代查询
only:只转发
2.全局转发 //本地没有定义的区域zone的查询请求,统统转给某转发器
named.conf
options {
foward only;
forwarders { 192.168.4.100; };
...
}
只要不是自己负责的区域,就转发
先查找zone,如果没有定义,就直接转发
四.bind中的安全相关配置
acl:访问控制列表;把一个或多个地址归并为一个命名的集合,随后通过此名称即可对此集合内的所有主机实现统一调用;
acl acl_name {
ip;
net/prelen;
};
示例:
acl mynet {
192.168.4.0/24;
127.0.0.0/8;
};
bind的四个内置acl
none:没有一个主机
any:任意主机
local:本机
localnet:本机所在的IP所属的网络;
访问控制指令:
allow-query {}; 允许查询的主机,白名单
allow-transfer {};允许向哪些主机做区域传送;默认向所有主机,master应该指定为从s,从s应该指定为none//因为从s不需要传送给别人
;允许我向谁传送
//以上连个可以加载zone{单个区域}或者options{全局}中都可以
allow-recursion {};允许哪些主机向当前DNS服务器发起递归请求的
recursion yes ; 允许所有主机递归
注意:只有允许递归的才允许转发,否则你转发过去,人家不给你转发,没吊用
allow-update{ none; } ;DDNS,允许动态更新区域数据库文件中的内容
建议关闭,会更改记录
notify yes //允许所有人给我发送通知
allow-notify { 192.168.4.0/24; }; //记得通知我
示例1:禁止区域传送
1.master:192.168.4.100
vim /etc/named.conf acl mynet { 192.168.4.100; 192.168.4.111; } vim named.rfc1912.zone zone "mt.com" IN { type master; allow-transfer { mynet; }; file "mt.com.zone"; };
named-checkconf
rndc reload
2.slave:192.168.4.109
dig -t axfr mt.com @192.168.4.100
五.bind view 视图
Router:eth0:外网--eth1:内网
对内部一个服务器的解析,内网的解析为内网地址,外网的需要解析为外网的ip
//brain-split :同一个主机名对内网和外网解析成不同的ip地址
view VIEW_NAME { zone zone zone } view internal IN { match-clients { 192.168.1.0/24; }; zone "mt.com" IN { type master; file "mt.com/internal"; }; }; view external IN { match-clients { any; }; zone "mt.com" IN { type master; file "mt.com/external"; }; };
本文出自 “黑马腾空” 博客,请务必保留此出处http://hmtk520.blog.51cto.com/12595610/1983910
以上是关于dns详解的主要内容,如果未能解决你的问题,请参考以下文章
14.VisualVM使用详解15.VisualVM堆查看器使用的内存不足19.class文件--文件结构--魔数20.文件结构--常量池21.文件结构访问标志(2个字节)22.类加载机制概(代码片段