DNS
(Domain Name System,域名系统),因特网上作为域名和 IP 地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。
UDP
和TCP
之上,使用53
号端口UDP
协议,而在主从传递区域数据库文件时,用到TCP协议Internet
的顶级域名由 Internet 网络协会域名注册查询负责网络地址分配的委员会进行登记和管理IP
地址每个 IP 地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台 IP 设备的 IP 地址,只要记住相对直观有意义的主机名就行了。
/etc/hosts文件
在每台设备上都有主机到IP的映射关系,只供此设备使用
/etc/resolv.conf文件
指通过DNS服务器配置主机到IP的映射关系
# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
# cat /etc/resolv.conf
nameserver 172.16.242.2
静态域名解析
的方法,如果静态域名解析不成功,再采用动态域名解析的方法DNS
通过允许一个名称服务器把他的一部分名称服务,众所周知的zone
,委托给子服务器而实现了一种层次结构的名称空间,成为子域授权
机制。
DNS
还提供了一些额外的信息,例如系统别名、联系信息以及哪一个主机正在充当系统组或域的邮件枢纽IP
的计算机网络可以使用DNS来实现他自己的私有名称系统
。
一个域的主服务器保存着该域的zone配置文件,该域所有的配置、更改都是在该服务器上进行,本篇随笔要讲解的也是如何配置一个域的主DNS服务器。
域从服务器一般都是作为冗余负载使用,一个域的从服务器是从该域的主服务器上抓取zone配置文件,从服务器不会进行任何信息的更改,zone配置文件的修改只能在主DNS服务器上进行,所有的修改都有主服务器同步。
DNS缓存服务器不存在任何的zone配置文件,仅仅依靠缓存来为客户端提供服务,通常用于负载均衡及加速访问操作。
只负责转发功能
注解说明:
从主DNS服务器或其他的从DNS服务器那里复制(区域传送)一份解析库
序列号
来表示解析库的版本号
前提是,主服务器解析库内容发生改变,其序列递增
刷新时间
从服务器从主服务器请求同步解析库的时间间隔
重试时间
从服务器从服务器请求同步解析库失败的时候,再次尝试的时间间隔
过期时长
从服务器始终联系不到主服务器时,多久后放弃从服务器角度,停止提供服务
主机记录(A记录)
FQDN --> IP
A记录是用于名称解析的重要记录,它将特定的主机名映射到对应主机的IP地址上
指针记录(PTR记录)
IP --> FQDN
引导至一个规范名称(Canonical Name),最常用来运行反向DNS查找
权威记录的起始(SOA记录)
一个区域解析库有且仅能有一个SOA记录,而必须为解析库的第一条记录
名称服务器记录(NS记录)
专用于标明当前区域的DNS服务器
别名记录(CNAME记录)
CNAME记录用于将某个别名指向到某个A记录上,这样就不需要再为某个新名字另外创建一条新的A记录
MX 记录(MX记录)
引导域名到该域名的邮件传输代理(Message Transfer Agents)列表
IPv6 主机记录(AAAA记录)
FQDN --> IP
与 A 记录对应,用于将特定的主机名映射到一个主机的IPv6地址。
服务位置记录(SRV记录)
用于定义提供特定服务的服务器的位置,如主机hostname,端口port
NAPTR 记录
它提供了正则表达式方式去映射一个域名。NAPTR记录非常著名的一个应用是用于ENUM查询。
name [TTL] IN rr_type value
name
: 当前区域的名字,例如wsescape.com.
value
: 有多部分组成:
(1) 当前区域的主DNS服务器的FQDN
,也可以使用当前区域的名字
(2) 当前区域管理员的邮箱地址,但地址中不能使用@符号,一般用.替换,例如linuxmail.wsescape.com
(3) 主从服务协调属性的定义以及否定的答案的统一的TTL
# 86400为TTL值,单位为秒钟
# 主DNS服务器地址为ns.wsescape.com.
# 邮箱地址为nsadmin.wsescape.com.
# 第一版为2016052201,标识版本号
wsescape.com.86400INSOAns.nsadmin.wsescape.com.(
2016052201 ;序列号
2H ;刷新时间,2小时
10M;重试时间,10分钟
1W;过期时间,一周
1D;否定答案的TTL值,一天
)
name
: 当前区域的名字
value
: 当前区域的某DNS服务器的名字,例如ns.wsescape.com.
注意:
(1) 相邻的两个资源记录的name
相同时,后续的可省略
(2) 对NS
记录而言,任何一个NS
记录后面的服务器名字,都应该在后续有一个A
记录
# 一个区域可以有多个NS记录
# ns1.wsescape.com.和ns2.wsescape.com.都应该在后续有一个A记录
wsescape.com.INNS ns1.wsescape.com.
wsescape.com.INNS ns2.wsescape.com.
name
: 当前区域的名字
value
: 当前区域的某邮件服务器(smtp服务器)的主机名
(1)一个区域内,MX记录可以有多个
(2)但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级
(3)数字越小优先级越高
注意
(1) 相邻的两个资源记录的name
相同时,后续的可省略
(2) 对MX
记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录
# mx1.wsescape.com.和mx2.wsescape.com.都应该在后续有一个A记录
wsescape.com.IN MX 10 mx1.wsescape.com.
INMX 20 mx2.wsescape.com.
name
: 某主机的FQDN,例如www.wsescape.com.
value
: 主机名对应主机的 IP 地址;
注意
避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址
# 轮询
www.wsescape.com.IN A1.1.1.1
www.wsescape.com.IN A 1.1.1.2
# 一个主机有多个名称而已
mx1.wsescape.com.IN A 1.1.1.3
mx2.wsescape.com. IN A 1.1.1.3
# 避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址
*.wsescape.com.IN A 1.1.1.4
wsescape.com.IN A 1.1.1.4
# 轮询
www.wsescape.com.IN AAAA1.1.1.1
www.wsescape.com.IN AAAA 1.1.1.2
# 一个主机有多个名称而已
mx1.wsescape.com.IN AAAA 1.1.1.3
mx2.wsescape.com. IN AAAA 1.1.1.3
# 避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址
*.wsescape.com.IN AAAA 1.1.1.4
wsescape.com.IN AAAA 1.1.1.4
name
: 这里的name表示的是IP地址
IP
地址有特定格式,把IP地址反过来写,如果是1.2.3.4需要写作4.3.2.1
还有特定后缀in-addr.arpa.
,完整写法为4.3.2.1.in-addra.arpa.
value
: 这里的value
值为FQDN
注意
网络地址及后缀可省略,主机地址依然需要反着写
# 实例
4.3.2.1.in-addr.arpa.INPTRwww.wsescape.com.
# 如果3.2.1是网络地址简写成为
4 IN PTRwww.wsescape.com.
# 如果2.1是网络地址简写成为
4.3 IN PTRwww.wsescape.com.
name
: 别名的FQDN
value
: 正工名字的FQDN
web.escapelife.com.IN CNAME www.escapelife.com.
子域授权就是每个域的名称服务器,都是通过其上级名称服务器在解析库进行授权
.com.INNS ns1.com.
.com. IN NSns2.com.
ns1.com.INA 2.2.2.1
ns2.com. INA2.2.2.2
这里以wsescape.com
为例
# wsescape.com. 在.com的名称服务器上,解析库中添加资源记录
wsescape.com.INNSns1.wsescape.com.
wsescape.com.INNSns2.wsescape.com.
wsescape.com.INNSns3.wsescape.com.
ns1.wsescape.com.INA 3.3.3.1
ns2.wsescape.com.INA 3.3.3.2
ns3.wsescape.com.INA 3.3.3.3
dig用于测试dns系统,因此不会查询hosts文件进行解析
dig [-t type] name [@SERVER] [query options]
dig -t NS wsescape.com @172.16.242.178
dig -t MX wsescape.com @172.16.242.178
dig -t A www.baidu.com
+[no]trace:跟踪解析过程
+[no]recurse:进行递归解析
测试反向解析:
dig -x IP @SERVER
dig -x 172.16.100.11 @172.16.242.178
dig -t axfr ZONE_NAME @SERVER
dig -t axfr wsescape.com @172.16.242.178
host
命令用于查询DNS
的工具
host [-t type] name [SERVER]
等同于-v -t
在需要认证的域名服务器上查找 SOA 记录
列出一个域内所有的主机
反向查找
不使用递归处理
运行时显示详细的处理信息
用于 IPv4 的查询
用于 IPv6 的查询
指定类型,包括a、all、mx、ns等
[root@localhost ~]# host -t A www.wsescape.com 172.16.242.178
Using domain server:
Name: 172.16.242.178
Address: 172.16.242.178#53
Aliases:
www.wsescape.com has address 172.16.100.11
www.wsescape.com has address 172.16.100.12
[root@localhost ~]# host -t A www.wsescape.com 172.16.242.178
Using domain server:
Name: 172.16.242.178
Address: 172.16.242.178#53
Aliases:
www.wsescape.com has address 172.16.100.12
www.wsescape.com has address 172.16.100.11
[root@localhost ~]# host --help
host: illegal option -- -
Usage: host [-aCdlriTwv] [-c class] [-N ndots] [-t type] [-W time]
[-R number] [-m flag] hostname [server]
-a is equivalent to -v -t ANY
-c specifies query class for non-IN data
-C compares SOA records on authoritative nameservers
-d is equivalent to -v
-l lists all hosts in a domain, using AXFR
-i IP6.INT reverse lookups
-N changes the number of dots allowed before root lookup is done
-r disables recursive processing
-R specifies number of retries for UDP packets
-s a SERVFAIL response should stop query
-t specifies the query type
-T enables TCP/IP mode
-v enables verbose output
-w specifies to wait forever for a reply
-W specifies how long to wait for a reply
-4 use IPv4 query transport only
-6 use IPv6 query transport only
-m set memory debugging flag (trace|record|usage)
nslookup 命令用于查找域名服务器的程序,有两种模式为互交和非互交
nslookup [-option] [name | -] [server]
nslookup>
server IP: 指明使用哪个DNS server进行查询;
set q=RR_TYPE: 指明查询的资源记录类型;
NAME: 要查询的名称;
[root@localhost ~]# nslookup
> server 172.16.242.178
Default server: 172.16.242.178
Address: 172.16.242.178#53
> set q=A
> www.wsescape.com
Server:172.16.242.178
Address:172.16.242.178#53
Name:www.wsescape.com
Address: 172.16.100.11
Name:www.wsescape.com
Address: 172.16.100.12
> set q=NS
> wsescape.com
Server:172.16.242.178
Address:172.16.242.178#53
wsescape.comnameserver = ns2.wsescape.com.
wsescape.comnameserver = ns1.wsescape.com.
# 非交互模式查询
[root@rudder ~]# nslookup baidu.com
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: baidu.com
Address: 123.125.114.144
Name: baidu.com
Address: 220.181.111.85
Name: baidu.com
Address: 220.181.111.86
# 非交互模式查询
[root@rudder ~]# nslookup
> www.baidu.com
Server:172.17.0.254
Address:172.17.0.254#53
Non-authoritative answer: #非权威答案,表明是在缓存中读取的
www.baidu.comcanonical name = www.a.shifen.com.
Name:www.a.shifen.com
Address: 61.135.169.105 #返回第一个IP地址
Name:www.a.shifen.com
Address: 61.135.169.125 #返回第二个IP地址
> server 8.8.8.8 #设置域名服务器为 8.8.8.8
Default server: 8.8.8.8
Address: 8.8.8.8#53
> www.baidu.com #再次请求百度的IP地址
Server:8.8.8.8
Address:8.8.8.8#53
Non-authoritative answer:
www.baidu.comcanonical name = www.a.shifen.com.
Name:www.a.shifen.com
Address: 220.181.111.147 #不同的DNS获取的IP地址是不同的。
rndc客户端是通过建立套接字连接服务端,监听在TCP的953端口,来对服务端的named进行修改操作,但由于安全考虑,所以rndc的客户端和服务端安装在同一台主机之上。
-b
source-address 使用 source-address 作为连接服务器的源地址允许多个实例设置 IPv4 和 IPv6 源地址
-c config-file
使用config-file 作为缺省的配置文件/etc/rndc.conf 的替代
-k key-file
使用 key-file 作为缺省的密钥文件/etc/rndc.key 的替代 如果config-file 不存在,/etc/rndc.key 中的密钥将用于认证发向服务器的命令
-s server server
是与rndc的配置文件中server语句匹配的服务器的名字或地址 如果命令行没有提供服务器,会使用rndc配置文件中options语句中的default-server子句所命名的主机
-p port
发送命令到TCP端口port,以取代BIND 9的缺省控制通道端口 953
-V
打开冗余日志
-y key_id
使用配置文件中的密钥key_id
reload
重载主配置文件和区域解析库文件
reload zone
重载区域解析库文件
refresh zone
安排区域的立即维护
retransfer zone
手动启动区域传送过程,而不管序列号是否增加
notify zone
重新对区域传送发通知
reconfig
重载主配置文件
status
将服务器统计信息写入统计文件中
querylog
开启或关闭查询日志
建议调试的时候开启,否则日志消耗太多性能
dumpdb
将高速缓存转储到转储文件 (named_dump.db)
stop
将暂挂更新保存到主文件并停止服务器
halt
停止服务器,但不保存暂挂更新
trace
将调试级别增加一级
建议调试的时候开启,否则日志消耗太多性能
trace level
更改调试级别
notrace
将调试级别设置为0
flush
刷新服务器的所有高速缓存
status
显示服务器的状态
restart
重新启动服务器
# rndc工具能够帮助我们输出系统信息
[root@localhost ~]# rndc status
version: 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6
CPUs found: 1
worker threads: 1
number of zones: 20
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running
# rndc不重启加载区域文件
[root@localhost ~]# rndc reload
DNS服务,程序包名bind,程序名named。
只需要安装bind
、bind-libs
和bind-utils
即可
bind
主包
bind-libs
依赖的库文件,包括 32 位和 64 位
bind-utils
提供客户端工具,例如dig、host、nslookup和nsupdate
bind-chroot
建立不要安装,很容易被入侵
bind-chroot 包的作用是提高安全性,将 DNS 服务的配置文件/etc/named.conf 等,创建一个硬链接转到/var/named/chroot/etc/ 文件夹下面,而且使用服务帐号登录,不使用root用户登录
注意,修改配置文件要修改/etc/下面的,这样会自动同步到chroot下面的链接文件中
bind-sdb
bind-dyndb-ldap
以上这两种方式,是将解析库文件放在不同的数据库中进行存储
在CentOS6下
/etc/rc.d/init.d/named
/etc/named.conf
/etc/rndc.key
为rndc的秘钥共享文件,提供认证用的
rndc
是什么?远程名称控制器
默认与bind安装在同一主机,且只能通过本地回环地址127.0.0.1来连接named进程
提供辅助性的管理功能,如查看解析状态等
默认工作在 953/tcp 端口上
/etc/named.rfc1912.zones
请求注解文档
/var/named/ZONE_NAME.ZONE
在/var/named/
目录下存在多个解析库文件
/var/named/named.ca
指向根DNS该文件不需要管理员更改,而是系统自带
/var/named/named.local
本地子域解析,将localhost
反向解析为127.0.0.1
(1) 一台物理服务器可同时为多个区域提供解析
(2) 必须要有根区域文件,在named.ca
中包含13
根节点地址,由dig
命令生成而来的
(3) 应该有两个(如果包括ipv6
的,应该更多)实现localhost
和本地回环地址
的解析库
# 在CentOS6下
[root@localhost ~]# rpm -ql bind | less
/etc/NetworkManager/dispatcher.d/13-named
/etc/logrotate.d/named
/etc/named
/etc/named.conf
/etc/named.iscdlv.key
/etc/named.rfc1912.zones
/etc/named.root.key
/etc/portreserve/named
/etc/rc.d/init.d/named
/etc/rndc.conf
/etc/rndc.key
/etc/sysconfig/named
/usr/lib64/bind
/usr/sbin/arpaname
......
# @表示当前区域的区域名称,在主配置文件/etc/named.conf中定义的
# TTL的值没写,因为定义了宏$TTL 1D,直接继承
# rname.invalid.表示管理员的邮箱地址
# 后面的如NS、A等缺省,因为继承前者的
[root@localhost named]# cat /var/named/named.localhost
$TTL 1D
@IN SOA@ rname.invalid. (
0; serial
1D; refresh
1H; retry
1W; expire
3H ); minimum
NS@
A127.0.0.1
AAAA::1
[root@localhost named]# cat /var/named/named.loopback
$TTL 1D
@IN SOA@ rname.invalid. (
0; serial
1D; refresh
1H; retry
1W; expire
3H ); minimum
NS@
A127.0.0.1
AAAA::1
PTRlocalhost.
options {}
logging {}
本机能够为哪些zone进行解析,就要定义哪些zone
如zone "ZONE_NAME" IN {}
任何服务程序如果期望其能够通过网络被其它主机访问,至少应该监听在一个能与外部主机通信的IP
地址上
[root@localhost ~]# cat /etc/named.conf
options {
listen-on port 53 { 127.0.0.1; };
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 { localhost; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
# localhost.localdomain就是区域名称,也就是@
[root@localhost ~]# cat /etc/named.rfc1912.zones
zone "localhost.localdomain" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "0.in-addr.arpa" IN {
type master;
file "named.empty";
allow-update { none; };
};
安装上bind之后,其实就算的上是一个缓存名称服务器,只需要进行少许的配置即可完成
listen-on port 53
allow-query
recursion
(1)安装
[root@localhost ~]#yum install bind
(2)启动
[root@localhost ~]# service named start
Generating /etc/rndc.key: [ OK ]
Starting named: [ OK ]
(3)查看
# 为了安全,安装上bind之后,默认只会监听本地,不对外提供服务
# 任何服务程序如果期望其能够通过网络被其它主机访问,至少应该监听在一个能与外部主机通信的`IP`地址上
# 编辑主配置文件即可
[root@localhost ~]# ss -tunlp | grep :53
udp UNCONN 0 0 127.0.0.1:53 *:* users:(("named",39822,512))
udp UNCONN 0 0 ::1:53 :::* users:(("named",39822,513))
tcp LISTEN 0 3 ::1:53 :::* users:(("named",39822,21))
tcp LISTEN 0 3 127.0.0.1:53 *:* users:(("named",39822,20))
(4)修改
# 修改之前先备份一下
# 逗号之前没有内容,默认为前一个的名称,后面为复制的内容
[root@localhost ~]# cp /etc/named.conf{,.bak}
[root@localhost ~]# ll /etc/named*
-rw-r-----. 1 root named 984 11月 20 2015 /etc/named.conf
-rw-r-----. 1 root root 984 6月 20 21:53 /etc/named.conf.bak
# //表示单行注释,注释ipv6
# /**/表示多行注释
# 修改的时候必须以;结尾且{}的两端必须有空格,否则为语法错误
# directory用来定义区域解析库文件存放位置
# 建议关闭dnssec功能
# 将dnssec-enable和dnssec-validation改为no,并注释key文件即可
# 把能够以外网进行通信的地址写在listen-on port 53之后,如果有多个可以多个添加,不能省略
# 如果将listen-on port 53进行注释或者删除,默认是监听在所有
# 将allow-query注释或改为allow-query { any; };
# 是否允许递归recursion,必须为yes
[root@localhost ~]# vim /etc/named.conf
options {
listen-on port 53 { 172.16.242.178; 127.0.0.1; };
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 { localhost; };
recursion yes;
dnssec-enable no;
dnssec-validation no;
/* Path to ISC DLV key */
// bindkeys-file "/etc/named.iscdlv.key";
// managed-keys-directory "/var/named/dynamic";
};
(5)重启生效
# 重启之后才能生效配置
[root@localhost ~]# service named restart
Stopping named: . [ OK ]
Starting named: [ OK ]
[root@localhost ~]# ss -tunlp | grep :53
udp UNCONN 0 0 172.16.242.178:53 *:* users:(("named",40086,513))
udp UNCONN 0 0 127.0.0.1:53 *:* users:(("named",40086,512))
udp UNCONN 0 0 ::1:53 :::* users:(("named",40086,514))
tcp LISTEN 0 3 ::1:53 :::* users:(("named",40086,22))
tcp LISTEN 0 3 172.16.242.178:53 *:* users:(("named",40086,21))
tcp LISTEN 0 3 127.0.0.1:53 *:* users:(("named",40086,20))
主 DNS 名称服务器配置就是在缓存DNS服务器的基础之上增加zone配置文件就可以了
# master表示主DNS
# slave表示从DNS
# hint表示根
# forward做转发
# file使用的是主配置文件directory定义的路径
zone "ZONE_NAME" IN {
type {master|slave|hint|forward};
file "ZONE_NAME.zone";
};
# 在/etc/named.rfc1912.zones文件内定义域名
# named-checkconf用来检查语法错误
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "wsescape.com" IN {
type master;
file "wsescape.com.zone";
};
[root@localhost ~]# named-checkconf
出现的内容:
宏定义;
资源记录;
# 这里$TTL用于定义TTL的值,86400为秒,可以使用1D来代替
# $ORIGIN用于指定域名词尾,如ns以及mx都为缺省了
# named-checkzone
# 两个www,在访问的时候会进行轮询操作的
# 泛域名解析这里的*,表示无论用户输入什么都不报错
# 或者写成* IN A 172.16.100.11,因为CNAME不能输入ip地址
[root@localhost ~]# cd /var/named/
[root@localhost named]# vim wsescape.com.zone
$TTL 86400
$ORIGIN wsescape.com.
@ IN SOA ns1.wsescape.com. admin.wsescape.com (
2016042201
1H
5M
7D
1D )
IN NS ns1
IN NS ns2
IN MX 10 mx1
IN MX 20 mx2
ns1 IN A172.16.100.11
ns2 IN A172.16.100.12
mx1 IN A172.16.100.13
mx2 IN A172.16.100.14
www IN A172.16.100.11
www IN A172.16.100.12
ftp INCNAMEwww
* IN CNAME www
[root@localhost named]# named-checkzone "wsescape.com" /var/named/wsescape.com.zone
zone wsescape.com/IN: loaded serial 2016042201
OK
# 可以查出进程是以named运行的
# 其中/etc/named.conf文件的属主为root,属组为named
# 为了安全起见,对自己创建的文件进行权限修改
[root@localhost named]# ps -aux | grep named
named 40086 0.0 1.1 160072 11736 ? Ssl 22:07 0:00 /usr/sbin/named -u named
root 40785 0.0 0.0 103324 864 pts/0 S+ 23:19 0:00 grep named
[root@localhost named]# ll /etc/named.conf
-rw-r-----. 1 root named 1004 6月 20 22:23 /etc/named.conf
[root@localhost named]# id named
uid=25(named) gid=25(named) 组=25(named)
[root@localhost named]# ll
总用量 32
drwxrwx---. 2 named named 4096 6月 20 21:45 data
drwxrwx---. 2 named named 4096 6月 20 21:45 dynamic
-rw-r-----. 1 root named 3171 1月 11 22:12 named.ca
-rw-r-----. 1 root named 152 12月 15 2009 named.empty
-rw-r-----. 1 root named 152 6月 21 2007 named.localhost
-rw-r-----. 1 root named 168 12月 15 2009 named.loopback
drwxrwx---. 2 named named 4096 5月 11 07:07 slaves
-rw-r--r--. 1 root root 408 6月 20 22:53 wsescape.com.zone
[root@localhost named]# chmod 640 wsescape.com.zone
[root@localhost named]# chown :named wsescape.com.zone
[root@localhost named]# ll
总用量 32
drwxrwx---. 2 named named 4096 6月 20 21:45 data
drwxrwx---. 2 named named 4096 6月 20 21:45 dynamic
-rw-r-----. 1 root named 3171 1月 11 22:12 named.ca
-rw-r-----. 1 root named 152 12月 15 2009 named.empty
-rw-r-----. 1 root named 152 6月 21 2007 named.localhost
-rw-r-----. 1 root named 168 12月 15 2009 named.loopback
drwxrwx---. 2 named named 4096 5月 11 07:07 slaves
-rw-r-----. 1 root named 408 6月 20 22:53 wsescape.com.zone
[root@localhost ~]# service named restart
Stopping named: . [ OK ]
Starting named: [ OK ]
# 使用dig命令来帮助我们验证信息
# 因为之前的配置,这里会进行轮询操作
[root@localhost ~]# dig -t A wsescape.com @172.16.242.178
反向解析和正向解析各为独立的系统,所以可以部署在不同的或者是相同的机器之上,都是可以
根据配置文件中定义的主机地址,来确定网络地址
不变的部分用来当做区域名称,变化的部分用来当做实现解析时候的name
(1) 定义区域
# file同样是一个相对路径,/var/named/
# 如果有多个正向域对应同一个网络的话,多个区域就重名了,所以这里的网络地址其实自己可以随意定义,如"网络地址1.zone"、"网络地址2.zone"等
# 如果只有一个反向区域的话,就只需要书写一个反向解析库,就可以"网络地址.zone"这样命名了
zone "ZONE_NAME" IN {
type {master|slave|forward};
file "网络地址.zone";
};
# 因为172.16.242.178和我们的其他服务器(172.16.100.12/172.16.100.11),所以只能写成"16.172.in-addr.arpa"和"172.16.zone"
# 最后添加如下内容
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "16.172.in-addr.arpa" IN {
type master;
file "172.16.zone";
};
(2) 区域解析库文件
# $TTL表示宏定义的TTL值
# $ORIGIN这里表示反向区域的名称
# 反向的主机名称不能省略
# 这里的11和12会自动补充上16.172.in-addr.arpa.
# 别名记录不用反解,所以ftp没有书写反向解析
# 这里可以使用vim -o wsescape.com.zone 16.172.zone来同时编辑两个文件的
[root@localhost ~]# cd /var/named/
[root@localhost named]# vim 100.16.zone
$TTL 86400
$ORIGIN 16.172.in-addr.arpa.
@IN SOAns1.wsescape.com. admin.wsescape.com. (
2016042201
1H
5M
7D
1D )
IN NSns1.wsescape.com.
IN NSns2.wsescape.com.
11.100IN PTRns1.wsescape.com.
11.100IN PTRwww.wsescape.com.
12.100IN PTRmx1.wsescape.com.
12.100IN PTRwww.wsescape.com.
13.100IN PTRmx2.wsescape.com.
# 反向解析如果没有$ORIGIN的情况下,也可以这样写
[root@localhost named]# vim 100.16.zone
$TTL 86400
@IN SOAns1.wsescape.com. admin.wsescape.com. (
2016042201
1H
5M
7D
1D )
16.172.in-addr.arpa.IN NSns1.wsescape.com.
IN NSns2.wsescape.com.
11.100IN PTRns1.wsescape.com.
11.100IN PTRwww.wsescape.com.
12.100IN PTRmx1.wsescape.com.
12.100IN PTRwww.wsescape.com.
13.100IN PTRmx2.wsescape.com.
(3) 修改权限并重启
[root@localhost named]# chmod 640 16.172.zone
[root@localhost named]# chmod :named 16.172.zone
# 语法
[root@localhost named]# named-checkconf
[root@localhost named]# named-checkzone "16.172.inaddr-addr" 16.172.zone
ok
[root@localhost named]# service named reload
# 检测
[root@localhost named]# host -t PRT 172.16.100.12 172.16.242.178
[root@localhost named]# dig -x 172.16.100.12 @172.16.242.178
定义从 DNS 服务器就是在缓存服务器的基础上,进行修改配置
(1)应该为一台独立的名称服务器
(2)主服务器的区域解析库文件中必须有一条 NS 记录是指向从服务器
(3)从服务器只需要定义区域,而无须提供解析库文件;解析库文件应该放置于/var/named/slaves/目录中
(4)主服务器得允许从服务器作区域传送
(5)主从服务器时间应该同步,可通过ntp进行
(6)bind程序的版本应该保持一致;否则,应该从高逐低
# 从服务器同步主服务器的解析文件会放在/var/named/slaves/中
zone "ZONE_NAME" IN {
type slave;
masters { MASTER_IP; };
file "slaves/ZONE_NAME.zone";
};
# 从服务器同步主服务器的解析文件会放在/var/named/slaves/中
zone "Reverse_Net_Addr.in-addr.arpa" IN {
type master;
file "SOMEFILE.zone";
};
# 注意这里的从DNS服务器,需要在主DNS服务器中定义上NS记录
# 这样才能在主DNS的解析库发生改变的时候通知从DNS服务器进行同步,否则不会同步的
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "wsescape.com" IN {
type slave;
masters { 172.16.242.178; };
file "slaves/wsescape.com.zone";
};
# 重起服务即可成效
[root@localhost ~]# rndc reload
# 可以通过log进行查看
[root@localhost ~]# tail /var/log/messages
# 注意这里的从DNS服务器,需要在主DNS服务器中定义上NS记录
# 这样才能在主DNS的解析库发生改变的时候通知从DNS服务器进行同步,否则不会同步的
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "16.172.in-addr.arpa" IN {
type slave;
masters { 172.16.242.178; };
file "slaves/172.16.zone";
};
# 重起服务即可成效
[root@localhost ~]# rndc reload
# 可以通过log进行查看
[root@localhost ~]# tail /var/log/messages
子域授权
其实就是在你有域名的情况下,进行细分的状况。比如说,你注册了wsescap.com
这个域名,由于业务关系等,你需要分开为ops
部门和fin
部门,分别使用自己的DNS
服务器,这个时候你就需要进行子域授权了。
# 定义一个子区域
# 在/var/named/下的指定文件中进行配置,如这里的/var/named/wsescape.com.zone
# 在我们授权了wsescape.com的前提下,定义两个子域,分别为ops和fin两个
ops.wsescape.com.INNSns1.ops.wsescape.com.
ops.wsescape.com.INNSns2.ops.wsescape.com.
ns1.ops.wsescape.com.INA1.1.1.1
ns2.ops.wsescape.com.INA1.1.1.2
fin.wsescape.com.INNSns1.fin.wsescape.com.
fin.wsescape.com.INNSns2.fin.wsescape.com.
ns1.fin.wsescape.com.INA3.1.1.1
ns2.fin.wsescape.com.INA3.1.1.2
前提
:如果在wsescape.com下,定义了一个子域为ops,并在ops下创建了一个www的服务。
(1)当www.test.org中的一台主机需要访问ops下的www主机时,就需要进过以下几个阶段:
(1)当wsescape.com
下的一台主机需要访问ops
下的www主机时,虽然wsescape.com的DNS主机不给于解析,但是它知道子域的位置,所以会立即指向ops的DNS服务器。
(2)当ops
下的一台主机需要访问wsescape.com
下的www主机时,就需要进过以下几个阶段:
我们会发现这个饶了一大圈,为了避免这样的问题,就需要定义转发服务器。
(1)关闭dnssec功能
dnssec-enable no
dnssec-validation no
(2)被转发的服务器需要能够为请求者做递归,否则转发请求不予进行
(3)即定义了全局转发又定义了区域转发,优先级为能够精确匹配到的先通过区域转发,不能再通过全局转发
凡是对非本机所有负责解析的区域的请求,统统转发给指定的服务器
# forward定义转发模式
# first表示先转发给指定解析服务器,如无响应的话再找根服务器,即先递归在迭代
# only表示转发给指定解析服务器,仅仅递归
# fowwarders定义转发给谁
Options {
forward { first|only };
forwarders;
}
仅转发对特定的区域的请求至某服务器
需要自己定义区域和区域类型等信息
# forward定义转发模式
# first表示先转发给指定解析服务器,如无响应的话再找根服务器,即先递归在迭代
# only表示转发给指定解析服务器,仅仅递归
# fowwarders定义转发给谁
zone "ZONE_NAME" IN {
type forward;
forward { first|only };
forwarders;
}
# 一台独立的主机,这里配置父域就是在主服务器配置的基础上,添加子域而已
# 注释的话,默认监听所有
# 如果发现测试无法成功,查看/etc/named.conf中的dnssec改为no而非注释掉,否则导致本地客户端不接受
[root@localhost ~]# yum installl -y bind
[root@localhost ~]# vim /etc/named.conf
options {
// listen-on port 53 { 172.16.242.178; 127.0.0.1; };
// 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 { localhost; };
recursion yes;
dnssec-enable no;
dnssec-validation no;
/* Path to ISC DLV key */
// bindkeys-file "/etc/named.iscdlv.key";
// managed-keys-directory "/var/named/dynamic";
};
[root@localhost ~]# service named start
[root@localhost ~]# ss -tunl | grep :53
udp UNCONN 0 0 127.0.0.1:53 *:*
udp UNCONN 0 0 ::1:53 :::*
tcp LISTEN 0 3 ::1:53 :::*
tcp LISTEN 0 3 127.0.0.1:53 *:*
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "wsescape.com" IN {
type master;
file "wsescape.com.zone";
};
# ops、ns2.ops和ns1.ops都会自动补全wsescape.com.
# 这里没有定义ns2.ops的A记录,是因为ns2.ops我们没有配置主机
# 如果父域需要查找子域的时候,可能会跑到我们这个没有配置的机器上,导致服务解析,所以这就是没有定义的原因
[root@localhost ~]# vim /var/named/wsescape.com.zone
$TTL 1D
$ORIGIN wsescape.com.
@ IN SOA ns1.wsescape.com. admin.wsescape.com (
2016042201
1H
5M
7D
1D )
IN NS ns1
IN NS ns2
ns1 IN A 172.16.100.11
ns2 IN A 172.16.100.18
www IN A 172.16.100.11
* IN A 172.16.100.11
ops IN NS ns1.ops
ops IN NS ns2.ops
ns1.ops IN A 172.16.100.12
[root@localhost ~]# cd /var/named/
[root@localhost named]# chown :named wsescape.com.zone
[root@localhost named]# chmod 640 wsescape.com.zone
[root@localhost ~]# rndc reload
server reload successful
[root@localhost ~]# tail /var/log/messages
# 配置子域服务器,即一台独立的主机,和父域配置没什么大的差别
# 注释的话,默认监听所有
# 如果发现测试无法成功,查看/etc/named.conf中的dnssec改为no而非注释掉,否则导致本地客户端不接受
[root@localhost ~]# yum installl -y bind
[root@localhost ~]# vim /etc/named.conf
options {
// listen-on port 53 { 172.16.242.178; 127.0.0.1; };
// 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 { localhost; };
recursion yes;
dnssec-enable no;
dnssec-validation no;
/* Path to ISC DLV key */
// bindkeys-file "/etc/named.iscdlv.key";
// managed-keys-directory "/var/named/dynamic";
};
[root@localhost ~]# service named start
[root@localhost ~]# ss -tunl | grep :53
udp UNCONN 0 0 127.0.0.1:53 *:*
udp UNCONN 0 0 ::1:53 :::*
tcp LISTEN 0 3 ::1:53 :::*
tcp LISTEN 0 3 127.0.0.1:53 *:*
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "ops.wsescape.com" IN {
type master;
file "ops.wsescape.com.zone";
};
# ns1和ns2都会自动补全ops.wsescape.com.
# 这里也省略了ns2的定义,因为没有这里机器,如果父域需要查找子域的时候
# 可能会跑到我们这个没有配置的机器上,导致服务解析,所以这就是没有定义的原因
[root@localhost ~]# vim /var/named/ops.wsescape.com.zone
$TTL 1D
$ORIGIN ops.wsescape.com.
@ IN SOA ns1.ops.wsescape.com. admin.ops.wsescape.com (
2016042201
1H
5M
7D
1D )
IN NS ns1
IN NS ns2
ns1 IN A 172.16.100.12
www IN A 172.16.100.20
* IN A 172.16.100.20
[root@localhost ~]# cd /var/named/
[root@localhost named]# chown :named wsescape.com.zone
[root@localhost named]# chmod 640 wsescape.com.zone
[root@localhost ~]# rndc reload
server reload successful
[root@localhost ~]# tail /var/log/messages
# 当这里,我们会发现如下问题
# 在子域服务器中,执行命令后可以查看ops的信息
# 172.16.100.12为子域服务器
[root@localhost ~]# dig -t A www.ops.wsescape.com @172.16.100.12
# 在子域服务器中,执行命令后在无网络的情况下不能查看父域的信息,在有网的情况下会根据根返回的信息来定位父域信息
[root@localhost ~]# dig -t A www.wsescape.com @172.16.100.12
# 在父域服务器中,执行命令后可以查看子域ops的信息
# 这里dig命令默认执行一个递归操作,所以这里需要加上+norecurse非递归即可
# 172.16.100.11为父域服务器
[root@localhost ~]# dig -t A ops.wsescape.com @172.16.100.11 +norecurse
[root@localhost ~]# dig -t A www.ops.wsescape.com @172.16.100.11 +norecurse
# 在父域中配置
# 全局转发,就是通通转发给172.16.0.1来查询
# 在父域服务器上编辑/etc/named.conf,在options添加如下信息
# 由于上述的机器没有连接互联网,所以可以通过172.16.0.1进行解析
[root@localhost ~]# vim /etc/named.conf
Options {
forward first;
forwarders { 172.16.0.1; };
}
[root@localhost ~]# rndc reload
server reload successful
[root@localhost ~]# tail /val/log/messages
# 父域中测试可以
[root@localhost ~]# dig -t A www.baidu.com @172.16.100.11
# 在子域中配置
# 区域转发,就是将wsescape.com这个域内的查询转发给172.16.100.11来查询
# 在子域服务器上编辑/etc/named.rfc1912.zones最后添加一个zone
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "wsescape.com" IN {
type forword;
forward only;
forwarders { 172.16.100.11; };
};
[root@localhost ~]# rndc reload
server reload successful
[root@localhost ~]# tail /val/log/messages
# 子域中测试可以,成功
[root@localhost ~]# dig -t A www.wsescape.com @172.16.100.12
# 父域中测试,成功
[root@localhost ~]# dig -t A www.ops.wsescape.com @172.16.100.11
[root@localhost ~]# dig -t A www.baidu.com @172.16.100.11
# 子域中测试,子域知道父域在哪里,成功
# 在子域中还是无法解析,因为指定要了定义区域wsescape.com可以解析
# 如果在子域中,即定义了全局转发有定义了区域转发,优先级为能够精确匹配到的先通过区域转发,不能再通过全局转发
[root@localhost ~]# dig -t A www.wsescape.com @172.16.100.12
# 子域解析失败
[root@localhost ~]# dig -t A www.baidu.com @172.16.100.12
# acl表示关键字,acl_name表示自定义名称
# ip表示单个的IP地址,net表示网络,意思就是单个IP和网络都可以定义
acl acl_name {
ip;
ip;
net/prelen;
};
因为这四个是内置的acl,所以在我们自己定义的时候不能使用这几个名称,否则会导致误用发生。
以下的这几个指令,可以用在/etc/named.conf中表示全局生效,也可以用在/etc/named.rfc1912.zones中,定义在单独的zone中表示局部生效。同时,{}内可以包含定义的acl或者主机IP地址,包括内置的和我们自己定义的。
# 这里我们定义的acl,可以在主配置文件/etc/named.conf中的option中使用,可以在`/etc/named.rfc1912.zones`中使用
# 定义自己的acl
acl mynet {
172.16.1.100;
172.16.0.0/16;
}
# 在/etc/named.conf中的option中使用
[root@localhost ~]# vim /etc/named.conf
acl mynet {
172.16.1.100;
172.16.0.0/16;
}
options {
// listen-on port 53 { 172.16.242.178; 127.0.0.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 { mynet; };
recursion yes;
dnssec-enable no;
dnssec-validation no;
};
...
# 在`/etc/named.rfc1912.zones`中使用
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "wsescape.com" IN {
type master;
file "wsescape.com.zone";
allow-query { mynet; };
};
...
主要适用于对于用户的分类,提高网站访问效率。
BIND view
就是实现分布式缓存,类似于CDN
的一致方式view
自己的用户节系列表进行匹配,最终来确定view
系统解析功能,返回指定的区域解析库文件view1
匹配第一个网络, 用view2
匹配第二个网络, 用view3
匹配其余网络,保证不会有缺漏bind
服务器可定义多个view
,每个view
中可定义一个或多个zone
区域view
用来匹配一组请求的客户端view
内可能需要对同一个区域进行解析,但使用不同的区域解析库文件view
是自上而下,逐一匹配option
中的指令,都可以用在view中view VIEW_NAME {
match-clients { };
}
(1)一旦启用了view,所有的zone都只能定义在view中,一个都不允许例外
(2) 仅有必要在匹配到允许递归请求的客户所在view中定义根区域
(3)客户端请求到达时是自上而下检查每个view所服务的客户端列表
# 在172.16.100.11的主机中
# 定义acl并将/etc/named.conf中定义的根zone删除
[root@localhost ~]# vim /etc/named.conf
# 删除如下根zone
zone "." IN {
type hint;
file "named.ca";
};
# 添加acl
acl mynet {
172.16.0.0/16;
127.0.0.0/8;
};
# 在172.16.100.11的主机中
# 将根移到/etc/named.rfc1912.zones中,并将所有的zone包含在view中
# 并添加内部访问配置internal
[root@localhost ~]# vim /etc/named.rfc1912.zones
# 添加view,限制mynet用户可以访问并允许递归
view internal {
match-chlients { mynet; };
allow-recursion { mynet; };
# 添加根
zone "." IN {
type hint;
file "named.ca";
};
# 由于之前的设置,这里是有wsescape.com,并配置了wsescape.com.zone文件
zone "wsescape.com" IN {
type master;
file "wsescape.com.zone";
}
...
};
# 在172.16.100.11的主机中
# 如果我们在/etc/named.conf中增加192.168.0.0/24网络,就可以在192.168.0.13中可以解析,这里没有添加进去
[root@localhost ~]# named-checkconf
[root@localhost ~]# service named restart
# 在172.16.100.11主机上,成功
[root@localhost ~]# dig -t A www.wsescape.com @172.16.100.11
# 如果配置了,在192.168.0.13主机上,成功
[root@localhost ~]# dig -t A www.wsescape.com @172.16.100.11
# 在172.16.100.11的主机中
# 在/etc/named.rfc1912.zones中,添加外部访问配置
# 这里对没有匹配到的主机,不进行递归,所以在external就没有添加根域
[root@localhost ~]# vim /etc/named.rfc1912.zones
view external {
match-clents { any; };
zone "wsescape.com" IN {
type master;
file "wsescape.com.external";
allow-update { none; };
};
};
[root@localhost ~]# cd /var/named/
# 归档复制
[root@localhost named]# cp -a wsescape.com.zone wsescape.com.external
# 这里的2.2.2.1表示的是wsescape.com网站的公网DNS服务器
[root@localhost named]# vim wsescape.com.external
$TTL 1D
$ORIGIN wsescape.com.
@ IN SOA ns1.wsescape.com. admin.wsescape.com (
2016042201
1H
5M
7D
1D )
IN NS ns1
IN NS ns2
ns1 IN A 172.16.100.11
ns2 IN A 172.16.100.18
www IN A 2.2.2.1
* IN A 2.2.2.1
[root@localhost ~]# service named restart
# 在172.16.100.11主机上,成功来自172.16.100.11
[root@localhost ~]# dig -t A www.wsescape.com @172.16.100.11
# 在192.168.0.13主机上,成功来自2.2.2.1
[root@localhost ~]# dig -t A www.wsescape.com @172.16.100.1
# 最小化安装机器
[root@localhost ~]# yum groupinstall "Development Tools" "Server Platform Development"
# 去官网isc.org下载安装包,bind-9.10.1-P1.tar.gz
# bind9和bind10的区别很大,而且bind10还在测试阶段
# 创建named用户和组
# 安装在同一目录下/usr/local/bind9,系统文件放在/etc/named/
# 禁用IPv6功能,禁用chroot功能,启动线程多核工作
# 自己手动编译安装bind可能会出现的问题
# (1)在/etc/named/没有配置文件或者为空,需要自己创建
# (2)没有任何区域解析库文件,即/var/named,所以也没有13个根节点,需要自己创建
# (3)没有rndc的配置文件,需要自己创建
# (4)没有启动脚本,没有/etc/init.d/named文件
# 这里由于自定义安装到了/usr/local/bind9中,所以像dig、host等工具不能直接调用,需要完整路径
[root@localhost ~]# tar xf bind-9.10.1-P1.tar.gz
[root@localhost ~]# cd bind-9.10.1-P1
[root@localhost ~]# groupadd -r -g 53 named
[root@localhost ~]# useradd -r -u 53 -g 53 named
[root@localhost ~]# ./configure --prefix=/usr/local/bind9 --sysconfdir=/etc/named/ --disable-ipv6 --disable-chroot --enable-threads
[root@localhost ~]# make
[root@localhost ~]# make install
# 添加环境变量,就可以调用相关命令
[root@localhost ~]# vim /etc/profile.d/named.sh
export PATH=/usr/local/bind9/bin:/usr/local/bind9/sbin:$PATH
[root@localhost ~]# . /etc/profile.d/named.sh
# 导出库文件
[root@localhost ~]# vim /etc/ld.so.conf.d/named.conf
/usr/loacl/bind9/lib
# 重新载入库文件
[root@localhost ~]# ldconfig -v
# 如果有头文件,导出头文件
[root@localhost ~]# ln -sv /usr/local/bind9/include /usr/include/named
# 之后就可以使用/usr/include/named来访问/usr/local/bind9/中的头文件了
[root@localhost ~]# ls /usr/include/named
# 在/usr/local/bind9/下有share的帮助文件,添加MANPATH将其放入man中
[root@localhost ~]# vim /etc/man.conf
MANPATH /usr/local/bind9/share/man
# 添加主配置文件,这里只添加directory就可以了
[root@localhost ~]# vim /etc/named/named.conf
option {
directory "/var/named"
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
[root@localhost ~]# mkdir /var/named/{named.ca, localhost.zone, named.local}
# 使用dig命令来生成13个根节点,172.16.0.1为网关地址,可以帮助我们连接外网的地址,获取13个根节点
[root@localhost ~]# dig -t NS . @172.16.0.1 > /var/named/named.ca
[root@localhost ~]# vim /var/named/localhost.zone
$TTL 1D
@ IN SOA localhost. admin.localhost. (
2016042201
1H
5M
7D
1D )
IN NS localhost.
localhost. IN A 172.0.0.1
[root@localhost ~]# vim /var/named/named.local
$TTL 1D
@ IN SOA localhost. admin.localhost. (
2016042201
1H
5M
7D
1D )
IN NS localhost.
1 IN PRT localhost.
[root@localhost ~]# cd /var/named/
[root@localhost named]# chmod 640 ./*
[root@localhost named]# chown :named *
[root@localhost named]# chmod 640 /etc/named/named.conf
# 查看帮助文档
[root@localhost ~]# man named
# 启动named服务,调试
[root@localhost ~]# named -u named -f -g -d 3
# 启动named服务,不调试
[root@localhost ~]# named -u named
# 查看是否启动
[root@localhost ~]# ss -tunl named | grep :53
# 关闭named服务
[root@localhost ~]# killall named
# 添加解析区域
[root@localhost ~]# vim /etc/named/named.conf
zone "wsescape.com" IN {
type master;
file "wsescape.com.zone";
allow-update { none; };
};
[root@localhost ~]# vim /var/named/wsescape.com.zone
$TTL 1D
$ORIGIN wsescape.com.
@ IN SOA ns.wsescape.com. admin.wsescape.com. (
2016042201
1H
5M
7D
1D )
IN NS ns
ns IN A 172.16.100.11
www IN A 172.16.100.11
[root@localhost named]# chmod 640 wsescape.com.zone
[root@localhost named]# chown :named wsescape.com.zone
# 启动
[root@localhost named]# named -u named
# 解析正常
[root@localhost named]# dig -t A www.wsescape.com @172.16.100.11
# 当我们使用rndc reload等的时候,会提示我们没有配置文件
# 想让rndc可用,使用rndc-confgen来生成配置文件
# 如果使用rndc-confgen发生堵塞,可以使用rndc-confgen -r /dev/urandom来生成随机数
# 用rndc-confgen生成的文件,将#Start和#End之间的配置文件放到/etc/named/rndc.conf中,之后根据提示将后续的内容放到/etc/named/named.conf中
[root@localhost ~]# rndc-confgen
# Start of rndc.conf
key "rndc-key" {
algorithm hmac-md5;
secret "ZeE7NXZTprjARrGN/KRANQ==";
};
options {
default-key "rndc-key";
default-server 127.0.0.1;
default-port 953;
};
# End of rndc.conf
# Use with the following in named.conf, adjusting the allow list as needed:
# key "rndc-key" {
#algorithm hmac-md5;
#secret "ZeE7NXZTprjARrGN/KRANQ==";
# };
#
# controls {
#inet 127.0.0.1 port 953
#allow { 127.0.0.1; } keys { "rndc-key"; };
# };
# End of named.conf
# 现在rndc reload可以使用了
[root@localhost ~]# rndc reload
# 之后就只需要给提供一个脚本来像service一样,启动和关闭服务,不难的
# 编译安装,在bind-9.10.1-P1源码目录下,有一个contrib目录
# 其中包含的是第三方贡献的补充增强bind的功能
# 其中有一个目录为scripts包含一些脚本,我们可以参考
# 还有一个目录为queryperf来评估查询性能的,做压测的,需要编译安装才能使用
# 编译安装queryperf,只需要在其目录下执行./configure和make即可完成
# 就会生成一个queryperf的可执行文件,执行下列操作就可以直接使用了
[root@localhost queryperf]# cp queryperf /usr/local/bind9/bin/
# 在测试的时候,需要指定一个测试的文件,如test
[root@localhost ~]# vim test
www.wsescape.com A
wsescape.com NS
[root@localhost ~]# queryperf -d test -s 172.16.100.11
本文由哈喽比特于2年以前收录,如有侵权请联系我们。
文章来源:https://mp.weixin.qq.com/s/WKYC8jwICz7OIQeRS5ZcaQ
京东创始人刘强东和其妻子章泽天最近成为了互联网舆论关注的焦点。有关他们“移民美国”和在美国购买豪宅的传言在互联网上广泛传播。然而,京东官方通过微博发言人发布的消息澄清了这些传言,称这些言论纯属虚假信息和蓄意捏造。
日前,据博主“@超能数码君老周”爆料,国内三大运营商中国移动、中国电信和中国联通预计将集体采购百万台规模的华为Mate60系列手机。
据报道,荷兰半导体设备公司ASML正看到美国对华遏制政策的负面影响。阿斯麦(ASML)CEO彼得·温宁克在一档电视节目中分享了他对中国大陆问题以及该公司面临的出口管制和保护主义的看法。彼得曾在多个场合表达了他对出口管制以及中荷经济关系的担忧。
今年早些时候,抖音悄然上线了一款名为“青桃”的 App,Slogan 为“看见你的热爱”,根据应用介绍可知,“青桃”是一个属于年轻人的兴趣知识视频平台,由抖音官方出品的中长视频关联版本,整体风格有些类似B站。
日前,威马汽车首席数据官梅松林转发了一份“世界各国地区拥车率排行榜”,同时,他发文表示:中国汽车普及率低于非洲国家尼日利亚,每百户家庭仅17户有车。意大利世界排名第一,每十户中九户有车。
近日,一项新的研究发现,维生素 C 和 E 等抗氧化剂会激活一种机制,刺激癌症肿瘤中新血管的生长,帮助它们生长和扩散。
据媒体援引消息人士报道,苹果公司正在测试使用3D打印技术来生产其智能手表的钢质底盘。消息传出后,3D系统一度大涨超10%,不过截至周三收盘,该股涨幅回落至2%以内。
9月2日,坐拥千万粉丝的网红主播“秀才”账号被封禁,在社交媒体平台上引发热议。平台相关负责人表示,“秀才”账号违反平台相关规定,已封禁。据知情人士透露,秀才近期被举报存在违法行为,这可能是他被封禁的部分原因。据悉,“秀才”年龄39岁,是安徽省亳州市蒙城县人,抖音网红,粉丝数量超1200万。他曾被称为“中老年...
9月3日消息,亚马逊的一些股东,包括持有该公司股票的一家养老基金,日前对亚马逊、其创始人贝索斯和其董事会提起诉讼,指控他们在为 Project Kuiper 卫星星座项目购买发射服务时“违反了信义义务”。
据消息,为推广自家应用,苹果现推出了一个名为“Apps by Apple”的网站,展示了苹果为旗下产品(如 iPhone、iPad、Apple Watch、Mac 和 Apple TV)开发的各种应用程序。
特斯拉本周在美国大幅下调Model S和X售价,引发了该公司一些最坚定支持者的不满。知名特斯拉多头、未来基金(Future Fund)管理合伙人加里·布莱克发帖称,降价是一种“短期麻醉剂”,会让潜在客户等待进一步降价。
据外媒9月2日报道,荷兰半导体设备制造商阿斯麦称,尽管荷兰政府颁布的半导体设备出口管制新规9月正式生效,但该公司已获得在2023年底以前向中国运送受限制芯片制造机器的许可。
近日,根据美国证券交易委员会的文件显示,苹果卫星服务提供商 Globalstar 近期向马斯克旗下的 SpaceX 支付 6400 万美元(约 4.65 亿元人民币)。用于在 2023-2025 年期间,发射卫星,进一步扩展苹果 iPhone 系列的 SOS 卫星服务。
据报道,马斯克旗下社交平台𝕏(推特)日前调整了隐私政策,允许 𝕏 使用用户发布的信息来训练其人工智能(AI)模型。新的隐私政策将于 9 月 29 日生效。新政策规定,𝕏可能会使用所收集到的平台信息和公开可用的信息,来帮助训练 𝕏 的机器学习或人工智能模型。
9月2日,荣耀CEO赵明在采访中谈及华为手机回归时表示,替老同事们高兴,觉得手机行业,由于华为的回归,让竞争充满了更多的可能性和更多的魅力,对行业来说也是件好事。
《自然》30日发表的一篇论文报道了一个名为Swift的人工智能(AI)系统,该系统驾驶无人机的能力可在真实世界中一对一冠军赛里战胜人类对手。
近日,非营利组织纽约真菌学会(NYMS)发出警告,表示亚马逊为代表的电商平台上,充斥着各种AI生成的蘑菇觅食科普书籍,其中存在诸多错误。
社交媒体平台𝕏(原推特)新隐私政策提到:“在您同意的情况下,我们可能出于安全、安保和身份识别目的收集和使用您的生物识别信息。”
2023年德国柏林消费电子展上,各大企业都带来了最新的理念和产品,而高端化、本土化的中国产品正在不断吸引欧洲等国际市场的目光。
罗永浩日前在直播中吐槽苹果即将推出的 iPhone 新品,具体内容为:“以我对我‘子公司’的了解,我认为 iPhone 15 跟 iPhone 14 不会有什么区别的,除了序(列)号变了,这个‘不要脸’的东西,这个‘臭厨子’。