DNS服务器部署-bind

@


本实验分别在centos和ubuntu下搭建dns服务器,简单实现局域网网内将域名解析为ip

简单安装部署(ubuntu)

将ubuntu部署为简单的DNS服务器(前提上可以上网,可以正常访问域名),可以实现为其他同网段主机进行域名解析,但是实质上还是通过ubuntu使用的其他的DNS服务器来访问域名,只是多走了一道程序

安装bind软件包

apt install -y bind9

配置文件解释

#/etc/bind/下

named.conf  设置一般的named参数,指向该服务器使用的域数据库的信息源

named.conf.options 全局选项  

db.root  根服务器指向文件, 由Internet NIC创建和维护, 无需修改, 但是需要定期更新 

db.local  localhost正向区文件,用于将名字localhost转换为本地回送IP地址 (127.0.0.1) 

db.127  localhost反向区文件,用于将本地回送IP地址(127.0.0.1)转换为名字localhost 

配置options全局配置文件

vim /etc/bind/named.conf.options

在opentions的花括号内添加两个参数

listen-on port 53 { localhost; };
allow-query     { any; };

如下所示

options {
        directory "/var/cache/bind";

        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

        // If your ISP provided one or more IP addresses for stable
        // nameservers, you probably want to use them as forwarders.
        // Uncomment the following block, and insert the addresses replacing
        // the all-0's placeholder.
        
		//DNS转发器。用于设定该DNS解析服务器无法进行当前域名解析的情况下,进行转发解析的DNS地址
        // forwarders {
        //      0.0.0.0;
        // };

        //========================================================================
        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys
        //========================================================================
        //设置是否启用DNSSEC确认,Ubuntu系统默认为auto自动
        dnssec-validation auto;

        listen-on-v6 { any; };
        
        //表示监听本地地址所有,默认是127回环地址,
        listen-on port 53 { localhost; };
        //允许所有网段访问,可作限制,设置为具体的网段
        allow-query     { any; };

};

保存退出后重启dns服务

systemctl restart named

centos客户端进行测试

要将网卡DNS配置为ubuntu服务端地址,正常不配置DNS是不能正常解析百度域名的,但是将ubuntu配置为DNS后,本质上centos就会去询问ubuntu,ubuntu上网解析域名后再告诉centos,从而达到一个简单的DNS服务器效果

[root@huhy ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
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=52c22627-a236-404e-99a6-ed79ff9fd392
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.200.150
GATEWAY=192.168.200.2
PREFIX=24
DNS1=192.168.200.160
#DNS2=114.114.114.114

测试访问百度域名,会比正常解析域名的时间要长一点

[root@huhy ~]# ping www.baidu.com
PING www.a.shifen.com (183.232.231.174) 56(84) bytes of data.
64 bytes from 183.232.231.174 (183.232.231.174): icmp_seq=1 ttl=128 time=31.5 ms
64 bytes from 183.232.231.174 (183.232.231.174): icmp_seq=2 ttl=128 time=35.5 ms
64 bytes from 183.232.231.174 (183.232.231.174): icmp_seq=3 ttl=128 time=37.6 ms
64 bytes from 183.232.231.174 (183.232.231.174): icmp_seq=4 ttl=128 time=37.3 ms
^C
--- www.a.shifen.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 10558ms
rtt min/avg/max/mdev = 31.575/35.551/37.690/2.437 ms
[root@huhy ~]#

自定义域名配置

既然是做DNS域服务器,自然是要自己配置局域网,将ip指定为自定义的域名

使用三台虚拟机作为实验

域名 ip
DNS服务器 192.168.200.160
www.hoyeong.com 192.168.200.150

150节点使用160作为DNS服务器完成相互实现域名访问

配置正向解析

配置主配置文件
/etc/bind目录下named.conf.default-zones文件包括正向解析内容和反向解析内容

vim /etc/bind/named.conf.default-zones

参数解析

zone "hoyeong.com" { //hwiung.com是自定义的域名
        type master; //指定主要区域
        file "/etc/bind/hoyeong.com"; //指向区域的配置文件,自己创建,如果文件里面不指定
        //路径,则需要把配置文件放在/var/cache/bind/目录下,这个在named.conf.options配置
        //参数中指定了默认路径
};

具体配置如下

zone "hoyeong.com" {
        type master;
        file "hoyeong.com";
};

配置区域文件

包含一个区域内的所有数据,包含主机名,ip,刷新间隔,过期时间等,/etc/bind/目录下使用默认的db.local复制一个副本文件,根据这个副本文件修改即可,因为我是file配置是放在默认位置,所以需要复制到/var/cache/bind/下修改

cp /etc/bind/db.local /var/cache/bind/hoyeong.com -p

默认配置文件参数解析,一般我们只修改记录,参数配置都默认即可

root@huhy:/etc/bind# cat db.local
;
; BIND data file for local loopback interface
;
#用于设置域的默认生存时间,单位秒,默认取值一天
$TTL    604800
# @符号代表当前域,IN代表地址类别,SOA填写改域的名称,这里默认localhost,记住域后有点
@       IN      SOA     localhost. root.localhost. (
                             //serial表示版本号
                              2         ; Serial
                             //表示更新时间的间隔,表示主DNS多久一次对区域文件复制更新一次
                         604800         ; Refresh
                             //表示出现故障后重试时间间隔
                          86400         ; Retry
                            //过期时间间隔,如果一段时间不能和此域取得联系,则丢弃此域的数据
                        2419200         ; Expire
                            //最小默认缓存时间,一段时间内访问过一次后,那第二次访问则不会再次进行读取访问,而且返回第一次访问的缓存数据
                         604800 )       ; Negative Cache TTL
;
#NS记录指定主域名服务器
@       IN      NS      localhost.
#A记录表示解析ipv4地址
@       IN      A       127.0.0.1
#AAAA表示解析ipv6地址
@       IN      AAAA    ::1

#资源记录得类型有很多,目前我们只涉及SOA、NS、A、AAAA,CNAME、PTR(别名记录)
其他自行上网了解

具体配置如下

root@huhy:~# cat /var/cache/bind/hoyeong.com
;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     master root.hoyeong.com. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      master
master  IN      A       192.168.200.160
www     IN      A       192.168.200.150
@       IN      AAAA    ::1

配置反向解析

顾名思义,也就是通过ip来解析域名(切记是与正向解析式是相匹配的

配置named.conf.default-zones文件

vim /etc/bind/named.conf.default-zones
zone "200.168.192.in-addr.arpa"{
        type master;
        file "192.168.200.zone";
};

配置解析文件

cp /etc/bind/db.local /var/cache/bind/192.168.200.zone -p

150代表解析网段的具体地址,PTR为反向解析记录名,后面跟上正向解析的字段,注意带点

root@huhy:/var/cache/bind# cat 192.168.200.zone
;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     master.hoyeong.com admin.hoyeong.com. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      master
master  IN      A       192.168.200.160
150     IN      PTR     www.hoyeong.com.

检查conf文件是否有语法错误

named-checkconf

检查解析文件是否有语法错误

oot@huhy:/var/cache/bind# named-checkzone hoyeong.com /var/cache/bind/hoyeong.com
zone hoyeong.com/IN: loaded serial 2
OK

重启服务

systemctl restart bind9

centos客户端测试

正向解析测试

配置网关为ubuntu服务器

[root@huhy ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.200.160
[root@huhy ~]#

域名查看

[root@huhy ~]# hostname -I
192.168.200.150
[root@huhy ~]# host www.hoyeong.com
www.hoyeong.com has address 192.168.200.150
[root@huhy ~]# ping www.hoyeong.com
PING www.hoyeong.com (192.168.200.150) 56(84) bytes of data.
64 bytes from huhy (192.168.200.150): icmp_seq=1 ttl=64 time=0.015 ms
64 bytes from huhy (192.168.200.150): icmp_seq=2 ttl=64 time=0.026 ms
64 bytes from huhy (192.168.200.150): icmp_seq=3 ttl=64 time=0.025 ms
^C
--- www.hoyeong.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2028ms
rtt min/avg/max/mdev = 0.015/0.022/0.026/0.005 ms
[root@huhy ~]#

反向解析测试

使用dig命令测试

dig -t ptr 150.200.168.192.in-addr.arpa @192.168.200.160
[root@huhy ~]# dig -t ptr 150.200.168.192.in-addr.arpa @192.168.200.160

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.10 <<>> -t ptr 150.200.168.192.in-addr.arpa @192.168.200.160
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19580
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;150.200.168.192.in-addr.arpa.  IN      PTR

;; ANSWER SECTION:
150.200.168.192.in-addr.arpa. 604800 IN PTR     www.hoyeong.com.

;; Query time: 0 msec
;; SERVER: 192.168.200.160#53(192.168.200.160)
;; WHEN: Sun Nov 06 04:41:04 EST 2022
;; MSG SIZE  rcvd: 86

[root@huhy ~]#

查看SOA记录

dig -x 192.168.200.160 @192.168.200.160
[root@huhy ~]# dig -x 192.168.200.160 @192.168.200.160

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.10 <<>> -x 192.168.200.160 @192.168.200.160
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 25325
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;160.200.168.192.in-addr.arpa.  IN      PTR

;; AUTHORITY SECTION:
200.168.192.in-addr.arpa. 604800 IN     SOA     master.hoyeong.com.200.168.192.in-addr.arpa. admin.hoyeong.com. 2 604800 86400 2419200 604800

;; Query time: 0 msec
;; SERVER: 192.168.200.160#53(192.168.200.160)
;; WHEN: Sun Nov 06 04:43:46 EST 2022
;; MSG SIZE  rcvd: 153

[root@huhy ~]#

ubuntu一键部署

#!/bin/bash

domain=hoyeong.com
ip=192.168.200
ip_laste=150
domain_ip_laste=160

apt install -y bind9

cat >> /etc/bind/named.conf.default-zones <<eof
zone "$domain" {
        type master;
        file "$domain";
};

zone "200.168.192.in-addr.arpa"{
        type master;
        file "$ip.zone";
};
eof

cp /etc/bind/db.local /var/cache/bind/$domain -p
cp /etc/bind/db.local /var/cache/bind/$ip.zone -p

cat > /var/cache/bind/$domain <<eof
;
; BIND data file for local loopback interface
;
\$TTL    604800
@       IN      SOA     $domain. root.hoyeong.com. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      huhy
huhy    IN      A       $ip.$domain_ip_laste
www     IN      A       $ip.$ip_laste
@       IN      AAAA    ::1
eof

cat > /var/cache/bind/$ip.zone <<eof
 ;
; BIND data file for local loopback interface
;
\$TTL    604800
@       IN      SOA     hoyeong.com. admin.hoyeong.com. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      huhy
huhy    IN      A       $ip.$domain_ip_laste
150     IN      PTR     www.$domain.
eof
systemctl restart bind9

即可查看ip解析的对应域名

安装部署(centos)

centos服务端IP 192.168.200.150
ubuntu客户端测试ip 192.168.200.160

要求局域网内使用centso服务器作为网关即可使用自定义得域名访问客户端地址

自定义域名配置

安装相应软件包

yum install -y bind

先在/etc/named.conf主配文件中配置如下参数

listen-on port 53 { localhost; };
allow-query     { any; };

使用配置区域文件/etc/named.rfc1912.zones,/etc/named.conf文件也可以用来配置区域文件,为了更有条理性一般就放在named.rfc1912.zones里面

zone "hoyeong.com" IN {
        type master;
        file "hoyeong.com";
        allow-update { none; };
};

配置记录文件,一般在/var/named/下,复制named.localhost默认文件进行修改即可

cp named.localhost hoyeong.com -p

配置如下,master对应地址为DNS服务器地址

[root@huhy named]# cat hoyeong.com
$TTL 1D
@       IN SOA  master.hoyeong.com. admin.hoyeong.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      master
master  A       192.168.200.150
huhy    A       192.168.200.160
www     A       192.168.200.160

语法检查,检查配置文件,不报错即可

named-checkconf

解析文件语法检查

[root@huhy named]# named-checkzone hoyeong.com /var/named/hoyeong.com
zone hoyeong.com/IN: loaded serial 0
OK
[root@huhy named]#

ubuntu客户端测试

修改DNS为centos服务端

root@huhy:~# cat /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
  ethernets:
    ens33:
      dhcp4: no
      addresses:
        - 192.168.200.160/24
      routes:
        - to: default
          via: 192.168.200.2
      nameservers:
        addresses:
          # - 192.168.200.150
          - 192.168.200.150
    ens38:
      dhcp4: no
      addresses:
        - 192.168.200.170/24
      routes:
        - to: 192.168.200.0/24
          via: 192.168.200.2
            #nameservers:
        #addresses:
          #- 114.114.114.114
            #- 8.8.8.8
  version: 2

如下解析成功

root@huhy:~# ping huhy.hoyeong.com
PING huhy.hoyeong.com (192.168.200.160) 56(84) bytes of data.
64 bytes from huhy (192.168.200.160): icmp_seq=1 ttl=64 time=0.012 ms
64 bytes from huhy (192.168.200.160): icmp_seq=2 ttl=64 time=0.027 ms
64 bytes from huhy (192.168.200.160): icmp_seq=3 ttl=64 time=0.032 ms
^C
--- huhy.hoyeong.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2009ms
rtt min/avg/max/mdev = 0.012/0.023/0.032/0.008 ms
root@huhy:~#
root@huhy:~# ping www.hoyeong.com
PING www.hoyeong.com (192.168.200.160) 56(84) bytes of data.
64 bytes from huhy (192.168.200.160): icmp_seq=1 ttl=64 time=0.015 ms
64 bytes from huhy (192.168.200.160): icmp_seq=2 ttl=64 time=0.031 ms
64 bytes from huhy (192.168.200.160): icmp_seq=3 ttl=64 time=0.027 ms
^C
--- www.hoyeong.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2008ms
rtt min/avg/max/mdev = 0.015/0.024/0.031/0.006 ms
root@huhy:~#

配置域名解析多个地址

当域名访问量过多时,单台服务器压力过大,就需要多台服务器来分担,就可以把域名解析到多个服务器得ip地址,达到分担压力得目的

修改配置文件hoyeong.com
涉及地址160,182为客户端,150为服务端DNS服务器

$TTL 1D
@       IN SOA  master.hoyeong.com. admin.hoyeong.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      master
master  A       192.168.200.150
huhy    A       192.168.200.160
www     CNAME   huhy
huhy    A       192.168.200.160
huhy    A       192.168.200.182

重启后客户端测试

host,dig等是专业得ping工具,下载命令yum install -y bind-utils

root@huhy:~# hostname -I
192.168.200.160 192.168.200.170
root@huhy:~# host www.hoyeong.com
www.hoyeong.com is an alias for huhy.hoyeong.com.
huhy.hoyeong.com has address 192.168.200.182
huhy.hoyeong.com has address 192.168.200.160
root@huhy:~#
[root@huhy ~]# hostname -i
fe80::6103:4a4b:34a4:58b4%ens33 192.168.200.182 172.17.0.1
[root@huhy ~]# host www.hoyeong.com
www.hoyeong.com is an alias for huhy.hoyeong.com.
huhy.hoyeong.com has address 192.168.200.160
huhy.hoyeong.com has address 192.168.200.182
[root@huhy ~]#

解析成功~

posted @ 2022-11-06 17:49  hoyeong  阅读(164)  评论(0编辑  收藏  举报