Bind
概念
Bind (berkeley internet name domain ) 由ISC 进行维护,还维护了dhcpd
Bind是DNS协议的一种实现,是一个DNS Server程序,其守护进程名 为 named
安装
sudo yum install -y bind
安装明细
主配置文件:
/etc/named.conf
可以包含其他配置文件,比如
/etc/named.iscdlv.key
/etc/named.rfc1912.zones
/etc/named.root.key
解析库文件:
/var/named/
目录下:
一般以 ZONE_NAME.zone
命名
其实就是将当前DNS 负责解析的所有域以及解析结果保存在一个个配置文件中,其中named.ca 是指向 . 域名服务器,当本地解析不到时进行递归查询
注意,一个DNS服务器可以服务多个域,包括正向反向
必须要有根区域解析文件,一般叫做named.ca,告诉 DNS服务器
根节点服务器在哪
还应该有两个区域解析库文件,一个叫做localhost(避免其他主机名也叫localhost,解析到别的IP去,保证localhost必须解析到127.0.0.1),还有127.0.0.1 的 反向解析。如下图:
named.localhost
是一个正向解析库文件
named.loopback
是一个反向解析库文件
以上两个文件不是bind开发者提供,而是RPM包制作者提供
named.ca
里面保存了13组 .
域名服务器的NS记录
和A记录
rndc
控制nameserver的远程工具,默认与Bind 安装在同一个主机,监听在127.0.0.1:953,因此仅允许本地使用。可以开启远程模式,让远程也可以通过rndc控制。
bind程序安装完毕之后,默认即可作为缓存 DNS 服务器使用;可以让其他客户机将dns 指向此服务器,可以完成到互联网找 . 域名服务器
并进行结果缓存等。 如果没有专门负责解析的域,则可以直接启动服务(单纯作为缓存DNS使用)
配置
主配置文件格式
1、全局配置段:
options{…}
2、日志配置段
logging {…}
3、区域配置段:
zone {…} 定义那些本机负责解析的区域或者转发的区域
1、修改/etc/named.conf,修改监听地址,注意,最后必须用 ;
结尾,并且前后没有空格, 花括号前后有空格
也可以将Ip地址改为any
,即相当于监听在0.0.0.0
并修改 allow-query 为any
,默认为localhost
,即只允许本机进行使用。
2、关闭dnssec-enable
3、检查语法 ,使用 named-checkconf
命令完成配置文件语法检查
name-checkconf /path/to/conf
如果不给出具体的配置路径,就是默认/etc/named.conf
named-checkzone ZONE_NAME ZONE_FILE
检查区域数据库文件语法错误
4、启动bind
systemctl start named
dig命令
dig [-t RR_TYPE] name(要查询的名字,查询A记录时,name就是fqdn) @Server [query options]
dig主要是用于测试dns,不会查询/etc/hosts文件
查询选项:
+[no]trace :跟踪或者不跟踪解析过程
+[no]recurse: 递归方式进行解析
注意:反向解析 使用 dig -x <IP> @server
进行查询,但是不一定能查到,因为有正向解析不一定有反向解析
host命令
host [-t RR_TYPE] name dns_addr
nslookup 命令
命令模式:
nslookup [-options] [name] [dns_server]
交互模式:
rndc 命令
rndc status
查看当前dns服务的状态
rndc stats
查看相关数据
rndc reload
重载配置文件,无需重启服务
配置解析区域:
-
定义区域
-
在主配置文件或者其他的配置文件被主配置文件include进去
-
zone “ZONE_NAME” IN {
type {master|slave|hint|forward} //通常是master服务
file “ZONE_NAME.zone” //使用相对路径代表这个数据文件在/var/named下,也可以使用绝对路径,从而可以将数据文件放到别处
};
-
-
建立区域数据文件
- 在/var/named 目录下建立区域数据文件
-
重载配置文件和区域数据文件
配置实例
正向解析域
# 编辑 /etc/named.rfc1912.zones 在最后加入一个域说明
zone "sugon.com." IN {
type master;
file "sugon.com.zone";
};
[root@lct-k8s-3 named]# cat named.localhost
$TTL 1D #全局宏定义,默认TTL
@ IN SOA @ rname.invalid. ( #@ 代表当前zone, TTL全局集成
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
#建立区域数据库文件
[root@lct-k8s-3 named]# cat /var/named/sugon.com.zone
$TTL 3600
@ IN SOA sugon.com. 173895042.qq.com. (
20191109
1H
10M
3D
1D )
IN NS ns1.sugon.com.
ns1.sugon.com. IN A 10.6.6.196
lct-k8s-3 IN A 10.6.6.196
k8s-lct-3 IN CNAME lct-k8s-3
lct-k8s-1 IN A 10.6.6.194
#语法检查
named-checkconf
#检查区域
[root@lct-k8s-3 named]# named-checkzone sugon.com. /var/named/sugon.com.zone
zone sugon.com/IN: loaded serial 20191109
OK
#重载配置文件
[root@lct-k8s-3 named]# rndc status
version: BIND 9.11.4-P2-RedHat-9.11.4-9.P2.el7 (Extended Support Version) <id:7107deb>
running on lct-k8s-3: Linux x86_64 5.0.5-1.el7.elrepo.x86_64 #1 SMP Wed Mar 27 13:30:25 EDT 2019
boot time: Sat, 09 Nov 2019 07:31:50 GMT
last configured: Sat, 09 Nov 2019 07:31:50 GMT
configuration file: /etc/named.conf
CPUs found: 4
worker threads: 4
UDP listeners per interface: 3
number of zones: 103 (97 automatic)
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/900/1000
tcp clients: 2/150
server is up and running
#之前是103个zone
[root@lct-k8s-3 named]# rndc reload
server reload successful
#reload后变为104个zone
[root@lct-k8s-3 named]# rndc status
version: BIND 9.11.4-P2-RedHat-9.11.4-9.P2.el7 (Extended Support Version) <id:7107deb>
running on lct-k8s-3: Linux x86_64 5.0.5-1.el7.elrepo.x86_64 #1 SMP Wed Mar 27 13:30:25 EDT 2019
boot time: Sat, 09 Nov 2019 07:31:50 GMT
last configured: Sat, 09 Nov 2019 08:29:34 GMT
configuration file: /etc/named.conf
CPUs found: 4
worker threads: 4
UDP listeners per interface: 3
number of zones: 104 (97 automatic)
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/900/1000
tcp clients: 2/150
server is up and running
#查看解析结果,可以看到我们配置的别名和A记录都已经正确回复
[root@lct-k8s-1 ~]# nslookup
> server 10.6.6.196
Default server: 10.6.6.196
Address: 10.6.6.196#53
> set q=a
> k8s-lct-3.sugon.com
Server: 10.6.6.196
Address: 10.6.6.196#53
k8s-lct-3.sugon.com canonical name = lct-k8s-3.sugon.com.
Name: lct-k8s-3.sugon.com
Address: 10.6.6.196
# 查看NS也已经正确
[root@lct-k8s-1 ~]# dig -t NS sugon.com. @10.6.6.196
; <<>> DiG 9.9.4-RedHat-9.9.4-73.el7_6 <<>> -t NS sugon.com. @10.6.6.196
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12789
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;sugon.com. IN NS
;; ANSWER SECTION:
sugon.com. 3600 IN NS ns1.sugon.com.
;; ADDITIONAL SECTION:
ns1.sugon.com. 3600 IN A 10.6.6.196
;; Query time: 0 msec
;; SERVER: 10.6.6.196#53(10.6.6.196)
;; WHEN: Sat Nov 09 16:34:10 CST 2019
;; MSG SIZE rcvd: 72
#为了安全,需要将配置文件进行权限修改
chown :named /var/named/sugon.com.zone
chmod 640 sugon.com.zone
反向解析域
- 定义区域
- #注意反向区域的配置,使用网段反写
- 定义区域解析库文件
- 主要用于定义
PTR
记录
- 主要用于定义
- 重载配置文件
# 编辑/etc/named.rfc1912.zones
zone "6.10.in-addr.arpa" IN { #10.6网段下所有的解析
type master;
file "6.10.zone";
};
# 编辑反向解析数据库文件
[root@lct-k8s-3 named]# cat /var/named/6.10.zone
$TTL 3600
@ IN SOA ns1.sugon.com. 173895042.qq.com. (
20191109
1H
10M
3D
12H )
@ IN NS ns1.sugon.com.
196.6 IN PTR lct-k8s-3.sugon.com.
194.6 IN PTR lct-k8s-1.sugon.com.
[root@lct-k8s-3 named]# chmod 640 6.10.zone
[root@lct-k8s-3 named]# chown :named 6.10.zone
[root@lct-k8s-3 named]# named-checkconf
[root@lct-k8s-3 named]# named-checkzone 6.10.in-addr.arpa /var/named/6.10.zone
zone 6.10.in-addr.arpa/IN: loaded serial 20191109
OK
[root@lct-k8s-3 named]# rndc reload
server reload successful
#zone计数又多一个
[root@lct-k8s-3 named]# rndc status
version: BIND 9.11.4-P2-RedHat-9.11.4-9.P2.el7 (Extended Support Version) <id:7107deb>
running on lct-k8s-3: Linux x86_64 5.0.5-1.el7.elrepo.x86_64 #1 SMP Wed Mar 27 13:30:25 EDT 2019
boot time: Sat, 09 Nov 2019 07:31:50 GMT
last configured: Sat, 09 Nov 2019 09:00:00 GMT
configuration file: /etc/named.conf
CPUs found: 4
worker threads: 4
UDP listeners per interface: 3
number of zones: 105 (97 automatic)
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/900/1000
tcp clients: 2/150
server is up and running