前述
因为要在内网测试网站所以域名解析显得非常的笨重,因此就诞生了我在内网搭建DNS服务器的想法,但是这次和以往不同,我不再使用Windows server而是改用CentOS Linux,这是为什么呢?因为我学的是Linux运维,Windows server对我来说没什么用,对IT厂商说现在Linux才是运维核心竞争力.
DNS:域名服务器,主要的功能是提供域名到IP地址的互相转换,相当于一个Key-Value的数据库
系统环境
操作系统:CentOS 7.9 64Bit
用户:Root
准备工作
安装bind:
yum -y install bind
编辑配置文件
配置文件路径:/etc/named.conf
将配置文件中的localhost和127.0.0.1全部改为any:
sed -i 's/localhost/any/ig' /etc/named.conf
sed -i 's/127.0.0.1/any/ig' /etc/named.conf
注意:如果你不改的话就会出现无法解析的情况,因为默认情况下它只监听来自本地的解析请求,上述操作并未修改IPv6解析监听地址
创建域名解析配置文件
按照网上统一的标准都是创建*.zone文件,我们也按照标准来
推荐的命名规范:根域名.zone,例:test.com.zone
配置文件路径:/etc/named/你的域名.zone
配置文件内容:
模板:
$TTL 1D
@ IN SOA 你的根域名. 你的域名. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS ns1.你的根域名 ;这条记录必须有
* IN A 192.168.10.75 ;解析记录
实际文件:
$TTL 1D
@ IN SOA wp.com. www.wp.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS ns1.wp.com
* IN A 192.168.10.75
在/etc/named.rfc1912.zones配置文件中添加以下条目
模板:
zone "你的根域" IN {
type master;
file "配置文件路径";
allow-update { none; };
};
实际文件:
zone "wp.com" IN {
type master;
file "/etc/named/wp.com.zone";
allow-update { none; };
};
防火墙配置
关闭防火墙OR开放DNS端口
关闭防火墙:systemctl stop firewalld && systemctl disable firewalld
开放防火墙端口:
firewall-cmd --permanent --add-port=53/tcp
firewall-cmd --permanent --add-port=53/udp
firewall-cmd --reload
开启服务器,将服务加入开机自启动
systemctl start named && systemctl enable named
测试
查看服务状态:
systemctl status named
出现类似如下输出代表成功:
● named.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
Active: active (running) since Mon 2022-05-30 18:52:48 PDT; 4s ago
Process: 10548 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS (code=exited, status=0/SUCCESS)
Process: 10545 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z
"$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS)
Main PID: 10550 (named)
Tasks: 7
CGroup: /system.slice/named.service
└─10550 /usr/sbin/named -u named -c /etc/named.conf
May 30 18:52:48 localhost.localdomain named[10550]: network unreachable resolving './DNSKEY/IN': 2001:500:2::c#53
May 30 18:52:48 localhost.localdomain named[10550]: network unreachable resolving './NS/IN': 2001:500:2::c#53
May 30 18:52:48 localhost.localdomain named[10550]: network unreachable resolving './DNSKEY/IN': 2001:500:a8::e#53
May 30 18:52:48 localhost.localdomain named[10550]: network unreachable resolving './NS/IN': 2001:500:a8::e#53
May 30 18:52:48 localhost.localdomain named[10550]: network unreachable resolving './DNSKEY/IN': 2001:500:1::53#53
May 30 18:52:48 localhost.localdomain named[10550]: network unreachable resolving './NS/IN': 2001:500:1::53#53
May 30 18:52:48 localhost.localdomain named[10550]: network unreachable resolving './DNSKEY/IN': 2001:503:c27::2:30#53
May 30 18:52:48 localhost.localdomain named[10550]: network unreachable resolving './NS/IN': 2001:503:c27::2:30#53
May 30 18:52:49 localhost.localdomain named[10550]: managed-keys-zone: Key 20326 for zone . acceptance timer comp...sted
May 30 18:52:49 localhost.localdomain named[10550]: resolver priming query complete
Hint: Some lines were ellipsized, use -l to show in full.
在Windows上测试服务器可用性:
控制面板->网络和Internet->网络和共享中心->以太网->以太网状态->属性->双击internet协议版本4(TCP/IPv4)->使用下面的DNS服务器地址,将首选DNS改为你的DNS服务器IP
在系统CMD中执行以下命令:
ipconfig /flushdns
nslookup a.wp.com
ping a.wp.com
输出结果类似于:
PS C:\Users\sunxianglin> ipconfig /flushdns
Windows IP 配置
已成功刷新 DNS 解析缓存。
PS C:\Users\sunxianglin> nslookup a.wp.com
服务器: UnKnown
Address: 192.168.10.11
名称: a.wp.com
Address: 192.168.10.75
PS C:\Users\sunxianglin> ping a.wp.com
正在 Ping a.wp.com [192.168.10.75] 具有 32 字节的数据:
来自 192.168.10.75 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.10.75 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.10.75 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.10.75 的回复: 字节=32 时间<1ms TTL=64
192.168.10.75 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 0ms,平均 = 0ms
总结
搭建DNS服务器很简单,主要是考量你对其配置文件的理解程度