0%

bind9

关于dns和bind9的基本介绍,包括概念,安装,配置,运维等

简介

DNS(Domain Name System),即域名系统。它使用层次结构的命名系统,将域名和IP地址相互映射,形成一个分布式数据库系统。服务器端工作在UDP协议端口53和TCP协议端口53上。

dns层次

根域

最顶层域,是一个.

顶级域

处于根域之下,主要包含组织域,地址域,反向域。

  • 组织域

    3个字符代表,如com,gov等

  • 地址域

    两个字符的国家或地区代号,如cn,hk等

  • 反向域

    特殊域,名称为in-addr-arpa,用于将ip地址映射成名字

域名解析

dns域名解析

  1. 客户机首先查看本地hosts文件,如果有则直接返回。否则进入下一步。
  2. 客户机查看本地缓存,如果有则直接返回。否则进入下一步。
  3. 将请求转发给本地DNS服务器。
  4. 查看域名是否本地解析,如果是本地解析则返回,否则进入下一步。
  5. 本地DNS服务器在缓存中查找,有则返回,无则进入下一步。
  6. 向全球某一个根域服务器发起DNS请求,根域服务器返回org域的地址列表。
  7. 使用某一个org域的IP地址,发起DNS请求,org域返回kernel域服务器地址列表。
  8. 使用某一个kernel域的IP地址,发起DNS请求,kernel域返回 www.kernel.org 主机的IP地址,本地DNS服务收到后,返回给客户机。

服务器

  1. 主域名服务器

    primary master server 是一个domain 信息的最根本的来源。它是所有辅域名服务器进行域传输的源。主域名服务器是从本地硬盘文件中读取域的数据的。每个区至少有一台主域名服务器。

  2. 辅域名服务器

    就是slave server,或叫作secondary server。辅服务器通过一个叫区传送(zone transfer)的复制过程从另一台服务器中取得区的内容。通常情况下,数据是直接从主服务器上传输过来的,但也可能是从本地磁盘上的cache 中读到的。

    辅助服务器优势

    1. 容错能力
    2. 减少广域链路通信量
    3. 减轻主服务器负载
  3. 缓存服务器(caching only server)

    一个DNS服务器可以同时作为多个域的主域名服务器和辅助域名服务器,也可以只作为主,或只作为辅,或者做任何域的授权服务器而只使用自己的cache来提供查询解析。不论是主或辅都是这个域的授权服务器。所有的服务器都会将数据保存在cache中,直到针对这些数据的TTL值过期。

  4. 转发服务器(forwarding server)

    一台缓存名服务器本身不能进行完全的递归查询。相反,它能从缓存向其它的缓存服务器转发一部分或是所有不能满足的查询,一般被称作转发服务器。可能会有一个或多个转发服务器,它们会按照顺序进行请求,直到全部穷尽或者请求得到回答为止。转发服务器一般用于用户不希望站点内的服务器直接和外部服务器通讯的情况下。一个特定的情形是许多DNS 服务器和一个网络防火墙。服务器不能透过防火墙传送信息,它就会转发给可以传送信息的服务器,那台服务器就会代表内部服务器询问因特网DNS 服务器。使用转发功能的另一个好处是中心服务器得到了所有用户都可以利用的更加完全的信息缓冲。

  5. 隐藏服务器

    隐藏服务器是指一个区的权威服务器但却没有出现在区的NS记录中,可用来保存一个区的本地拷贝以加速对区记录的访问。

域文件(zone file)

每一个域名都有自己的域文件(zone file),zone file 是由多个记录组成的,每一个记录就被称为资源记录(Resource Record,简称RR)。

SOA记录

每个域的域文件的开始都包含一个其实授权记录(start of authority record),简称soa记录,soa记录定义了全局参数,进行整个域的管理设置。一个区域文件只允许存在唯一的soa记录。

1
2
3
4
5
6
7
8
9
10
11
12
13
# bookrain.com.zone
# 第一行:@指代该zone; dns.bookrain.com.是该zone的授权主机;dnsadmin.bookrain.com.代表该zone的管理者信箱。
# Serial:代表 zone file 的版本,每当zone file内容有变动,name server管理者就应该增加这个号码,因为slave server会将这个号码与其copy的那份比对以便决定是否要再copy一次即进行zone transfer。
# Refresh: slave server每隔这段时间,就去检查master server上的 serial number 。
# Retry:当 slave server无法和master进行serial check时,要每隔这段时间retry一次。
# Expire:当时间超过Expire所定的时间而slave server都无法和 master取得连络,那么slave会删除自己的这份copy。
# Minimum:代表这个zone file中所有record的内定的TTL值,也就是其它的DNS server cache保留这条record的最长时间。
@ IN SOA dns.bookrain.com. dnsadmin.bookrain.com. (
2020033101 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum

RR(Resource Record)资源记录

通常位于SOA记录之下,定义改域的所有资源记录。

记录格式

格式定义:name TTL CLASS TYPE RDATA

  • CLASS

    • IN(Internet)
    • CS(CSNET)
    • CH(chaos)
    • HS(hesiod)
  • TYPE

类型 描述 功能
A IP 地址记录 IPv4地址
AAAA IPv6 IP 地址记录 IPv6 地址
CNAME 规范名称记录 一个主机名字的别名:域名系统将会继续尝试查找新的名字。
MX 电邮交互记录 引导域名到该域名的邮件传输代理(MTA, Message Transfer Agents)列表。
NS 名称服务器记录 委托 DNS 域(DNS zone)使用已提供的权威域名服务器。
PTR 指针记录 引导至一个规范名称(Canonical Name)。与 CNAME 记录不同,DNS“不会”进行进程,只会传回名称。最常用来运行反向 DNS 查找,其他用途包括引作DNS-SD。
SOA 权威记录的起始 指定有关DNS区域的权威性信息,包含主要名称服务器、域名管理员的电邮地址、域名的流水式编号、和几个有关刷新区域的定时器。

bind9

安装bind9

1
yum install -y bind

配置named.conf

1
2
3
4
5
6
7
8
# /var/named/chroot/etc/named.conf

listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
allow-query { any; };
forwarders { 192.168.0.1; };
dnssec-enable no;
dnssec-validation no;

配置named.rfc1912.zones

1
2
3
4
5
6
7
# /var/named/chroot/etc/named.rfc1912.zones

zone "bookrain.com" IN {
type master;
file "bookrain.com.zone";
allow-update { 192.168.0.102; };
};

新增bookrain.com.zone域文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# /var/named/bookrain.com.zone

$TTL 1D
@ IN SOA dns.bookrain.com. dnsadmin.bookrain.com. (
2020033101 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ NS dns
dns A 192.168.0.102
k8s1 A 192.168.0.102
k8s2 A 192.168.0.103
k8s3 A 192.168.0.104

启动

1
2
3
4
# 启动,开机启动
systemctl start named
systemctl status named
systemctl enable named

测试

1
2
3
# 检查
yum install bind-utils
dig -t A k8s2.bookrain.com @192.168.0.102 +short

bind chroot

安装

1
yum install -y bind-chroot

拷贝bind配置文件

1
2
3
# mv 也可以
cp -a named.iscdlv.key named.root.key named.conf named.rfc1912.zones /var/named/chroot/etc/
cp -a dynamic named.empty named.loopback data named.ca named.localhost slaves /var/named/chroot/var/named

启动

1
2
3
4
5
6
7
8
9
/usr/libexec/setup-named-chroot.sh /var/named/chroot on

systemctl stop named

systemctl disable named

systemctl start named-chroot

systemctl enable named-chroot

主从

主dns

1
2
3
4
5
6
7
8
# /var/named/chroot/etc/named.rfc1912.zones

zone "bookrain.com" IN {
type master;
file "bookrain.com.zone";
allow-update { 192.168.0.102; };
allow-transfer { 192.168.0.0/24; };
};

从dns

1
2
3
4
5
6
7
8
# /var/named/chroot/etc/named.rfc1912.zones

zone "bookrain.com" IN {
type slave;
file "slaves/bookrain.com.zone";
masterfile-format text;
masters { 192.168.0.102; };
};

主从密钥认证

时间同步
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# install 
yum -y install ntp

# /etc/ntp.conf
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
server ntp3.aliyun.com iburst
server ntp4.aliyun.com iburst
server ntp5.aliyun.com iburst
server ntp6.aliyun.com iburst
server ntp7.aliyun.com iburst

systemctl start ntpd
systemctl enable ntpd

ntpq -p
ntpstat
主dns密钥生成
1
dnssec-keygen -a hmac-md5 -b 128 -n HOST dnskey
主dns密钥配置
1
2
3
4
5
6
7
8
9
10
# /var/named/chroot/etc/named.conf

dnssec-enable yes;
dnssec-validation yes;

# 新增配置
key dnskey {
algorithm hmac-md5;
secret "lRneBMOz5AfPRNXBRehB5A==";
};
主dns域密钥配置
1
2
3
4
5
6
7
8
# /var/named/chroot/etc/named.rfc1912.zones

zone "bookrain.com" IN {
type master;
file "bookrain.com.zone";
allow-update { 192.168.0.102; };
allow-transfer { key dnskey; };
};
从dns密钥配置
1
2
3
4
5
6
7
8
9
10
# /var/named/chroot/etc/named.conf

dnssec-enable yes;
dnssec-validation yes;

# add
key dnskey {
algorithm hmac-md5;
secret "lRneBMOz5AfPRNXBRehB5A==";
};
从dns域密钥配置
1
2
3
4
5
6
7
8
# /var/named/chroot/etc/named.rfc1912.zones

zone "bookrain.com" IN {
type slave;
file "slaves/bookrain.com.zone";
masterfile-format text;
masters { 192.168.0.102 key dnskey; };
};
-------------本文结束感谢您的阅读-------------