约定:本实验中使用过的机器为centos8.0_x86_64系统,IP地址192.168.11.16/24.请关闭防火墙和SELINUX,下面我们就来聊聊关于如何搭建一个自己的dns?接下来我们就一起去了解一下吧!

如何搭建一个自己的dns(DNS-2-部署与配置)

如何搭建一个自己的dns

四、DNS服务器部署

约定:本实验中使用过的机器为centos8.0_x86_64系统,IP地址192.168.11.16/24.请关闭防火墙和SELINUX。

4.1)DNS安装

DNS服务是由bind程序提供的,所以要实现DNS服务就需要安装bind程序包。

[root@localhost ~]# dnf -y install bind bind-chroot bind DNS主程序包 bind-chroot DNS安全包,改变默认DNS根目录,将DNS运行在监牢模式 说明:chroot监牢模式 监牢是一个软件机制,其功能是使得某个程序无法访问规定区域之外的资源,同样也为了增强安全性(LCTT 译注:chroot “监牢”,所谓“监牢”就是指通过chroot机制来更改某个进程所能看到的根目录,即将某进程限制在指定目录中,保证该进程只能对该目录及其子目录的文件进行操作,从而保证整个服务器的安全)。Bind Chroot DNS 服务器的默认“监牢”为 /var/named/chroot。

4.2)DNS启动

DNS的守护进程叫做named,DNS是以named用户身份来运行,named用户在安装包的时候会在系统中自动创建。

CentOS8下安装了bind-chroot之后,若要使用named-chroot.service,则需要关闭named.service。两者只能运行一个 方法一: 不使用chroot模式启动DNS 开启开机启动 [root@localhost ~]# systemctl enable named Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service. 启动DNS服务 [root@localhost ~]# systemctl start named 验证启动 [root@localhost ~]# lsof -i :53 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME dnsmasq 1520 nobody 5u IPv4 27001 0t0 UDP bogon:domain dnsmasq 1520 nobody 6u IPv4 27002 0t0 TCP bogon:domain (LISTEN) named 2553 named 21u IPv4 38662 0t0 TCP localhost:domain (LISTEN) named 2553 named 22u IPv6 38664 0t0 TCP localhost:domain (LISTEN) named 2553 named 512u IPv4 38660 0t0 UDP localhost:domain named 2553 named 513u IPv4 38660 0t0 UDP localhost:domain named 2553 named 514u IPv4 38660 0t0 UDP localhost:domain named 2553 named 515u IPv4 38660 0t0 UDP localhost:domain named 2553 named 516u IPv6 38663 0t0 UDP localhost:domain named 2553 named 517u IPv6 38663 0t0 UDP localhost:domain named 2553 named 518u IPv6 38663 0t0 UDP localhost:domain named 2553 named 519u IPv6 38663 0t0 UDP localhost:domain 方法二: 使用chroot模式DNS 将对应的文件移动到chroot根目录 主配文件 [root@localhost ~]# cp /etc/named.conf /var/named/chroot/etc/ [root@localhost ~]# chgrp named /var/named/chroot/etc/named.conf [root@localhost ~]# named-checkconf /var/named/chroot/etc/named.conf 区域数据库文件 [root@localhost named]# cd /var/named/ [root@localhost named]# cp -r data /var/named/chroot/var/named/ [root@localhost named]# cp -r dynamic /var/named/chroot/var/named/ [root@localhost named]# cp named.* /var/named/chroot/var/named/ [root@localhost named]# cd /var/named/chroot/var/named/ [root@localhost named]# chown -R named.named * 启动DNS服务 开机启动 [root@localhost ~]# systemctl enable named-chroot.service Created symlink from /etc/systemd/system/multi-user.target.wants/named-chroot.service to /usr/lib/systemd/system/named-chroot.service. 启动服务 [root@localhost ~]# mv /etc/named.conf /root/ [root@localhost ~]# systemctl start named-chroot 验证启动 [root@localhost ~]# lsof -i :53 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME dnsmasq 1525 nobody 5u IPv4 27359 0t0 UDP bogon:domain named 2877 named 21u IPv4 44717 0t0 TCP localhost:domain (LISTEN) named 2877 named 22u IPv4 44719 0t0 TCP bogon:domain (LISTEN) named 2877 named 23u IPv4 44721 0t0 TCP bogon:domain (LISTEN) named 2877 named 512u IPv4 44715 0t0 UDP localhost:domain named 2877 named 513u IPv4 44715 0t0 UDP localhost:domain named 2877 named 514u IPv4 44715 0t0 UDP localhost:domain named 2877 named 515u IPv4 44715 0t0 UDP localhost:domain named 2877 named 516u IPv4 44718 0t0 UDP bogon:domain named 2877 named 517u IPv4 44718 0t0 UDP bogon:domain named 2877 named 518u IPv4 44718 0t0 UDP bogon:domain named 2877 named 519u IPv4 44718 0t0 UDP bogon:domain named 2877 named 520u IPv4 44720 0t0 UDP bogon:domain named 2877 named 521u IPv4 44720 0t0 UDP bogon:domain named 2877 named 522u IPv4 44720 0t0 UDP bogon:domain named 2877 named 523u IPv4 44720 0t0 UDP bogon:domain

4.3)DNS配置文件

默认情况下,如果不安装bind-chroot这个包,配置文件的路径如下:

配置文件:/etc/named.conf

区域数据库文件:/var/named/

由于我们安装了bind-chroot这个用于改变默认DNS配置文件的路径的包,所以相对应的配置文件的路径也发生了变化。

变化如下:

配置文件:/var/named/chroot/etc/named.conf

区域数据库文件:/var/named/chroot/var/named/

a、主配文件详解

// // 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. // options { #IPv4监听端口为53,只允许本机连接 listen-on port 53 { 127.0.0.1; }; #IPv6监听端口为53,只允许本机连接 listen-on-v6 port 53 { ::1; }; #定义工作目录 directory "/var/named"; #CACHE文件路径,指定服务器在收到rndc dump命令时,转储数据到文件的路径。默认cache_dump.db dump-file "data/cache_dump.db"; #静态文件路径,指定服务器在收到rndc stats命令时,追加统计数据的文件路径。默认named.stats statistics-file "data/named_stats.txt"; #内存静态文件路径,服务器在退出时,将内存统计写到文件的路径。默认named.mem_stats memstatistics-file "data/named_mem_stats.txt"; #在收到rndc secroots指令后,服务器转储安全根的目的文件的路径名。默认named.secroots secroots-file "data/named.secroots"; # 指定服务器在通过rndc recursing命令指定转储当前递归请求到的文件路径。默认named.recursing recursing-file "data/named.recursing"; #指定允许哪些主机可以进行普通的DNS查询,可以是关键字:any/localhost/none,也可以是IPV4,IPV6地址 allow-query { localhost; }; #指定允许哪些主机可以对缓存的访问 allow-query-cache { localhost; }; /* - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion. 假如你建立的是一个权威DNS你不需要开启递归 - If you are building a RECURSIVE (caching) DNS server, you need to enable recursion. 假如你建立的是一个递归DNS,你需要开启递归服务 - 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 如果你的递归DNS是具有公网IP,你必须要设置访问控制来限制对合法用户的查询. cause your server to become part of large scale DNS amplification 否则你的DNS会被大规模的攻击 attacks. Implementing BCP38 within your network would greatly 在您的网络中实现BCP38将非常重要减少此类攻击面 reduce such attack surface */ #开启递归 recursion yes; #开启DNSSEC在权威或者递归服务器之间信任服务 dnssec-enable yes; #开启DNSSEC验证在递归服务器 dnssec-validation yes; #指定目录,其中保存着跟踪被管理DNSSEC密钥文件。默认为工作目录。 managed-keys-directory "/var/named/dynamic"; #PID文件路径 pid-file "/run/named/named.pid"; #session-keyfile文件路径 session-keyfile "/run/named/session.key"; }; logging { #开启DNS日志记录 channel default_debug { file "data/named.run"; severity dynamic; }; }; #定义一个根域 zone "." IN { #域类型为hint,还有master slave forward等类型 type hint; #区域数据库文件路径 file "/var/named/named.ca"; }; }; #包含两个子配置文件 include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";

b、区域数据库文件详解

正向解析 [root@localhost ~]# cat /var/named/named.localhost ;缓存时间 $TTL 1D ;@表示相应的域名 @ IN SOA @ rname.invalid. ( ;解析的域名 类型 授权域 授权域名服务器 管理员邮箱 0 ; serial 序列号,每次更新该文件系列号都应该变大 1D ; refresh 刷新时间,即规定从域名服务器多长时间查询一个主服务器,以保证从服务器的数据是最新的 1H ; retry 重试时间,即当从服务试图在主服务器上查询更时,而连接失败了,则这个值规定了从服务多长时间后再试 1W ; expire 过期时间,从服务器在向主服务更新失败后多长时间后清除对应的记录 3H ) ; minimum 这个数据用来规定缓存服务器不能与主服务联系上后多长时间清除相应的记录 NS @ ;NS 名称服务器,表示这个主机为域名服务器 A 127.0.0.1 ;主机头 A记录 IP AAAA ::1 ; AAAA 解析为IPV6地址 #反向解析 [root@localhost ~]# cat named.loopback $TTL 1D @ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ PTR localhost ;IP 反向指针 主机名 ;PTR 反向指针 反解

总结

DNS的安装

DNS的两种启动方式

DNS的配置文件

重点:DNS的安装及两种启动方式,DNS默认配置文件中的相关字段说明

难点:配置文件中的字段含义及书写格式

,