在centos8(虚拟机)上搭建dns服务器

1,751 阅读4分钟

参考文章:

前置知识

centos8是linux系统,所以想要使用需要对linux基本命令有所了解。 本例子中要求使用者掌握 文本的编辑和保存操作

  • 进入文件:vim 文件路径
  • 编辑文件:进入文件后按i进入编辑模式。然后可以对文件进行修改。
  • 保存文件:如果在其他模式下(如编辑模式等),需要先按esc回到初始状态,然后按下:键进入命令模式,然后输入wq即可保存退出。w为保存,q为退出。

设置本机ip

  1. 输入命令cd /etc/sysconfig/network-scripts/回车,进入网络配置目录里面
  2. 输入ls列出本目录下的文件
  3. 编辑对应的网卡文件vim ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.75.2
NETMASK=255.255.255.0
NETWORK=192.168.75.0
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=add141ba-3850-4197-9c10-e6d356b3ff68
DEVICE=ens33
ONBOOT=yes
  1. 保存退出:wq,重启网络服务,centos8下为nmcli c reload
  2. 可以使用ifconfig查看网络信息。

搭建DNS

1. 安装 BIND 服务器软件并启动

yum -y install bind bind-utils
systemctl start named.service  // 启动服务
systemctl enable named  // 设为开机启动

查看named进程是否正常启动

ps -eaf|grep named // 检查进程
ss -nult|grep :53 // 检查监听端口

yum安装失败?

很有可能是虚拟机没有连上网络,我们打开虚拟机配置,将网卡设置为NAT模式,然后在主机中打开服务,将VMWARE NAT Service和VMWARE DHCP Service服务打开。

2.修改/etc/named.conf配置文件

vi /etc/named.conf

//
// 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 {
        listen-on port 53 { any; };     //开启监听端口53,接受任意IP连接
        listen-on-v6 port 53 { ::1; };  //支持IP V6
        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     { 0.0.0.0/0; }; //允许任意IP查询
        recursion yes;

        dnssec-enable yes;
        dnssec-validation yes;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
};

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

保存文件:wq

3. 修改/etc/named.rfc1912.zones文件,添加study.com的正向和反向区域

注意,此文件中可以配置一级域名,并为其规定正向和反向解析域所对应的文件 vi /etc/named.rfc1912.zones

// named.rfc1912.zones:
//
// Provided by Red Hat caching-nameserver package 
//
// ISC BIND named zone configuration for zones recommended by
// RFC 1912 section 4.1 : localhost TLDs and address zones
// and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt
// (c)2007 R W Franks
// 
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
 
zone "localhost.localdomain" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};
 
zone "localhost" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};
 
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};
 
zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};
 
zone "0.in-addr.arpa" IN {
        type master;
        file "named.empty";
        allow-update { none; };
};
zone "study.com" IN {
        type master;
        file "study.com.zone";//正向解析域所对应的文件
        allow-update { none; };
};

zone "75.168.192.in-addr.arpa" IN {
        type master;
        file "study.com.local";//反向解析域所对应的文件
        allow-update { none; };
};

这里需要注意的是,添加反向区域时,网络号要反过来写(网络号是IP地址与子网掩码进行与操作后的结果)。例如,我现在配置的网络号192.168.75这个网段,那么它的反向区域是75.168.192.in-addr.arpa。 区域里面的file字段表明解析时的数据来源文件,接下来我们去创建study.com.zone和study.com.local文件。

4. 添加正向解析域

基于 name.localhost 模板,创建配置文件:cp -p /var/named/named.localhost /var/named/study.com.zone 配置正向域名解析文件 study.com.zone : vi /var/named/study.com.zone ,配置内容如下:

$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
        AAAA    ::1
www     IN A    192.168.75.10
mail    IN A    192.168.75.11
ftp     IN A    192.168.75.12
library IN A    192.168.75.13

5. 添加反向解析域

基于 name.localhost 模板,创建配置文件: cp -p /var/named/named.localhost /var/named/study.com.local 配置反向域名解析文件 study.com.local : vi /var/named/study.com.local

$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
        AAAA    ::1
10     IN PTR  www.hello.com.
11     IN PTR  mail.hello.com.
12     IN PTR  ftp.hello.com.
13     IN PTR  library.hello.com.
~                                     

保存退出

检查配置

检查主配置文件语法;在linux中输入named-checkconf,若无报错即为配置正确。

重启 named 服务,让配置生效

重启 named 服务,让配置生效 systemctl restart named

注册域名解析服务器到linux

首先,输入ifconfig(和windows下不同),查看网络状态。 其中 ens33即为网卡名。
配置 ifcfg-xxxx vi /etc/sysconfig/network-scripts/ifcfg-ens33
如果正确找到了网卡配置文件的话不会是空文件
在文件末尾加上DNS1=192.168.75.2 // 新增,本机就是域名解析服务器
然后保存退出, 重启网络服务 nmcli c reload.

本机检验

做好了以上配置以后,在本机使用bind-utils提供的nslookup工具检验是否搭建成功。

防火墙配置

需要将53端口的udp和tcp都打开。

firewall-cmd --zone=public --add-port=53/tcp --permanent
firewall-cmd --zone=public --add-port=53/udp --permanent