DNS 服务
2016-04-28 00:39
585 查看
NDS domain name server (域名服务)
协议: DNS
UDP :53
TCP :53
实现软件 : bind(Berkeley Internet Name Domain) PowerDNS , dnsmasq
名称解析:将一种格式的信息转化为另外一种格式,以某关键字为标准查找某一数据库的过程
hosts:files dns
FQDN:Full Qualified Domain Name 完全域名解析
FQDN –> IP 正向解析
IP –> FQDN 反向解析
迭代查询 :发起一次请求,不一定得到答案
课户端指向的DNS服务器,一定是允许给本地主机做递归的
DNS服务器类型:
主DNS服务器
辅助DNS服务器
缓冲名称服务器
转发服务器
DNS的数据库文件(区域数据文件,区域自身有名字):文本文件,只能包含资源记录或宏定义,每行一个
资源记录的格式
dig 命令
host
nslookup
区域数据文件 /var/named/
反解:
协议: DNS
UDP :53
TCP :53
实现软件 : bind(Berkeley Internet Name Domain) PowerDNS , dnsmasq
名称解析:将一种格式的信息转化为另外一种格式,以某关键字为标准查找某一数据库的过程
passwd <--> nsswitch转换 login:nsswitch为login提供服务 nsswitch配置文件在/etc/nsswitch
hosts:files dns
files /ect/hosts (存放主机名或者别名和IP) dns 不用host文件 集中向一个服务器提出申请
分布数据库
根域(.)-->一级域(ICCNA)-->二级域(组织域) namespace:名称空间 容纳名称的整体范围 一级域: 组织域:.com , .org , .mil , .gov , .edu , .net,.jp,.ir(伊朗),.iq(伊拉克),.us,.uk 国家域: .cn , .hk , .tw 反向域: .in-addr.arpa
FQDN:Full Qualified Domain Name 完全域名解析
FQDN –> IP 正向解析
IP –> FQDN 反向解析
查询 :
递归查询 :只发出一次请求对方给出最终答案迭代查询 :发起一次请求,不一定得到答案
课户端指向的DNS服务器,一定是允许给本地主机做递归的
资源记录的类型
数据库每一个条叫一个资源记录(Resource Record),资源记录有类型 ,用于表示资源的功能 SOA : start of authority 起始授权 NS : Name Server, 域名服务器 MX : Mail eXchanger 邮件交换器 A:Address,(FQDN-->IP) 地址记录 正解 PTR: PoiTeR,(IP-->FQDN) 指针记录 反解 AAAA: Address,FQDN-->IPv6 CNAME:Canonical Name,正式名称(别名记录) <!-- 早期的DNS 只支持 FODN-->iP ,正方向解析数据不同,不能存放于同一个数据库进行 --> 域: Domain ,逻辑概念 区域: zone ,物理概念 也就是数据文件
DNS服务器类型:
主DNS服务器
辅助DNS服务器
缓冲名称服务器
转发服务器
DNS的数据库文件(区域数据文件,区域自身有名字):文本文件,只能包含资源记录或宏定义,每行一个
资源记录的格式
name [ ttl 缓存纪录] IN RRtype(资源记录类型) Value 列子: www 600 IN A 1.2.3.4 www.magedu.com. 600 IN A 1.2.3.4 SOA: 只能一个 name : 只能是区域名称,通常可以简写为@,例如:magedu.com. value: 有n个数值,最主要的是主DNS服务器的FQDN,点不可省略 <!-- 注意:SOA 必须是区域数据库文件第一条记录--> 例子: @ 600 IN SOA na.magedu.com. 邮箱地址(dnsadmin.magedu.com. ;把@变为.了 )( 序列号(serial number) ; 注释内容,十进制数据,不能超过10位,通常使用日期,例如2014031001 刷新时间(refresh time) ;即每隔多久到主服务器检查一次 重试时间(retry time) ;应该小于refresh time 过期时间(expire time) netgative answer ttl ;否定答案的ttl 客户端可以缓存多久的 ) <!-- ;是注释--> NS: 可以有多条 name: 区域名称,通常可以简写为@ value : DNS 服务器的FQDN(可以使用相对名称) 例如: @ 600 IN NS ns A: name : FQDN ( 可以使用相对名称) value: IP 列子: www 600 IN A 1.2.3.4 www 600 IN A 1.2.3.5 ftp 600 IN A 1.2.3.5 AAAA : ipv6 MX :可以有多个 name : 区域名称,用于标示 smtp 服务器 value :包含优先级和FQDN 优先级的: 0-99 数字越小,级别越高 列子: @ 600 IN MX 10 mail @ 600 IN MX 20 mail2 CNAME : 别名 name : FQDN value :FQDN 列子: ftp IN CNAME www PTR: 指针纪录 IP-->FQDN 只能记录在方向区域数据文件中,反向区域名称为逆向网络地址加 .in-addr.arpa. 后缀组成 name: IP ,主机地址反过来写 例如: 172.16.100.7 的name 为7.100,完全格式为:7.100.16.172 value : FQDN 列子: 4.3.2 600 IN PTR www.maged.com.
区域传送
定义: 辅助DNS服务器从主DNS服务器或其他的辅助DNS服务器请求数据传输过程 完全区域传送:传送区域的所有数据,AXFR 增量区域传送:传送区域中改变的数据部分,IXFR
视图 view
acl telecom{ 1.2.0.0/16 4.5.8.0 } acl unicom{ 6.4.0.0/16 4.5.3.0 } view { //一个逻辑的dns服务器 recursion no; 不给递归 match-clients {telecom}; //telecom 是一个acl 范围 zone "magelinux.com" IN { type master ; file "magelinux.com.internal"; //文件可以是同一个 }; }; view { match-clients{ unicom }; //unicom 是一个 acl 范围 zone "magelinux.com" IN { type master; file "magelinux.com.external"; }; }; 缺陷: 如果IP地址没有收集齐全,就悲剧了, 所以最好还是定义一个Other (默认) view { match -clients {any ;} zone "magelinux.com" IN { type master; file "magelinux.com.other"; }; }; 只要写入view,所有的都应该写在view中 自上而下匹配
bind: isc(www.isc.org)
主配置文件: :定义区域 /etc/named.conf 案例: magelinux.com
配置bind
主配置文件 定义区域 /etc/named.conf至少有三个区域: 根,localhost ,127.0.0.1 options { listen -on port 53 { any;}; //全局选项 directory "/var/named" ; allow-query { any; }; 允许所有客户端查询 recursion yes | on ; 是否运行递归 } ; zone "zone name" IN { //定义区域的 type{hint(根)|master(主)|slave(从)|forward(转发)} file “named.ca” } ; loggin { //定义日志的 }; include "文件位置" 加载别的文件 <!-- named-checkconf 检查主配置文件 service named configtest named -u named 手动启动 name-checkzone "区域" “区域文件位置” 检查配置文件 --> 定义监听的地址 recursion 是否允许递归查询
dig 命令
dig [-t type] [-x a ddr] name @DNS服务器 +[no]trace [不]适用迭代 +[no]tcp 是否使用tcp +[no]recurse:是否使用递归
host
host[-t type] {name} [server]
nslookup
nslookup> server DNS_SERVER_IP set q=TYPE {name}
区域数据文件 /var/named/
用户: named 组: named
反向解析区域数据库文件 区域名称以逆向的网络地址,并以.in-addr.arpa为后缀
第一条必须SOA 应该具有NS记录,但不能出现MX和A 记录 较常见的即为PTR纪录 名称为逆向的主机地址
反解:
zone "100.16.172.in-addr.arpa " IN { type master ; file "172.16.100.zone"; } 在 /var/named/下创建172.16.100.zone ![](media/14595736364157/14601888712923.jpg) tail /var/log/messages 检查日志 dig -x 172.16.100.7 检查区域 named-checkzone "100.16.172.in-addr.arpa" 172.16.100.zone
区域传送:
用dig 模拟完全区域传送 #dig -t axfr 区域名称 @server 主从同步: /etc/resolv.conf nameserver Master_DNS_IP nameserver SLAVE_DNS _IP 主从版本: 主: bind版本可以低于从的版本 从: 主的版本不能高于从的版本 兼容问题 向区域中添加从服务器的关键两步 : 1. 在上级获得授权) 2. 在区域数据文件中为从服务器添加一天ns记录和对应的A记录 或PTR纪录 在/etc/named.rfc1912.zones下 zone "magelinux.com" IN { type slave; masters { 172.16.100.7 ; }; file "slaves/magelinux.com.zone"; } 区域传送安全控制: allow-transfer { IP ; }; 指定IP做区域传送
rndc Remote Name Domain Controller
远程管理bind的工具 Rndc : 密钥 rndc :保存于rndc 的配置文件中 bind: 持有一半点的密钥,保存于主配置文件中 rndc 的配置文件 /etc/rndc.conf CentOS ,RHEL : /etc/rndc.key reconfig 只重新读取配置文件并且加载新增加的区域 querylog: 关闭或开启查询日志 stop 关闭服务 flush 清空服务器的缓存 flushname name:只清空指定名称相关的缓存 trace:打开debug,调试模式,debug有级别的概念,每执行一次提升一个等级 trace LEVEL:指定debug的级别 如果rndc无法正常工作,可尝试使用rndc-confgen生成/etc/rndc。conf配置文件,并将配置文件中的后半部分复制到BIND的主配置文件中按指示启用即可 rndc-confgen > /etc/rndc.conf
bind子区域的授权实现 (正向)
定义: 在父域的配置文件中添加如下项: 授权的子区域名称 子区域的名称服务器 子区域的名称服务器的IP地址 名称 IN NS IP dns.tech 子域名 glue record 胶水效果
配置区域转发:转发域
定义: 解析某本机不负责的区域内的名称时不转发给根,而是转给制定的主机 转发非本机负责解析的所有区域 options{ forward only|frist forwarders{ ip; } } 转发某特定区域 zone"特定区域" IN{ type forward; forwarders{ ip; } forward only | frist <!-- only:服务器将只会请求 forwarders中的DNS主机 frist: 服务器首先请求 forwarders list ,如果 forwarders list 中的DNS主机不应答,该主机将自己去找应答--> } 运行使用转发的前提: 本机要在对方的允许的递归主机列表中
安全控制选项:
allow-transfer{};通常都需要启用,从服务器 allow-query{};此项仅用于服务器是缓存名称服务器时,只开放查询功能给本地客户端 allow-recursion{可以使用网段};允许递归的白名单 allow-update{ none; }:允许动态更新数据文件的主机白名单
ACL:BIND支持使用访问控制列表
acl ACL_NAME{ 172.16.0.0/16 192.168.0.0/24 127.0.0.0/8 } 访问控制列表只有定义后才能使用,通常acl要定义在named.conf的最上方 BIND有四个内置的acl any:任何主机 none:无一主机 local:本机 localnet:本机所在的网络 view,编译安装named,如何实现对named做压力测试,BIND dlz
搭建本地非权威解析DNS配置过程
1.修改/etc/named.conf listen-on port 53 {any;}; allow-query {any;}; 2.修改/etc/named.rfc1912.zones 添加要解析的域 zone "xxx.com" IN { type master; file "xxx.com.zone"; allow-update {none;}; } ; 3. 添加数据库文件/var/named/xxx.com.zone xxx.com. IN SOA ns1.xxx.com. root.xxx.com. (20160402 1d 1h 1w 1h) xxx.com. IN NS ns1.xxx.com. ns1.xxx.com. IN A 192.168.30.98 www.xxx.com IN A 192.168.30.98 4.重启服务 service named restart 5. 修改/var/named/xxx.com.zone 文件的用户和用户组 chown named.named /var/named/ —R 6.检查nameserver 是否为本机IP nameserver 192.168.30.98 7.重启服务 service named restart 8. nslookup 测试 nslookup IP
bind子域授权的实现
$TTL 600 @ IN SOA dns.magelinux.com. dnsadmin.magelinux.com. ( 20160410 1H 5M 3D 12H) IN NS dns IN MX 10 dns www IN A 192.168.1.11 dns IN A 192.168.1.10 mail IN A 192.168.1.12 pop IN CNAME mail ftp IN CNAME www //加入信息 tech IN NS dns.tech.magelinux.com. dns.tech.magelinux.com. IN A 192.168.10 要在另外一台服务器中增加 vim /etc/named.rfc1912.zones zone "tech.magelinux.com" IN { type master; file "tech.magelinxu.com.zone"; } 创建一个 techo.magelinux.com.zone $TTL 600 @ IN SOA dns.tech.mageliunx.com (20160410 1H 5M 3D 1D) IN NS dns IN MX 10 mail dns IN A 192.168.2.10 www IN A 192.168.2.11 ftp IN A 192.168.2.12 更改属组 和权限
相关文章推荐
- servlet过滤器使用
- 指针与数组的扑朔迷离,你知道吗?
- file的getPath getAbsolutePath和getCanonicalPath的不同
- ubuntu下使用SQLite3的基本命令
- python_笔记12_匿名函数
- 计算机毕业四年,我都做了什么?
- BST算法原理及其实现
- 定时任务
- Linux Shell 02 流程控制语句
- read op case $op in
- 在Windows 7下删除注册表项时,权限不足
- 身份证校验原理和PHP实现
- iOS之深入了解控制器View的加载
- Android 如何在一个app中动态加载另一个app程序中的类
- Uva 11134 Fabled Rooks
- LeetCode 327. Count of Range Sum(区间和计数)
- BJTU 1729 Ryan的弹幕游戏(BFS)
- C++:浅谈c++资源管理以及对[STL]智能指针auto_ptr源码分析,左值与右值
- Makefile里面的$(MAKE)到底是啥
- BZOJ 4558|JLOI 2016|SHOI 2016|方|容斥原理