参考
https://blog.csdn.net/esonbest1234/article/details/50729532 核心参考
https://blog.csdn.net/charleslei/article/details/41154139 DNS扫盲
https://www.cnblogs.com/winstom/p/11806962.html 配置文件参考
https://blog.csdn.net/bbwangj/article/details/82079405
https://linux.cn/article-4735-1.html
这几个问题是上面一篇文章问的,所以我学习了一下dns的部分概念,在上一篇博客中均有答案。
什么是 DNS 的授权模式 是怎样进行的
请解释 zone 和 domain 的差别。
什么是 DNS 正解和反解
正向解析:从域名解析到IP
反向解析:从IP解析到域名
什么是 DNS 的查询模式﹖查询过程是怎样进行的﹖
迭代、递归
使用BIND提供自定义内网域名服务
BIND简介
现在使用最为广泛的DNS服务器软件是BIND(Berkeley Internet Name Domain),最早有伯克利大学的一名学生编写,现在最新的版本是9,有ISC(Internet Systems Consortium)编写和维护。
BIND支持先今绝大多数的操作系统(Linux,UNIX,Mac,Windows)
BIND服务的名称称之为named
DNS默认使用UDP、TCP协议,使用端口为53(domain),953(mdc,远程控制使用)
BIND安装
使用系统:centos 7
这里可以还源,如果有代理可以不换,上代理一把梭
命令一把梭 :yum install -y bind bind-chroot bind-utils
其中bind-chroot和bind-utils是bind的相关包。
bind-chroot 是通过相关文件封装在一个伪根目录内,已达到安全防护的目的,一旦程序被攻破,将只能访问伪根目录内的内容,而不是真实的根目录。
chroot相关介绍:https://blog.csdn.net/guodongsoft/article/details/52549573
BIND的配置
1、BIND配置文件保存在两个位置:/etc/named.conf - BIND服务主配置文件
/var/named/ - zone文件(域的dns信息)
如果安装了bind-chroot(其中chroot是 change root 的缩写),BIND会被封装到一个伪根目录内,配置文件的位置变为:/var/named/chroot/etc/named.conf - BIND服务主配置文件
/var/named/chroot/var/named/ - zone文件
2、BIND安装好之后不会有预制的配置文件,但是在BIND的文档文件夹内(/usr/share/doc/bind-9.11.4),BIND为我们提供了配置文件模板,我们可以直接拷贝过来:cp -R /usr/share/doc/bind-*/sample/var/named/* /var/named/chroot/var/named/
同时将named.conf 拷贝到这个目录下cp -p /etc/named.conf /var/named/chroot/etc/named.conf
还需要在 bind chroot 目录中创建 bind 的相关文件,并对锁定文件设置为可写
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
chmod -R 777 /var/named/chroot/var/named/data
chmod -R 777 /var/named/chroot/var/named/dynamic
3、配置BIND服务的主配置文件(/var/named/chroot/etc/named.conf),命令:vim /var/named/chroot/etc/named.conf
因为我们需要配置成为内网DNS,所有需要编辑两处
在 IPV4监听处,配置为本机IP。
另外允许查询的机器需要修改为 any;这里同样可以指定网段,如172.16.1.1/16。
4、 在配置文件最下方加上自己想要部署的区域
5、随后在 /var/named/chroot/var/named
路径下新建 venustest.com.zone 文件,复制一份named.localhost
6、修改venustest.com.zone 配置文件 加入自己想加入的A记录(解析记录)
7、将named 服务 以 bind-chroot 启动
/usr/libexec/setup-named-chroot.sh /var/named/chroot on
systemctl stop named
systemctl disable named
systemctl start named-chroot
systemctl enable named-chroot
ps -ef |grep named
8、一切就绪之后设置为本地dns服务器。访问域名 或者 dig、nslookup 都能验证
配置从服务器
在新的服务器上,同样的流程安装到第三步。
4、 在从服务 named.conf 上配置从服务器的信息
zone "venustest.com" IN {
type slave; //当前服务器类型为 slave
masters { 172.16.50.215; }; // 当前区域内 master (primary) 服务器是谁
file "slaves/venustest.com.zone"; // 通过区域传送下载的文件存放在哪个路径
};
随后需要修改一下 primary 服务器的 named.conf
在options 的文件中加上 allow-transfer {172.16.50.216; };
这里 216 是从服务器的IP地址。
options {
listen-on port 53 { 172.16.50.215; };
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; };
allow-transfer {172.16.50.216; };
因为bind是用named 用户组内 用户启动的。
所以我们需要将 /var/named/chroot/var/named
配置属于 named 用户组,配置之前他属于 rootchown named /var/named/chroot/var/named/slaves
/usr/libexec/setup-named-chroot.sh /var/named/chroot on
systemctl stop named
systemctl disable named
systemctl start named-chroot
systemctl enable named-chroot
ps -ef |grep named
启动之后 区域数据文件 就通过 域传送 传送过来了
[root@localhost slaves]# pwd
/var/named/chroot/var/named/slaves
[root@localhost slaves]# ll
总用量 12
-rw-r--r--. 1 root root 56 9月 26 10:45 my.ddns.internal.zone.db
-rw-r--r--. 1 root root 56 9月 26 10:45 my.slave.internal.zone.db
-rw-r--r--. 1 named named 346 9月 26 10:59 venustest.com.zone
[root@localhost slaves]#
本地我们再测试一下
[root@localhost slaves]# dig oa.venustest.com
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.7 <<>> oa.venustest.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23241
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;oa.venustest.com. IN A
;; ANSWER SECTION:
oa.venustest.com. 86400 IN A 172.16.50.134
;; AUTHORITY SECTION:
venustest.com. 86400 IN NS venustest.com.
;; ADDITIONAL SECTION:
venustest.com. 86400 IN AAAA ::1
venustest.com. 86400 IN A 127.0.0.1
;; Query time: 0 msec
;; SERVER: ::1#53(::1)
;; WHEN: 日 9月 26 11:15:32 CST 2021
;; MSG SIZE rcvd: 119
[root@localhost slaves]#
到这儿就OK啦。