DNS服务器搭建
Posted 坏坏-5
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DNS服务器搭建相关的知识,希望对你有一定的参考价值。
实验环境说明
主机系统 | 系统版本 | IP地址 | |
---|---|---|---|
服务端 | Linux | RHEL 7.0 | IP:192.168.43.128/24 域名:www.bad.boy.com |
客户端 | Linux | RHEL 7.4 | 192.168.43.15/24 |
客户端 | Windows 11 | Windows 11 | 192.168.43.1/24 |
- 基本环境配置参考【DHCP服务搭建】和【HTTP服务搭建】
- IP地址配置
- YUM仓库配置
- 防火墙、SELinux配置
- HTTP服务配置
服务器配置
安装DNS软件包
- 安装DNS服务器的软件包
bind
是DNS服务器的软件包名bind-chroot
可以隐藏正常的根目录,可以提高安全性
[root@Server ~]# yum -y install bind bind-chroot.x86_64
Loaded plugins: langpacks, product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Base | 4.1 kB 00:00
Resolving Dependencies
--> Running transaction check
...
Installed:
bind.x86_64 32:9.9.4-50.el7 bind-chroot.x86_64 32:9.9.4-50.el7
Dependency Installed:
GeoIP.x86_64 0:1.5.0-11.el7
Dependency Updated:
bind-libs.x86_64 32:9.9.4-50.el7 bind-libs-lite.x86_64 32:9.9.4-50.el7
bind-license.noarch 32:9.9.4-50.el7
Complete!
[root@Server ~]#
- 设置DNS服务器开机自启动
disable
则表示关闭开机自启
[root@Server ~]# systemctl enable named
ln -s '/usr/lib/systemd/system/named.service' '/etc/systemd/system/multi-user.target.wants/named.service'
[root@Server ~]# systemctl restart named
- 防火墙放行DNS服务
# 列出防火墙所有规则
[root@Server named]# firewall-cmd --list-all
public (default, active)
interfaces: eno16777736
sources:
services: dhcp dhcpv6-client http samba ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
# 向防火墙中添加规则,放行DNS服务
[root@Server named]# firewall-cmd --permanent --add-service="dns"
success
# 重新加载防火墙,使配置生效
[root@Server named]# firewall-cmd --reload
success
[root@Server named]# firewall-cmd --list-all
public (default, active)
interfaces: eno16777736
sources:
services: dhcp dhcpv6-client dns http samba ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
[root@Server named]#
修改配置文件
- 配置文件说明
/etc/named.conf # bind主配置文件
/etc/named.rfc1912.zones # 定义zone的文件
/etc/rndc.conf # rndc配置文件
/usr/sbin/named-checkconf # 检测/etc/named.conf文件语法
/usr/sbin/named-checkzone # 检测zone和对应zone文件的语法
/usr/sbin/rndc # 远程dns管理工具
/usr/sbin/rndc-confgen # 生成rndc密钥
/var/named/named.ca # 根解析库
/var/named/named.localhost # 本地主机解析库
/var/named/slaves # 从ns服务器文件夹
- 修改主配置文件
[root@Server ~]# vim /etc/named.conf
options
# listen-on port 53 127.0.0.1; ;
# 定义监听的端口以及监听主机,如果所有都监听则括号内为any
listen-on port 53 192.168.43.128; ;
# IPv6监听端口及IP
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";
# allow-query localhost; ;
# 允许所有主机进行查询,localhost表示允许本地主机查询
allow-query any; ;
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";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
;
# 定义日志记录分类以及存放位置
logging
channel default_debug
file "data/named.run";
severity dynamic;
;
;
# 定义区域,区域类型(hint:根分区,master:主分区,slave:从区域服务器)
zone "." IN
type hint;
file "named.ca";
;
# 包含的其他配置文件
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
- 修改区域配置文件
[root@Server ~]# vim /etc/named.rfc1912.zones
# 正向区域解析文件
zone "bad.boy.com" IN # 域名
type master; # 服务类型
file "bad.boy.com.zone"; # 域名与IP地址解析规则保存的文件
;
# 逆向区域解析文件
zone "43.168.192.in-addr.arpa" IN
type master;
file "named.192.168.43";
;
- 本地解析文件说明
Domain | IN | RR Type | RR Data |
---|---|---|---|
主机名 | IN | A | IPv4地址 |
主机名. | IN | AAAA | IPv6地址 |
域名. | IN | NS | 管理此域名的主机IP |
域名. | IN | SOA起始授权记录 | 管理此域名的七个重要参数 |
域名. | IN | MX | 顺序数字,相当于域名的优先级 |
主机别名. | IN | CNAME | 实际主机的域名 |
/var/named/named.localhost # 本地主机解析库
$TTL 1D
# 时间单位:M(分钟),H(小时),D(天),W(周),默认是秒
# TTL是当这条记录被其他DNS服务器查询到后,这个记录在对方DNS服务器中缓存的时间。如果写了$TTL,则以该值为准。
@ IN SOA @ admin.baidu.com. (
# 1.如果一个域名和来源相同的话,那么名称就可以被表示为"@"
# 2.@代表zone的意思,现在@代表baidu.com.
# 3.SOA代表资源记录的名称为起始授权记录
# 4.admin.baidu.com.表示有问题找该管理员
# 5.SOA记录后面的@,代表域的权威服务器
# 6.域名最后必须要有.
0 ; serial
# 序号,代表数据库文件的新旧,越大代表越新
1D ; refresh
# 更新频率,定义slave向master请求更新的频率
1H ; retry
# 失败重新尝试,定义slave向master请求失败,再次请求的时间
1W ; expire
# 失效时间,定义slave一直向master请求失败,最大的请求时间
3H ) ; minimum
# 缓存时间,如果这个数据库zone file中,每条记录都没有到TTL缓存时间,就以这个SOA的设置值为主
IN NS @
# NS记录代表域名服务器记录,如果有多个域名服务器,可以添加多条NS记录,每个NS记录在下面
IN MX 10 mail.example.com.
# 使用MX记录指定邮件服务器时,我们给mail.example.com服务器设置优先级为10
IN A 127.0.0.1
# 记录正向解析记录,格式为在域名后面输入相应的IP地址,IN代表Internet,A代表IPv4地址,AAAA表示IPv6地址
IN AAAA ::1
root.example.com. IN A 172.16.0.254
# 记录root.example.com对应的IP是172.16.0.254
www.example.com. IN A 172.16.0.200
IN A 172.16.0.200
mail IN A 172.16.0.25
# mail(默认省略) => mail.example.com.
web IN CNAME www
# CNAME记录为别名,可以使用web.example.com来代表www.example.com
- 修改Zone的配置文件
[root@Server ~]# cd /var/named/
# 将模板文件复制两份,一份为正向解析文件,一份为逆向解析文件
[root@Server named]# cp -p named.loopback bad.boy.com.zone
[root@Server named]# cp -p named.loopback named.192.168.43
[root@Server named]# vim bad.boy.com.zone
$TTL 1D ;生存时间
@ IN SOA bad.boy.com. root.bad.boy.com (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H) ; minimum
IN NS www.bad.boy.com.
www IN A 192.168.43.128
IN MX 10 ftp.bad.boy.com.
ftp IN A 192.168.43.10
dns IN A 192.168.43.20
web IN CNAME www ;表示web.bad.boy.com可以替代www.bad.boy.com
[root@Server named]# vim named.192.168.43
$TTL 1D
@ IN SOA bad.boy.com. root.bad.boy.com. (
0 ; serial
1D ; refresh,刷新时间
1H ; retry,重试时间
1W ; expire,超时时间
3H ) ; minimum,无效回答缓存时间
IN NS bad.boy.com.
128 IN PTR www.bad.boy.com.
10 IN PTR ftp.bad.boy.com.
20 IN PTR dns.bad.boy.com.
- 注意复制模板文件时,一定要使用
-p
参数,复制的同时复制属主和属组以及相关的权限信息,如果文件的属主属组不是named
,则需要使用chgrp
或chown
命令修改属主属组- SOA后面的域名最后必须要有一个
.
- 重新启动DNS服务器
[root@Server ~]# systemctl restart named
- 在服务端测试
[root@Server ~]# nslookup
> 192.168.43.128
Server: 192.168.43.128
Address: 192.168.43.128#53
128.43.168.192.in-addr.arpa name = www.bad.boy.com.
> 192.168.43.10
Server: 192.168.43.128
Address: 192.168.43.128#53
10.43.168.192.in-addr.arpa name = ftp.bad.boy.com.
> 192.168.43.20
Server: 192.168.43.128
Address: 192.168.43.128#53
20.43.168.192.in-addr.arpa name = dns.bad.boy.com.
> www.bad.boy.com
Server: 192.168.43.128
Address: 192.168.43.128#53
Name: www.bad.boy.com
Address: 192.168.43.128
> web.bad.boy.com
Server: 192.168.43.128
Address: 192.168.43.128#53
web.bad.boy.com canonical name = www.bad.boy.com.
Name: www.bad.boy.com
Address: 192.168.43.128
> ftp.bad.boy.com
Server: 192.168.43.128
Address: 192.168.43.128#53
Name: ftp.bad.boy.com
Address: 192.168.43.10
> dns.bad.boy.com
Server: 192.168.43.128
Address: 192.168.43.128#53
Name: dns.bad.boy.com
Address: 192.168.43.20
> exit
# 也可以使用host命令来解析
[root@Server ~]# host 192.168.43.128
128.43.168.192.in-addr.arpa domain name pointer www.bad.boy.com.
[root@Server ~]# host web.bad.boy.com
web.bad.boy.com is an alias for www.bad.boy.com.
www.bad.boy.com has address 192.168.43.128
www.bad.boy.com mail is handled by 10 ftp.bad.boy.com.
[root@Server ~]# host ftp.bad.boy.com
ftp.bad.boy.com has address 192.168.43.10
[root@Server ~]# host 192.168.43.10
10.43.168.192.in-addr.arpa domain name pointer ftp.bad.boy.com.
[root@Server ~]#
客户端配置
Linux客户端测试
- 在Linux客户端配置DNS服务器的地址
- 在【DHCP服务搭建】中,已经为Linux客户端分配了DNS服务器的IP地址为
192.168.43.128
- 如果使用的是静态IP地址,则需要手动配置DNS服务器的IP地址
- 在【DHCP服务搭建】中,已经为Linux客户端分配了DNS服务器的IP地址为
[root@Client ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.43.15
NETMASK=255.255.255.0
GATEWAY=192.168.43.1
DNS1=192.168.43.128
[root@Client ~]# systemctl restart network
[root@Client ~]#
- 在HTTP服务中,由于没有DNS服务器,做了本地的IP-域名映射关系,现在已经部署了DNS服务器,则可以删除之前的映射关系
[root@Client ~]# vim /etc/hosts
#192.168.43.128 www.bad.boy.com
[root@Client ~]#
- 在Linux客户端使用域名访问HTTP服务器
- 如果是命令行界面,可以直接使用
ping
或curl
命令测试
- 如果是命令行界面,可以直接使用
[root@Client ~]# ping www.bad.boy.com
PING www.bad.boy.com (192.168.43.128) 56(84) bytes of data.
64 bytes from www.bad.boy.com (192.168.43.128): icmp_seq=1 ttl=64 time=0.458 ms
64 bytes from www.bad.boy.com (192.168.43.128): icmp_seq=2 ttl=64 time=0.337 ms
64 bytes from www.bad.boy.com (192.168.43.128): icmp_seq=3 ttl=64 time=0.569 ms
^C
--- www.bad.boy.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.337/0.454/0.569/0.097 ms
[root@Client ~]# ping web.bad.boy.com
PING www.bad.boy.com (192.168.43.128) 56(84) bytes of data.
64 bytes from www.bad.boy.com (192.168.43.128): icmp_seq=1 ttl=64 time=0.401 ms
64 bytes from www.bad.boy.com (192.168.43.128): icmp_seq=2 ttl=64 time=0.576 ms
64 bytes from www.bad.boy.com (192.168.43.128): icmp_seq=3 ttl=64 time=0.665 ms
^C
--- www.bad.boy.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.401/0.547/0.665/0.111 ms
# 使用curl命令访问网页
[root@Client ~]# curl www.bad.boy.com
?<!DOCTYPE html>
<html>
<head>
<title>坏坏-5的博客</title>
<!-- meta -->
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
....
<script src="js/script.js"></script>
</body>
[root@Client ~]#
- 使用
nslookup
命令测试
[root@Client ~]# nslookup
> 192.168.43.128
Server: 192.168.43.128
Address: 192.168.43.128#53
128.43.168.192.in-addr.arpa name = www.bad.boy.com.
> 192.168.43.10
Server: 192.168.43.128
Address: 192.168.43.128#53
10.43.168.192.in-addr.arpa name = ftp.bad.boy.com.
> web.bad.boy.com
Server: 192.168.43.128
Address: 192.168.43.128#53
web.bad.boy.com canonical name = www.bad.boy.com.
Name: www.bad.boy.com
Address: 192.168.43.128
> dns.bad.boy.com
Server: 192.168.43.128
Address: 192.168.43.128#53
Name: dns.bad.boy.com
Address: 192.168.43.20
> ftp.bad.boy.com
Server: 192.168.43.128
Address: 192.168.43.128#53
Name: ftp.bad.boy.com
Address: 192.168.43.10
> exit
[root@Client ~]#
Windows客户端测试
- 同样删除在HTTP服务搭建中对
hosts
文件的修改,需要手动设置DNS服务器的IP地址- 因为这里使用的是仅主机模式,即使用的是VM net1网卡,所以手动去设置VM net1网卡的DNS服务器
- 因为这里使用的是仅主机模式,即使用的是VM net1网卡,所以手动去设置VM net1网卡的DNS服务器
- 使用
www.bad.boy.com
访问HTTP服务器
- 使用
web.bad.boy.com
访问HTTP服务器
以上内容均属原创,如有不详或错误,敬请指出。
本文链接: https://blog.csdn.net/qq_45668124/article/details/122141199
版权声明: 本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0 许可协议。转载请联系作者注明出处并附带本文链接!
以上是关于DNS服务器搭建的主要内容,如果未能解决你的问题,请参考以下文章