centos7最小化部署DNS服务(主节点)

文章目录

  • 前言
  • 一、最小化安装系统(略过)
  • 二、安装DNS服务
    • 1.配置网卡
    • 3.正式安装
      • 1、全局配置文件
      • 2、修改主配置文件
      • 3、修改区域配置文件
  • 三、验证:
  • 参考


前言

1.DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)
2.需要注意,正常情况下,一个办公系统通常只搭建一套DNS服务系统,是采用windows server还是linux,取决于个人喜好(windows有图形化界面,配置更方便,与AD深度集成管理更方便。linux搭建的性能高,但是配置较繁琐)
3.如果使用的人员较少,建议使用/etc/hosts文件做静态解析即可,它不能自动注册,需要手动修改。
4.系统采用最小化安装
5.DNS的搭建要想顺利,它的工作原理和流程要搞清楚,不然搭建的时候有些配置文件你不知道它为何要这样配置,搭建会遇到阻碍
6.初学搭建,可以搭建一个最简单的,以服务能能启动为准,正常情况下只要你动了配置文件,配置不正确named服务是起不来的
7.使用named-checkconf /etc/named.conf检查配置文件是否有误(没有错误什么都不输出),这里需要注意,正向解析和反向解析要成对配置,如果只配置正向解析,named服务无法启动(我遇到的是这样的)


一、最小化安装系统(略过)

需要注意以下几点:
1、配置时先关闭防火墙,如果你的生产环境要求必须打开防火墙,配置结束之后再放通相关端口(此文章不涉及)
2、关闭selinux
3、修改hostname

二、安装DNS服务

首先修改网卡,将dns1修改为自己的ip,因为解析域名时,默认先从本地服务器查询DNS。

1.配置网卡

代码如下(示例):注意网卡名、IP和UUID替换自己的

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="4ca507fd-c4d4-4794-bc50-5cf734ea4c9b"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=172.0.0.96
GATEWAY=172.0.0.2
NETMASK=255.255.255.0
DNS1=172.0.0.96
DNS2=114.114.114.114
IPV6_PRIVACY="no"
[root@freeipa1 named]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 172.0.0.96

重启网卡:systemctl restart network

3.正式安装

yum -y install bind                    //安装DNS 服务
yum -y install bind-utils              //安装DNS 检测工具,比如nslookup、host等
yum -y install bind-chroot	        // dns服务的安全保护软件
yum -y install bind-libs  	        // dns类库文件,默认安装

或者
yum install bind bind-chroot bind-utils -y	// 一次性安装完

DNS服务配置文件

/etc/named.conf #设置dns全局变量、端口和区域文件
/etc/named.rfc1912.zones#文件模板,指定正反解析的文件
/var/named/named.localhost#IP正向解析文件:主机名>IP
/var/named/named.loopback#IP反向解析文件:IP>主机名

1、全局配置文件

options {
//        listen-on port 53 { localhost; }; # 修改点:代表当前这台机器所有ip,或者注释改行,经过反复测试,127.0.0.1:any和localhost:any都不可用,不会报错,dns服务无法使用,debug很难找
        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; }; # 修改点:允许的ip,这里所有ip都能访问,或者注释改行
        allow-update    { any; };  #手动添加行, 允许动态更新  或localhost允许本机更新          

        /*
         - 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;

        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";
        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";

检查配置是否有误:

使用named-checkconf /etc/named.conf检查配置文件是否有误

2、修改主配置文件

路径:/etc/named.rfc1912.zones,这个根据实际情况,看你全局配置文件里设置的路径
在文件末尾追加内容

// 正向解析
zone "test.com" IN {
	type master;          //类型:主服务器
	file "test.com.zone";  //这个是在/var/named下对应的配置文件
	allow-update { none; };    //# 允许更新区域信息的主机地址(无备用可默认不配置)建议注销,或改成any,以允许更新
};
// 反向解析,倒置网络号加固定后缀
zone "0.0.172.in-addr.arpa" IN {
	type master;
	file "0.0.172.zone";  //同上
	allow-update { none; };    //# 允许更新区域信息的主机地址(无备用可默认不配置)建议注销,或改成any,以允许更新
};

3、修改区域配置文件

  • 在/var/named目录下复制模板文件
# 拷贝一个配置文件,拷贝权限,注意名称最好对应,否则很难区分
cp -p named.localhost test.com.zone    //该文件为正向模板文件  ,-p保留文件的权限、时间戳等属性.有的加-a参数,-a包含-p
cp -p named.loopback 0.0.172.zone    //该文件为反向模板文件
chmod 777 test.com.zone  //有的说需要修改所属的用户组为named,我认为named就可以或644
chmod 777 0.0.172.zone 
ll *.zone
-rwxrwxrwx. 1 root named 168 825 2021 0.0.172.zone    //要保证配置文件的所有者为root,所属组为named,权限改成777最方便
-rwxrwxrwx. 1 root named 152 825 2021 test.com.zone
  • 编辑正向解析
$TTL 1D
@       IN SOA   test.com. admin.test.com. (          //test.com. 为域名,admin.test.com为用户邮箱,发生错误会发邮件。“.”表示结束
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      test.com.          // 区域中DNS服务器的主机名,注意域名末尾有个点,表示结束
@       A       172.0.0.96
master  A       172.0.0.96
ipa     A       172.0.0.99

# server1 - server100  解析的地址为1.2.3.1 - 1.2.3.100
$GENERATE 1-254 server$ A 1.2.3.$


# 解释
$TTL 1D 为统一设置TTL为1天     //缓存时间
开头必须是SOA记录,配置master主机、admin邮箱,以及括号里主从同步的信息
NS就是指定DNS服务器,对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录
下面就是配置A、CNAME解析记录

# 不输入前缀也可以访问,或者用@表示本域
  • 编辑反向解析,尽量与正向解析对应

$TTL 1D
@       IN SOA  test.com. admin.test.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      test.com.
        A        127.0.0.1     //@    A    172.0.0.96        NS下面必须指定一个A记录                 
96     PTR       test.com.                    //NS 后面带.,下面的可以不带.,直接写成test.com
99      PTR     ipa.test.com.

解释:
96和99是简写,你也可以写成全IP
  • 刷新配置文件
# 配置文件语法检查
named-checkconf
# 检查配置
named-checkzone test.com /var/named/test.com.zone
# 刷新配置
rndc reload
# 清除dns服务器缓存
rndc flush

附:rndc命令
rndc:
rndc --> rndc (953/tcp)
rndc COMMAND

COMMAND:
status:查询状态
reload: 重载主配置文件和区域解析库文件
reload zonename: 重载区域解析库文件
retransfer zonename: 手动启动区域传送,而不管序列号是否增加
notify zonename: 重新对区域传送发通知
reconfig: 重载主配置文件
querylog: 开启或关闭查询日志文件/var/log/message
trace: 递增debug一个级别
trace LEVEL: 指定使用的级别
notrace:将调试级别设置为 0
flush:清空DNS服务器的所有缓存记录

三、验证:

#nslookup test.com
Server:         172.0.0.96
Address:        172.0.0.96#53

Name:   test.com
Address: 172.0.0.96

#ping master.test.com
#ping ftp.test.com

 [root@freeipa1 named]# nslookup 172.0.0.96
96.0.0.172.in-addr.arpa name = test.com.
[root@freeipa1 named]# nslookup 172.0.0.99
99.0.0.172.in-addr.arpa name = ipa.test.com.


如有错误、欢迎指正,感谢赐教。


参考

两位博主写的相当详细了,但是我按照执行竟然没有过,频繁报错。
https://blog.youkuaiyun.com/A_art_xiang/article/details/142789658
https://blog.youkuaiyun.com/m0_56966142/article/details/116070616

### 部署和配置 CentOS 7.9DNS 服务器 #### 安装 BIND 软件包 为了在 CentOS 7.9部署 DNS 服务器,首先需要安装 BIND 软件包。可以通过以下命令来完成此操作: ```bash yum -y install bind* ``` 这一步会安装必要的软件组件以支持 DNS 功能[^1]。 #### 编辑 DNS 配置文件 DNS 主配置文件位于 `/etc/named.conf` 中。打开并编辑该文件以定义区域(zone)。例如,创建一个新的正向解析区 `dctant.com`: ```bash vi /etc/named.conf ``` 在文件中添加以下内容作为新区域的声明部分: ```text zone "dctant.com" IN { type master; file "/var/named/dctant.com.zone"; allow-update { none; }; }; ``` 接着,在指定路径下创建对应的 zone 文件 `/var/named/dctant.com.zone` 并填写记录条目。例如,将 IP 地址 `192.168.0.211` 映射到域名 `abc.dctant.com`,可以在 zone 文件中加入如下行: ```text $TTL 86400 @ IN SOA ns1.dctant.com. admin.dctant.com. ( 2023101001 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400 ) ; Minimum TTL NS ns1.dctant.com. ns1 A 192.168.0.211 abc A 192.168.0.211 ``` 上述配置完成后记得保存退出[^2]。 #### 测试与验证 DNS 设置 完成以上步骤之后,重启 named 服务使更改生效,并通过客户端测试其连通性和正确性。 ```bash systemctl restart named.service ``` 确保 DNS 服务能够正常运行以及响应查询请求。可以尝试 ping 或者 dig 命令访问已设定好的主机名如 `abc.dctant.com` 来确认是否成功指向至预期地址 `192.168.0.211`。 #### 开机自启设置 为了让系统每次启动都能加载 DNS 服务,执行下面这条指令启用开机自动启动功能: ```bash systemctl enable named.service ``` 这样即使经历断电等情况也不会影响后续使用体验。 #### 修改本地 resolver 配置 (可选) 如果希望本机或其他内部网络中的设备优先利用刚建立起来的新 DNS,则需调整它们各自的 resolv.conf 文件指向前述提到过的私有网段内的 DNS Server 地址。比如对于一台处于相同子网环境下的客户机器而言,只需简单地更新它的 `/etc/resolv.conf` 如下所示即可实现这一目标: ```bash nameserver 192.168.0.211 ``` 当然实际应用过程中可能还需要考虑更多细节方面的问题,像安全防护措施等等[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北国大人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值