首页 > 系统相关 >Linux DNS服务Bind

Linux DNS服务Bind

时间:2023-01-08 17:24:31浏览次数:87  
标签:named sudo Bind Linux DNS 10.8 com example

一、环境

CentOS 7.9

BIND 9.11.4

1. BIND

https://www.isc.org/bind/

BIND是Berkeley Internet Name Domain的简称,是一个开源的DNS服务器。 这是一个历史悠久的软件,它诞生于1980年的加州大学伯克利分校。

BIND是一个非常健壮而且稳定的DNS协议的实现,可应用于高负载、高可用性的应用场景。

二、安装和配置

1. 安装

sudo yum install bind bind-utils -y

(1) 查看安装的包

rpm -qa | grep bind

或者

named -v

2. 服务

(1) 启动

sudo systemctl start named

(2) 开机自动启动

sudo systemctl enable named

(3) 查看服务状态

systemctl status named

3. 配置DNS

(1) 打开配置文件

sudo vi /etc/named.conf

(2) 默认情况下BIND仅对locahost的53端口进行监听,其他机器无法访问。

a. 公网访问

如果我们有公网访问这台DNS服务的需求,就需要将BIND服务开放给公网,找到如下两个配置项并将其注释:

#listen-on port 53 { 127.0.0.1; };
#listen-on-v6 port 53 { ::1; };

b. 内网访问

如果我们仅需要在内网访问这台DNS服务,则配置如下:

listen-on port 53 { 127.0.0.1; 10.8.0.1; };
listen-on-v6 port 53 { ::1; };

10.8.0.1为DNS服务在内网中的地址。

(3) 接下来我们需要将需要访问BIND服务的网段添加到BIND服务的白名单中。

在上图中的"options {"那一行之上添加:

# Add: Set ACL entry for local network
acl internal-network {
127.0.0.1; 10.8.0.0/24; };

10.8.0.0为公司内网的网段。找到如下配置项:

allow-query { localhost;};

修改为:

allow-query { internal-network; };

10.8.0.0/24为公司内网的网段。

4. 配置防火墙

sudo firewall-cmd --permanent --add-port=53/udp
or
sudo firewall-cmd --permanent --add-service=dns

sudo firewall-cmd --reload

5. 重启服务

sudo systemctl restart named

此时,我们已经完成了BIND服务的配置,但是服务的DNS查询规则是空的。

三、Zone

1. 概念

在Bind9中,Zone这个概念可以理解为Domain(域名)的近义词,Zone与Domain不同的地方在于它的范围更加宽广,比如Domain为"baidu.com",那么Zone也包含"mail.baidu.com"和"cn.mail.baidu.com"这种子域名。

在下面的配置中,我们需要将域名"www.example.com"解析到IPv4地址10.8.0.4,反之亦然。

2. Zone的配置分类

(1) forward map: 用于域名到IP地址的转换,比如baidu.com域名的IP地址是10.242.68.66;

(2) reverse map: 用于IP地址到域名的转换,也就是forward的反操作。

3. lookup文件中的域名类型关键字

A --- A record

NS --- Name Server

MX --- Mail for Exchange

CN --- Canonical Name

SOA – Start of Authority

PTR --- Pointer

3. forward配置

(1) options entry

将以下配置追加到/etc/named.conf文件的末尾:

#Add: Forward map for example.com
zone "example.com" IN { type master; file "example.com.fwd.db"; allow-update { none; };
notify no; };

解释一下各个参数:

example.com:需要解析的域名;

type master:是指Primary DNS;

file "example.com.fwd":后者是Forward lookup文件,这个文件需要放在options配置块中的directory所指定的路径下,默认为“/var/named”;

allow-update:设置为none是因为当前DNS为Primary,不需要被更新;

notify no:默认为yes,当Zone的配置信息发生改变的时候,主节点会向从节点发送DNS NOTIFY消息,通知从节点更新自己的Zone配置,如果使用单机则可将该配置改为no。

(2) Forward lookup文件

a. 新建文件:

sudo vi /var/named/example.com.fwd.db

b. 初始化内容:

; base zone file for example.com
$TTL 2d    ; default TTL for zone
$ORIGIN example.com. ; base domain-name

@ IN SOA ns1.example.com. root.example.com. (
        2023010801 ;Serial
        12h ;Refresh
        15m ;Retry
        3w ;Expire
        2h ;Minimum TTL
)

; Name Server RR for the domain
        IN NS ns1.example.com.

; mail server RRs for the zone (domain)
     3w IN MX 10 mail.example.com.

; A - Record of Name Server
ns1 IN A 10.8.0.1

; A - Record hostname example.com to IP address
@ IN A 10.8.0.4

; A - Record hostname www.example.com to IP address
www IN A 10.8.0.4

; A - Record hostname mail.example.com to IP address
mail IN A 10.8.0.2

; aliases ftp (ftp server) to an external domain
ftp IN CNAME ftp.example.com.

注意:

以上配置包含www域名、邮箱域名和ftp域名的解析,可按需填写,删掉不需要的配置项目。

当你有需要更新example.com.fwd.db文件时,可以将参数"Serial"参数的值更新为当前时间。

4. reverse配置

(1) options entry

将以下配置追加到/etc/named.conf文件的末尾:

#Add: Reverse map for 10.8.0
zone "0.8.10.in-addr.arpa" {
    type primary;
    file "10.8.0.rev";
allow-update { none; };
notify no; };

(2) Reverse lookup

a. 新建文件:

sudo vi /var/named/10.8.0.rev

b. 初始化内容:

; reverse map zone file for 10.8.0.4
$TTL 2d  ; 172800 seconds
$ORIGIN 0.8.10.IN-ADDR.ARPA.
@     IN      SOA   ns1.example.com. root.example.com. (
                                        2023010802 ; serial number
                                        3h         ; refresh
                                        15m        ; update retry
                                        3w         ; expiry
                                        3h         ; nx = nxdomain ttl
                                        )

; only one NS is required for this local file and is an out of zone name
      IN      NS      ns1.example.com.

; PTR Record IP address to hostname
2     IN      PTR     mail.example.com. ; fully qualified domain name (FQDN)
4     IN      PTR     www.example.com. ; fully qualified domain name (FQDN)

注意:

当你有需要更新10.8.0.rev文件时,可以将参数"Serial"参数的值更新为当前时间。

5. 文件权限

sudo chmod 777 /var/named/example.com.fwd.db
sudo chmod 777 /var/named/10.8.0.rev

6. 重启服务

sudo systemctl restart named

四、校验配置

1. 配置使用BIND DNS服务

(1) 进入同网段的另外一台机器:

sudo vi /etc/resolve.conf

(2) 添加以下配置,指向DNS服务器。

注意,如果已经配置了其他DNS服务器,域名解析时会遵循依次轮训的原则,我们要解析的www.example.com这个域名存在公网的解析,需要将下面的配置放到首行:

nameserver 10.8.0.1

(3) 如果使用Network Manager管理网络,则

sudo vi /etc/sysconfig/network-scripts/ifcfg-eXX

(4) 添加配置:

DNS1=10.8.0.1

(5) 重启Network Manager

sudo systemctl restart NetworkManager

(6) 或者使用nmcli

nmcli connection modify enp0s25 ipv4.dns 10.8.0.1
nmcli connection down enp0s25; nmcli connection up enp0s25

将enp0s25改为自己的网卡地址。 

2. 测试域名解析

(1) dig

dig www.example.com

(2) ping

ping www.example.com

3. 测试IP反向解析

dig -x 10.8.0.4

五、参考

1. 官方

https://downloads.isc.org/isc/bind9/9.18.10/doc/arm/html/

2. 其他

https://www.unixmen.com/dns-server-setup-using-bind-9-on-centos-7-linux/

https://www.itzgeek.com/how-tos/linux/centos-how-tos/configure-dns-bind-server-on-centos-7-rhel-7.html

https://www.server-world.info/en/note?os=CentOS_7&p=dns&f=1

https://www.server-world.info/en/note?os=CentOS_7&p=dns&f=3

 

标签:named,sudo,Bind,Linux,DNS,10.8,com,example
From: https://www.cnblogs.com/eagle6688/p/17026162.html

相关文章