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 ~]#
解析成功~