bind-chroot介绍

DNS是一种将域名解析为IP地址的服务.

BIND是linux的DNS服务器程序.

bind-chroot是bind的一个功能,使bind可以在一个chroot的模式下运行.也就是说,bind运行时的/(根)目录,并不是系统真正的/(根)目录,只是系统中的一个子目录而已.这样做的目的是为了提高安全性.因为在chroot的模式下,bind可以访问的范围仅限于这个子目录的范围里,无法进一步提升,进入到系统的其他目录中.

准备工作

环境centos7

安装bind-chroot

yum install bind-chroot bind -y

修改主机名

centos7 可以直接设置静态主机名,不需要重启 hostnamectl --static set-hostname WH-DNS-00.JP

关闭防火墙

最简单的方法就是关闭,也可以放行指定端口

systemctl stop firewalld                    #关闭防火墙
systemctl disable firewalld.service         #禁止firewall开机启动

配置named

拷贝bind相关文件,准备bind chroot 环境 cp -R /usr/share/doc/bind-9.9.4/sample/var/named/* /var/named/chroot/var/named/

在bind chroot 的目录中创建相关文件

touch /var/named/chroot/var/named/data/cache_dump.db
touch /var/named/chroot/var/named/data/named_stats.txt
touch /var/named/chroot/var/named/data/named_mem_stats.txt
touch /var/named/chroot/var/named/data/named.run
mkdir /var/named/chroot/var/named/dynamic
touch /var/named/chroot/var/named/dynamic/managed-keys.bind

将 Bind 锁定文件设置为可写

chmod -R 777 /var/named/chroot/var/named/data
chmod -R 777 /var/named/chroot/var/named/dynamic

将 /etc/named.conf 拷贝到 bind chroot目录

cp -p /etc/named.conf /var/named/chroot/etc/named.conf

在/etc/named.conf中对 bind 进行配置

vim /var/named/chroot/etc/named.conf

参考配置如下

没有ipv6就禁用listen-on-v6 port 53 { ::1; },不然会影响查询时间

主DNS

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";
	allow-query     { any; };
	allow-query-cache	{ any; };
	notify yes;
	also-notify	{ 192.168.16.144; };
	forwarders	{
		202.103.24.68;
		114.114.114.114;
};
	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";
	pid-file "/run/named/named.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";
#xxxxx.org
zone "xxxxx.org" IN {
	type master;
	file "named.xxxxx.org";
	allow-transfer { 192.168.16.144; };
	allow-query { any; };
};

#定义反向解析的
zone "0.0.127.in-addr.arpa" IN {
        type master;            #类型属于master、属于自己的
        file "named.loopback";    #指定的文件
        allow-transfer { none; };#不允许任何人传送的
};
zone "168.192.in-addr.arpa" IN {
        type master;            #类型属于master、属于自己的
        file "named.arpa";    #指定的文件
        allow-update { none; };
        allow-transfer { 192.168.16.144; };
};

备DNS

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";
	allow-query     { any; };
	allow-query-cache	{ any; };
	forwarders	{
		202.103.24.68;
		114.114.114.114;
};
	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";
	pid-file "/run/named/named.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";
#xxxxx.org
zone "xxxxx.org" IN {
	type slave;
	masters { 192.168.16.68; };
	file "slaves/named.xxxxx.org";
	allow-transfer { none; };
};

#定义反向解析的
zone "0.0.127.in-addr.arpa" IN {
        type master;            #类型属于master、属于自己的
        file "named.loopback";    #指定的文件
        allow-transfer { none; };#不允许任何人传送的
};
zone "168.192.in-addr.arpa" IN {
        type slave;            #类型属于slave、属于自己的
        file "named.arpa";    #指定的文件
        masters { 192.168.16.68; };
	allow-transfer { none; };
};

创建ZONE文件

ZONE文件是DNS上保存域名配置的文件,对BIND来说 一个域名对应一个ZONE文件,vim /var/named/chroot/var/named/vim named.xxxxx.org

$TTL 86400	; 1 day
xxxxx.com		IN SOA	WH-DNS-01.JP. lanpang.xxxxx.com. (
				124        ; serial
				86400      ; refresh (1 day)
				3600       ; retry (1 hour)
				604800     ; expire (1 week)
				10800      ; minimum (3 hours)
				)
			NS	WH-DNS-01.JP.
			NS	WH-DNS-02.JP.
WH-DNS-01.JP.		A	192.168.16.68
WH-DNS-02.JP.		A	192.168.16.144
$ORIGIN xxxxx.com.
*			A	192.168.16.37
upload			A	106.75.131.201
名词解释:
SOA记录:权威记录从这里开始,它定义了3-8行这些重要的参数。
A记录:记录域名到IP之间的关联。
CAME记录:让张三住到李四家里,这时张三李四是同一个地址。
MX记录:定义了发往XXX@ABC.COM邮箱的邮件服务器地址。
TXT记录:这个记录的内容是文本格式如126.COM的TXT为"v=spf1 include:spf.163.com -all",TXT通常用于邮件服务器来标识自己的身份避免被认
为是垃圾邮件服务器。

最后

  • 权限问题

    如果全部配置完成,发现各种起不来,或者无法解析,请检查权限。最简单的方法:chown -R named:named /var/named/

  • 启动命令

    systemctl enable named-chroot
    systemctl start named-chroot