1.DNS简单介绍
DNS: Donmain Name Service 域名解析服务
域名系统(服务)协议(DNS)是一种分布式网络目录服务,主要用于域名与 IP 地址的相互转换,以及控制因特网的电子邮件的发送。说白了就是IP地址不好记,改成域名方便人类记忆
端口号: 53
架构类型:C/S
协议: udp,tcp 都支持
linux下实现DNS出名的服务:BIND
BIND:Berkeley Internet Name Domain
是一款开放源码的DNS服务器软件,由美国加州大学Berkeley分校开发和维护的
BIND官方网站:http://www.isc.org
DHCP 也是 isc 组织开发的
本地名称解析配置文件:
- centos系统:
/etc/hosts
- windows系统:
%WINDIR%/system32/drivers/etc/hosts
2.安装 bind 服务
先关闭防火墙,或者放通 tcp/udp 53 端口
systemctl stop firewalld
yum 安装服务
yum install bind -y
启动服务
systemctl status named.service
systemctl enable named
启动脚本:
/etc/init.d/named
/usr/lib/systemd/system/named.service
主配置文件
/etc/named.conf
/etc/named.rfc1912.zones
/etc/rndc.key
解析库文件
ZONE_NAME.ZONE 是建议文件命名规则,非实际文件
/var/named/ZONE_NAME.ZONE
资源记录解释
记录类型:A,AAAA,PTR,SOA,NS,CNAME,MX
SOA: Start of Authority,起始授权记录有且只能有一条SOA记录,必须位于解析库的第一条记录
A :域名(FQDN) 解析IP
AAAA: 域名(FQDN) 解析成IPv6
PTR:IP 解析成 域名(FQDN)
NS: Name Server,专门用于,标明当前区域的DNS服务器
CNAME:Canonical Name, 别名记录
MX: Mail eXchanger 邮件交换器
-
配置文件与解析库的权限需要注意 named 要可以访问对应文件
[root@DNS-server named]# ll
total 24
-rw-r-----. 1 root named 168 Dec 15 2009 10.0.zone
drwxrwx---. 2 named named 23 Jun 19 09:49 data
drwxrwx---. 2 named named 60 Jun 21 00:34 dynamic
-rw-r-----. 1 root named 267 Jun 21 00:34 magedu.com.zone
-rw-r-----. 1 root named 2253 Apr 5 2018 named.ca
-rw-r-----. 1 root named 152 Dec 15 2009 named.empty
-rw-r-----. 1 root named 152 Jun 21 2007 named.localhost
-rw-r-----. 1 root named 168 Dec 15 2009 named.loopback
drwxrwx---. 2 named named 6 Jun 1 11:26 slaves
[root@DNS-server named]# ll /etc/named*
-rw-r-----. 1 root named 1808 Jun 21 00:17 /etc/named.conf
-rw-r--r--. 1 root named 3923 Jun 1 11:26 /etc/named.iscdlv.key
-rw-r-----. 1 root named 1093 Jun 21 01:11 /etc/named.rfc1912.zones
-rw-r--r--. 1 root named 1886 Apr 13 2017 /etc/named.root.key
3. 配置bind服务
3.1 配置正向解析
可以在 主配置文件/etc/named.conf
添加,但是为了减少主配置文件的内容,我们就在主配置指定的子配置文件中添加 /etc/named.rfc1912.zones
也是系统默认用来添加区域的
在 /etc/named.rfc1912.zones
中添加马哥区域:
zone "magedu.com" { type master; file "magedu.com.zone"; };
vim /etc/named.rfc1912.zones
#注释已经被我删掉了
zone "localhost.localdomain" IN {
type master;
file "named.localhost";
allow-update { none; };
};
#添加的内容
zone "magedu.com" {
type master;
file "magedu.com.zone"; # 域的解析库,默认在/var/named/ 目录下,可以在 主配置文件中自定义
};
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; };
};
3.2 配置区域(magedu.com)的解析库
在上面我们定义了magedu.com.zone
解析库文件,下面开始创建域配置改文件:
粘贴复制自带的文件,并 使用-a
复制文件属性;若 自己创建,需要注意文件权限
[root@DNS-server named]# cd /var/named
[root@DNS-server named]#cp -a named.localhost magedu.com.zone
[root@DNS-server named]# ll magedu.com.zone
-rw-r-----. 1 root named 267 Jun 21 00:34 magedu.com.zone
解析库文件默认放在(可以在主配置文件中自定义):/var/named
[root@DNS-server named]# cat magedu.com.zone
$TTL 1D #所有记录的默认超时时间 ,1D:一天,不加默认单位为 "秒"
#域名 (TTL) IN 资源类型 值 管理员邮箱 参数(括号内的都是)
@ IN SOA dnssvr1 admin.magedu.com. (
#注释
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dnssvr1
dnssvr1 A 10.0.1.2
websevr1 A 10.0.0.14
www CNAME websevr1
@ MX 10 mailsvr
mailsvr A 10.0.0.3
@
:表示 当前域的域名,相当于一个变量(magedu.com) 在上面的 配置文件中/etc/named.rfc1912.zones
定义好了$TTL
:定义该区域所有解析条目的默认超时时间TTL
:这个被省略了,在@
与IN
之间,用来定义单条解析的超时时间SOA
: 资源类型值
: 必须是一个域名 当前 为 dnssvr1,系统系统补全为 dnssvr1.magedu.com. ; 也可以手动输入 dnssvr1.magedu.com. ,还需要添加一条A记录,最终是要解析成IP,不能直接把值
添加成IP;(com后的 "." 必须要,不然系统又会在尾部添加 成 dnssvr1.magedu.com.magedu.com)管理员邮箱
: 管理员的邮箱 admin@magedu.com. ,但是 @ 被占用了,有别的含义,所以就用 ".
" 代替了;这是系统规定的,可不是自己定义的参数
:
0 ;serial
:为本数据库的版本号,指的就是我们正在编辑的这个文本文件。只要对本数据库做数据出更改,就必须改变版本号,一般为递增;在做DNS主从同步,从库就看主库的版本号是否一致,而决定是否出发数据同步操作
1D ; refresh
:触发同步的间隔时间,默认为 " 1D " (一天),取决于库文件改变数据的平凡程度,来定时间间隔
1H ; retry
: 同步失败,重新连接同步的间隔时间
1W ; expire
: 从服务器无法与主服务器同步,超出指定时间后,默认" 1W " (一周); 从服务器所有解析记录失效,从服务器不再提供DNS解析服务
3H ; minimum
: 访问不存在的解析记录的缓存过期时间;比如:用户访问 www.qq1111.com,第一次访问,DNS 服务器会通过 根 DNS 一级级 寻找,直到确认无法解析;而后,再次在缓存过期时间内访问,直接给回上次的结果;超过过期时间后访问,就与第一次访问步骤相同NS
指定当前区域的DNS 服务器CNAME
别名MX
邮件服务器,MX
与mailsvr
中间的10
为邮件服务器的优先级,越小优先级越高
附:
以下两个命令用来排错使用
- 检查配置文件语法错误
[root@DNS-server ~]# named-checkconf
- 检查区域解析库文件语法错误
named-checkzone + 域名 + 解析库文件
[root@DNS-server ~]# named-checkzone magedu.com /var/named/magedu.com.zone
zone magedu.com/IN: loaded serial 0
OK
一个最简单的DNS服务就配置完成了,接下来测试一下
3.3 重载服务
systemctl reload named 或 rndc reload
3.4 尝试本地访问:
[root@DNS-server ~]# dig www.magedu.com
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.6 <<>> www.magedu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5138
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.magedu.com. IN A
;; ANSWER SECTION:
www.magedu.com. 86400 IN CNAME websevr1.magedu.com.
websevr1.magedu.com. 86400 IN A 10.0.0.14
;; AUTHORITY SECTION:
magedu.com. 86400 IN NS dnssvr1.magedu.com.
;; ADDITIONAL SECTION:
dnssvr1.magedu.com. 86400 IN A 10.0.1.2
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Jun 20 22:37:46 EDT 2020
;; MSG SIZE rcvd: 120
如果没有dig
命令,就yum
安装 bind-utils
;里面的dig、host、nslookup
都是DNS调试工具
[root@DNS-server ~]# rpm -ql bind-utils
/etc/trusted-key.key
/usr/bin/delv
/usr/bin/dig
/usr/bin/host
/usr/bin/mdig
/usr/bin/nslookup
/usr/bin/nsupdate
/usr/share/man/man1/delv.1.gz
/usr/share/man/man1/dig.1.gz
/usr/share/man/man1/host.1.gz
/usr/share/man/man1/mdig.1.gz
/usr/share/man/man1/nslookup.1.gz
/usr/share/man/man1/nsupdate.1.gz
在这里细心的认会发现只能本地访问可以解析,其它服务器访问无法解析
3.5 主配置文件讲解
[root@DNS-server ~]# cat /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html
options {
listen-on port 53 { localhost; }; #监听的端口号,与监听的ip地址;默认 127.0.0.1;改成 localhost 表示监听本机所有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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { 10.0.0.0/23; }; #允许访问的IP,默认localhost,可填:any 表示所有
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- If you are building a RECURSIVE (caching) DNS server, you need to enable
recursion.
- If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
recursion yes; #DNS迭代(就是自己找不到,让别人帮忙找)
#DNS 安全,dnssec-enable、dnssec-validation 开启后,只会寻找本服务器的DNS解析
dnssec-enable yes;
dnssec-validation yes;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.root.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid"; # pid文件
session-keyfile "/run/named/session.key";
};
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";
现在指定网段的服务器都可以访问DNS了
测试一下
指定DNS服务IP器解析方法:
host " 域名 " " DNS_ip "
dig " 域名 " @" DNS_ip "
[root@centos-mini ~]# host www.magedu.com 10.0.1.2
Using domain server:
Name: 10.0.1.2
Address: 10.0.1.2#53
Aliases:
如果存在一个域名对应多个 A 记录,那么优先返回 同一网段的地址;若都是一个网段,那本就随机返回,也起到负载均衡的效果
websevr1 A 10.0.0.14
websevr1 A 10.0.0.13
www CNAME websevr1
windows下使用nslookup解析
C:\Users\Administrator>nslookup
Default Server: dnsanycast-1.szgwbn.net.cn
Address: 211.162.66.66
> server 10.0.1.2 # 临时指定DNS服务器
Default Server: [10.0.1.2]
Address: 10.0.1.2
> www.magedu.com #解析域名
Server: [10.0.1.2]
Address: 10.0.1.2
Name: websevr1.magedu.com
Addresses: 10.0.0.13
10.0.0.14
Aliases: www.magedu.com
> exit #退出
#也可以在 命令后面 直接跟 域名 与 DNS_ip
C:\Users\Administrator>nslookup www.magedu.com 10.0.1.2
Server: UnKnown
Address: 10.0.1.2
Name: websevr1.magedu.com
Addresses: 10.0.0.14
10.0.0.13
Aliases: www.magedu.com
4、配置DNS反向解析
在 /etc/named.rfc1912.zones
中添加 反向解析域
[root@DNS-server ~]# vim /etc/named.rfc1912.zones
zone "0.10.in-addr.arpa" IN { # 0.10 就是需要反向解析IP段,反写
type master;
file "10.0.zone";
复制反向解析库模版
[root@DNS-server named]# cd /var/named
[root@DNS-server named]# cp -a named.loopback 10.0.zone
配置反向解析库
[root@DNS-server named]# vim 10.0.zone
$TTL 1D
@ IN SOA dnssvr1 admin.magedu.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dnssvr1
dnssvr1 A 127.0.0.1
1.2 PTR localhost. # 1.2 后面的,系统会自动补全
15.0.0.10.in-addr.arpa. PTR websvr1.qq.com. # 15.0.0.10.in-addr.arpa. 完全全格式
检查语法,重载服务
[root@DNS-server named]# named-checkzone 15.0.0.10.in-addr.arpa 10.0.zone
zone 15.0.0.10.in-addr.arpa/IN: loaded serial 0
OK
[root@DNS-server named]# rndc reload
反向解析,可以看到,通过IP能解析出配置的域名了
C:\Users\Administrator>nslookup 10.0.0.15 10.0.1.2
Server: localhost
Address: 10.0.1.2
Name: websvr1.qq.com
Address: 10.0.0.15
反向解析测试:
[root@centos-mini ~]# dig -x 10.0.0.15 @10.0.1.2
[root@centos-mini ~]# nslookup 10.0.0.15
按类型查询:
#查邮箱 MX
[root@centos-mini ~]# dig -t MX magedu.com. @114.114.114.114
#查NS记录
[root@centos-mini ~]# dig -t NS magedu.com. @114.114.114.114
#查询解析库的所有记录,这是不安全的,需要做安全优化,就不会被查到了
[root@centos-mini ~]# dig -t axfr magedu.com @10.0.1.2
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6_10.7 <<>> -t axfr magedu.com @10.0.1.2
;; global options: +cmd
magedu.com. 86400 IN SOA dnssvr1.magedu.com. admin.magedu.com. 0 86400 3600 604800 10800
magedu.com. 86400 IN MX 10 mailsvr.magedu.com.
magedu.com. 86400 IN NS dnssvr1.magedu.com.
dnssvr1.magedu.com. 86400 IN A 10.0.1.2
mailsvr.magedu.com. 86400 IN A 10.0.0.3
websevr1.magedu.com. 86400 IN A 10.0.0.14
websevr1.magedu.com. 86400 IN A 10.0.0.13
www.magedu.com. 86400 IN CNAME websevr1.magedu.com.
magedu.com. 86400 IN SOA dnssvr1.magedu.com. admin.magedu.com. 0 86400 3600 604800 10800
;; Query time: 1 msec
;; SERVER: 10.0.1.2#53(10.0.1.2)
;; WHEN: Sun Jun 21 14:48:46 2020
;; XFR size: 9 records (messages 1, bytes 243)
解析库记录的用法
- 解析 server1-100:
里面的 $GENERATE 1-100 server$ A 10.0.0.$
表示:
server1 A 10.0.0.1
server2 A 10.0.0.2
server3 A 10.0.0.3
....
....
server100 A 10.0.0.100
一百条A记录
[root@DNS-server named]# vim magedu.com.zone
$TTL 1D
@ IN SOA dnssvr1 admin.magedu.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ NS dnssvr1
dnssvr1 A 10.0.1.2
websevr1 A 10.0.0.14
websevr1 A 10.0.0.13
$GENERATE 1-100 server$ A 10.0.0.$
www CNAME websevr1
@ MX 10 mailsvr
mailsvr A 10.0.0.3
- 不加 www 访问域名的解决办法:
@ 就表示域名 magedu.com,在/etc/named.rfc1912.zones
文件中定义的
@ A 10.0.1.2
magedu.com A 10.0.1.2
- 匹配错误域名
比如输入: wwwwwww.magedu.com;错误的A记录;默认是解析不了的,加入如下信息,就可以解析了, " * " 的优先级是最低的,所有记录都匹配不到,才匹配 " * ":
* A 10.0.1.2
5、DNS 主从的实现:
从服务器圣上
#安装服务器
yum install bind -y
#插入同步域内容
vim /etc/named.rfc1912.zones
zone "magedu.com" IN {
type slave; #表示从DNS
masters {10.0.1.2;}; #主DNS 的IP
file "slaves/magedu.com.slave.zone"; #同步的解析库保留的地方
slaves 是专门用来放从库的同步解析文件的,也可以 自己创建目录,但必须 给 named 用户与组 读写权限
slaves/magedu.com.slave.zone
是相对路径,centos 7 该文件是加密的
[root@DNS-client named]# pwd
/var/named
[root@DNS-client named]# ll
总用量 16
drwxrwx--- 2 named named 23 6月 22 20:13 data
drwxrwx--- 2 named named 60 6月 22 20:18 dynamic
-rw-r----- 1 root named 2253 4月 5 2018 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 35 6月 22 20:18 slaves
测试一下 :
# 主 DNS:10.0.1.2
# 从 DNS:10.0.0.14
# 正常 是 10.0.1.2 主DNS 解析
[root@centos-mini ~]# nslookup www.magedu.com
Server: 10.0.1.2
Address: 10.0.1.2#53
www.magedu.com canonical name = websevr1.magedu.com.
Name: websevr1.magedu.com
Address: 10.0.0.13
Name: websevr1.magedu.com
Address: 10.0.0.14
# 禁用 10.0.1.2 DNS 主机网络 ;解析变成了:10.0.0.14,测试成功
[root@centos-mini ~]# nslookup www.magedu.com
Server: 10.0.0.14
Address: 10.0.0.14#53
www.magedu.com canonical name = websevr1.magedu.com.
Name: websevr1.magedu.com
Address: 10.0.0.13
Name: websevr1.magedu.com
Address: 10.0.0.14
同理,也可以从 从库同步数据, 给从库建立从库
添加同步访问限制
细心的人会发现,在建立从库的时候,不需要任何认证,直接就重主库中,把库文件同步下来了;这肯定是不安全的;
在options
中 添加 allow-transfer { 10.0.0.14; };
,10.0.0.14
是允许从本服务器同步的IP; 就可以起到限制作用
[root@DNS-server ~]# vim /etc/named.conf
options {
listen-on port 53 { localhost; };
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { 10.0.0.0/23; };
allow-transfer { 10.0.0.14; };
被同步的从库上也要做配置 allow-transfer { none; };
;不允许任何人,同步从库数据,才能达到真正的安全
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
// allow-query { localhost; };
allow-transfer { none; };
可以使用 dig -t axfr magedu.com @10.0.1.2 做测试,是否可以同步数据
主DNS主动触发同步数据
1、需要配置一条 NS 记录指定从库,还要配置 一条从库的A 记录; 就是要告诉 named 服务 我有两个 DNS IP
2、 更改 数据库的版本号( 1 ; serial);比原先的大就行;
3、reload named服务
注意:centos 7 与 6 的 DNS 同步数据是有问题的; 在创建主从DNS的时候,一定要保持 系统版本 与 bind 服版本统一
centos 6 与 7 之间做主从:
centos 6 只能做 主 服务器
centos 7 主从 均可
[root@DNS-server ~]# vim /var/named/magedu.com.zone
$TTL 1D
@ IN SOA dnssvr1 admin.magedu.com. (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ NS dnssvr1
NS dnssvr2
dnssvr2 A 10.0.0.14
dnssvr1 A 10.0.1.2
websevr1 A 10.0.0.14
websevr1 A 10.0.0.13
www CNAME websevr1
@ MX 10 mailsvr
mailsvr A 10.0.0.3
@ A 10.0.1.2
magedu.com A 10.0.1.2
* A 10.0.1.2
有问题的话,可以看日志:/var/log/message
6、配置动态更新解析库内容
配置完成后,可以直接使用命令 添加、删除 域名解析条目
在配置的区域下 添加:
allow-update { 10.0.0.14; };
10.0.0.14 为指定可更新解析条目的IP
[root@DNS-server ~]# vim /etc/named.rfc1912.zones
zone "magedu.com" IN {
type master;
file "magedu.com.zone";
allow-update { 10.0.0.14; };
重启服务
systemctl restart named 或者 systemctl reload named (可能不生效)
在 10.0.0.14 上 测试一下:
# 添加一条A 记录
[root@DNS-client named]# nsupdate
> server 10.0.1.2 # 动态 DNS 域名
> zone magedu.com # 指定 要在哪个域中添加
> update add ftp.magedu.com 88888 IN A 8.8.8.8 # 添加一天A 记录
> send # 发送
> quit #退出
系统会产生一个临时文件
[root@DNS-server ~]# ll /var/named/magedu.com.zone.jnl
-rw-r--r--. 1 named named 726 Jun 23 10:19 /var/named/magedu.com.zone.jnl
测试是否可以解析
# 添加的 A 记录 解析成功
[root@DNS-client ~]# nslookup ftp.magedu.com
Server: 10.0.1.2
Address: 10.0.1.2#53
Name: ftp.magedu.com
Address: 8.8.8.8
还需要把解析库文件(magedu.com.zone)给 named用户,否者临时文件无法定时写入到解析库文件
[root@DNS-server named]# ll
total 48
-rw-r-----. 1 root named 230 Jun 21 14:08 10.0.zone
drwxrwx---. 2 named named 49 Jun 21 15:08 data
drwxrwx---. 2 named named 60 Jun 25 15:14 dynamic
-rw-r--r--. 1 named named 430 Jun 25 15:27 magedu.com.zone
-rw-r-----. 1 root named 2253 Apr 5 2018 named.ca
-rw-r-----. 1 root named 152 Dec 15 2009 named.empty
-rw-r-----. 1 root named 152 Jun 21 2007 named.localhost
-rw-r-----. 1 root named 168 Dec 15 2009 named.loopback
取消动态解析库
先把 allow-update { 10.0.0.14; };
的 10.0.0.14 改为none
allow-update { none; };
重载 named 服务,使用rndc sync
把临时文件的内容同步到 解析库文件中;
systemctl reload named
rndc sync
删除临时文件(.jnl)
rndc sync -clean
7、开启查询的日志的记录
默认 /var/log/messages 只记录更改DNS 的记录, rndc querylog
是 开关
这一项在DNS正式使用时,建议不要开启;DNS访问量大,时间长了,会产生大量的日志,在测试排障的时候可以使用
[root@DNS-server ~]# rndc querylog
[root@DNS-server ~]# rndc status
version: BIND 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.6 (Extended Support Version) <id:7107deb>
running on DNS-server: Linux x86_64 3.10.0-1062.el7.x86_64 #1 SMP Wed Aug 7 18:08:02 UTC 2019
boot time: Tue, 23 Jun 2020 11:58:30 GMT
last configured: Tue, 23 Jun 2020 14:17:32 GMT
configuration file: /etc/named.conf
CPUs found: 1
worker threads: 1
UDP listeners per interface: 1
number of zones: 105 (97 automatic)
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is ON #表示开启 ; rndc querylog命令 为开关
recursive clients: 0/900/1000
tcp clients: 4/150
server is up and running
随便解析一个A 记录,可以看到日志中生成了
[root@DNS-server ~]# tailf /var/log/messages
Jun 23 10:33:27 DNS-server named[11946]: client @0x7f265aeee0c0 10.0.0.4#51880 (www.magedu.com): query: www.magedu.com IN A + (10.0.1.2)
8、实现DNS服务子域
我这里是两台不同IP的服务器,实现的;在同一服务器下,也是类似的方法
父域的配置
添加两行,指定子域 DNS,与 子域解析的A记录
shanghai NS dnssvr-sh
dnssvr-sh A 10.0.0.14
$TTL 86400 ; 1 day
@ IN SOA dnssvr admin (
6 ; serial
86400 ; refresh (1 day)
3600 ; retry (1 hour)
604800 ; expire (1 week)
10800 ; minimum (3 hours)
)
NS dnssvr
shanghai NS dnssvr-sh
dnssvr A 10.0.1.2
dnssvr-sh A 10.0.0.14
www A 8.8.8.8
还需要把 /etc/named.conf 目录中 options 里的下面两项改为 " no ",不能注释掉,默认选项是 "yes"
dnssec-enable no;
dnssec-validation no;
[root@DNS-server named]# vim /etc/named.conf
options {
dnssec-enable no;
dnssec-validation no;
子域正常配置就行了:
$TTL 1D
@ IN SOA dnssvr-sh admin.shanghai.magedu.com. (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ NS dnssvr-sh
dnssvr-sh A 10.0.0.14
www A 5.5.5.5
通过父域 DNS 访问子域的 www 服务,可以看到,解析出来为 子域的IP :5.5.5.5
[root@centos-mini ~]# nslookup www.shanghai.magedu.com 10.0.1.2
Server: 10.0.1.2
Address: 10.0.1.2#53
Non-authoritative answer:
Name: www.shanghai.magedu.com
Address: 5.5.5.5
就这么简单
9、DNS转发
全局域转发
当存在多个dns服务器的时候,希望 A dns服务器找不到的解析记录,转发到B dns上解析,再返回解析记录
配置,在option中添加转发配置:
forward only;
:表示如果转发的DNS服务器上,也没有解析记录;就不再寻找根
forward first;
:表示 先找转发的DNS,找不到再自己去找根
forwarders {10.0.1.2;};
: 转发给 目标 DNS 服务器 的 IP地址
[root@DNS-server named]# vim /etc/named.conf
options {
forward only;
forwarders {10.0.1.2;};
#dns安全参数,需要关闭,不然无法转发
dnssec-enable no;
dnssec-validation no;
指定域转发
同样,dnssec也需要关掉
#dns安全参数,需要关闭,不然无法转发
dnssec-enable no;
dnssec-validation no;
添加需要被转发域名
[root@DNS-client ~]# vim /etc/named.rfc1912.zones
zone "magedu.com" IN {
type forward;
forward only; # 这里与上面的转发意思一样
forwarders {10.0.1.2;};
清除DNS缓存
[root@DNS-client ~]# rndc flush
不连接外网找根,也不转发(不再递归)
主要是针对企业内部使用的DNS,即使有网络,不想访问互联网,去解析域名;本机解析不了,就解析不
recursion no;
:默认yes ,改为 no
[root@DNS-server named]# vim /etc/named.conf
options {
recursion no;
10、智能DNS
bind view
根据客户端 IP的归属地 给出就近的 DNS 域名解析;如 客户端 为上海,DNS就返回离上海最近的解析记录给客户端,以达到就近访问,提高访问效率的好处
做智能DNS 一般都是大公司,有很多个机房; 或者是买了cdn服务的中小型公司,才使用的到;
注意:
1.一旦启动了view,所有的zone都只能在view中定义,以外的都会失效;
2.仅在允许递归请求的客户端所在的view中定义区域;
3.客户端请求到达时,是自上而下检查每一个view所服务的客户端列表;
实现智能DNS的/etc/named.conf 的整个配置文件:
[root@DNS-server named]# cat /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html
# acl 配置,系统时从上到下匹配;匹配到之后,就去 寻找 view 对应的 解析库
acl beijingnet {10.0.0.0/24; };
acl shanghainet { 172.0.0.0/16;192.168.1.0/24; };
acl other { any; };
options {
listen-on port 53 { any; };
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- If you are building a RECURSIVE (caching) DNS server, you need to enable
recursion.
- If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
#这个是递归查询,必须要开启( DNS转发 )
recursion yes;
dnssec-enable no;
dnssec-validation no;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.root.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
#下面就是 各个view 对应的域名解析库
view beijingview {
match-clients {beijingnet;};
zone "magedu.com" {
type master;
file "magedu.com.zone1";
};
include "/etc/named.rfc1912.zones";
};
view shanghaiview {
match-clients {shanghainet;};
zone "magedu.com" {
type master;
file "magedu.com.zone2";
};
include "/etc/named.rfc1912.zones";
};
view otherview {
match-clients {other;};
zone "magedu.com" {
type master;
file "magedu.com.zone3";
};
include "/etc/named.rfc1912.zones";
};
include "/etc/named.root.key";
企业真实环境 /etc/named.conf 这个配置 文件内容是非常多的,非常复杂的;
网友评论