赞
踩
如果你希望在CentOS系统上建立自己的DNS服务器,那么这篇文章绝对是你不容错过的宝藏指南。我们提供了详尽的步骤和实用技巧,让你能够轻松完成搭建过程。从安装必要的软件到配置区域文件,我们都将一一为你呈现。无论你的身份是运维人员,还是程序员,抑或是对网络基础设施感兴趣的读者,我相信这篇文章都将为你提供有力的帮助。开始阅读本文吧,开始打造一个高效、可靠的DNS解析服务!
DNS代表域名系统(Domain Name System),它是互联网中的一项基本服务。DNS是一个分布式的命名系统,用于将人类可读的域名转换成计算机可理解的IP地址。
在互联网上,每个设备都有其唯一的IP地址,如192.168.1.1。然而,人们更容易记住有意义的域名,如google.com或baidu.com等。当您在浏览器中输入域名时,浏览器会发送请求到DNS服务器,并获取与该域名相对应的IP地址。这样,浏览器就可以使用该IP地址与目标服务器进行通信和交互。
DNS系统是一个分层的结构,由许多不同的DNS服务器组成。这些服务器按照层次结构进行组织,每个层次都由不同的组织或机构管理。在顶层,有根DNS服务器,它存储了所有顶级域名服务器的信息。下一层是顶级域名服务器,它存储了特定顶级域名(如.com、.org、.cn等)的DNS记录。最后,有权威DNS服务器,它存储了与具体域名相对应的IP地址。
DNS的作用是解析域名,并将其转换为相应的IP地址,以便设备能够准确地定位和访问目标服务器。它是互联网基础设施中不可或缺的一部分,使得我们能够轻松地浏览网站、发送电子邮件、进行网络通信等。
到底有没有必要自己来动手搭建DNS服务器呢?或者说,在什么场景下需要自己动手来搭建DNS服务器?相信每个人的答案可能都不相同。我认为掌握DNS服务器的搭建还是很必要的,至少在下面几种场景下,是需要自己来动手搭建一个DNS服务器的:
在一个CentOS 7 系统中安装dns服务器,详细的步骤是什么呢?其实很简单,在CentOS 7上安装DNS服务器通常使用BIND(Berkeley Internet Name Domain)软件,这个软件在上一篇文章《CentOS系统的DNS管理:超实用的几种DNS管理工具的安装和使用方法全解析》中已经提到过。以下是在CentOS 7上安装BIND DNS服务器的详细步骤:
更新系统的软件包:
sudo yum update
安装BIND:
sudo yum install bind bind-utils
配置BIND:
打开BIND的主配置文件:
sudo nano /etc/named.conf
先来看一下,配置文件中的 options 部分,如下所示:
- options {
- listen-on port 53 { any; };
- 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 { any; };
- recursion yes;
- };
上面的配置文件是什么意思?包含了哪些信息呢?这是一个典型的 BIND (Berkeley Internet Name Domain) 配置文件的一部分。BIND 是一个常用的 DNS (Domain Name System) 服务器软件。
这个配置段指定了以下内容:
这只是配置文件的一部分,大部分情况下,这部分不需要动,更完整的配置文件通常还包括区域定义、转发设置和安全性配置等。
如果想创建一个自定义的域名,通过域名来访问主机,还需要创建一个新的区域配置文件,以便配置有关域名的信息。打开 named.conf 文件,并在 zone 部分添加以下行,注意是单独配置:
- zone "fanfu.gx" IN {
- type master;
- file "db.fanfu.gx";
- };
上面的配置是BIND 配置文件的一部分,这里我指定了一个名为 "fanfu.gx" 的 DNS 域,并指定了该域的类型为 master,同时指定了该域对应的区域文件为 "db.fanfu.gx"。具体解读一下上面配置的含义:
需要注意的是,区域文件通常包含多个资源记录,不同类型的资源记录有着不同的格式和语法。例如,A 记录用于将主机名映射到 IPv4 地址,MX 记录用于指定邮件服务器等等,后面在区域文件的配置中会再详细说明。
创建区域文件:
在上面的bind配置文件中,只是定义了域名,但是并没有建立起域名与主机的关系,这里创建一个区域配置文件,注意要给这个文件读、写、可执行三种权限。
sudo touch /var/named/db.fanfu.gx sudo chmod 777 /var/named/db.fanfu.gx
在db.fanfu.gx文件中添加类似以下内容的信息:
- $TTL 1h
- @ IN SOA ns1.fanfu.gx. admin.fanfu.gx. (
- 2024012001 ; 序列号
- 3h ; 刷新时间
- 1h ; 重试时间
- 1w ; 过期时间
- 1h ) ; 默认 TTL
- IN NS ns1.fanfu.gx. ; 指定主域名服务器
- IN NS ns2.fanfu.gx. ; 指定备用域名服务器
- @ IN A 192.168.35.99 ; 指定域名的 IPv4 地址
- ns1 IN A 192.168.35.100 ; 主域名服务器的 IP 地址
- ns2 IN A 192.168.35.100 ; 备用域名服务器的 IP 地址
上述配置内容的具体含义:
请根据您的网络配置和域名信息修改IP地址和域名。
防火墙要开启53端口,下面是开启53端口,重新启动防火墙以便新开53端口可以生效以及查询已开放端口的命令:
- sudo firewall-cmd --zone=public --add-port=53/tcp --permanent
- sudo firewall-cmd --reload
- sudo firewall-cmd --zone=public --list
接着,启动并启用BIND服务(第二条命令用于把bind服务设置成为开机启动):
- sudo systemctl start named
- sudo systemctl enable named
启动bind服务后,可以使用以下命令检查BIND服务的状态:
sudo systemctl status named
确保服务已经启动并且没有错误。
在客户端配置DNS:
至此DNS服务端已经搭建好了,DNS服务器的地址是192.168.35.100;在上面的配置中,还指定了主机ip是192.168.35.99的域名是fanfu.gx;现在登陆到主机ip是192.168.35.99的服务器上,更新一下fanfu.gx主机的的DNS地址为192.168.35.100,具体来说就是,在/etc/resolv.conf 文件中添加DNS服务器的IP地址:
nameserver 192.168.35.100
配置完resolv.conf文件后,重启网络服务
systemctl restart NetworkManager
重启网络服务后,注意要检查一下resolv.conf文件的nameserver是否被重置了。如果重启后,发现resolv.conf中的配置被重置,那么在/etc/NetworkManager/NetworkManager.conf中增加下面的配置,然后再重启网络服务,就不会再重置了,这个配置的作用是:告诉NetworkManager不要自动配置DNS服务器。这意味着NetworkManager将不会自动从DHCP服务器或其他来源获取DNS服务器的信息,也不会自动更新/etc/resolv.conf文件。这通常用于在特定网络环境下手动配置DNS设置,或者如果用户希望完全由自己管理DNS设置而不希望NetworkManager进行干预。
- [main]
- dns=none
完成上述步骤后,执行下面的命令进行测试验证
ping fanfu.gx
可以看到,配置在CentOS 7系统的DNS服务器正在运行,为你提供域名解析服务。
CentOS系统搭建DNS服务器后,要不要设置互联网根域和设置DNS转发呢?想要回答这个问题,需要先来看一看什么是设置互联网根域和设置DNS转发以及作用。
设置互联网根域和设置DNS转发是两个不同的概念,它们分别对应着DNS服务器的两种重要功能。
设置互联网根域和设置DNS转发的作用:
综而言之,通过正确设置互联网根域和DNS转发,可以保证DNS服务器能够有效地解析互联网上的各种域名,并提供快速、可靠的域名解析服务。
由此可见,如果只是纯纯在局域网内玩一玩,那就没有必要设置互联网根域和设置DNS转发。
既然说到这里,还是要深入一点,继续分享一下在 CentOS 上搭建 DNS 服务器后,设置互联网根域和配置 DNS 转发的步骤:
编辑 named.conf 文件:打开 BIND 的主配置文件 named.conf,通常位于 /etc/named.conf。
sudo vi /etc/named.conf
在 named.conf 中找到 options 部分,然后添加或确保以下行存在(在上面的配置中实际上已经配过了):
- options {
- // ...
- recursion yes;
- allow-recursion { localhost; };
- // ...
- };
allow-query { any; };: 允许任何主机查询该 DNS 服务器。这样就允许任何主机向该服务器发送 DNS 查询请求。
recursion yes;: 启用 DNS 递归查询功能。当 DNS 服务器无法直接解析请求时,它将通过迭代查询其他 DNS 服务器来获取答案。
保存文件后,重启 BIND 服务以应用更改:
sudo systemctl restart named
编辑 named.conf 文件:打开 BIND 的主配置文件 named.conf,通常位于 /etc/named.conf。
sudo vi /etc/named.conf
在 options 部分配置 DNS 转发:在 options 部分添加或确保以下行存在:
- options {
- // ...
- forwarders { 8.8.8.8; 8.8.4.4; }; // 使用 Google Public DNS 作为转发服务器,可以根据需要更改
- forward only;
- // ...
- };
forwarders 行指定 DNS 转发服务器的 IP 地址,这里使用了 Google Public DNS 作为示例。你可以根据需要更改为其他 DNS 服务器的 IP 地址。
保存文件后,重启 BIND 服务以应用更改:
sudo systemctl restart named
在CentOS一个相对低的版本里,是用network来管理网络服务的,那么在 network 服务中配置 DNS 服务需要编辑相应的网络配置文件,通常是 ifcfg 文件,例如 ifcfg-ens33(具体文件名可能因网络接口而异)。
我使用的是CentOS 7 ,安装后的网络接口名为 ens33。请注意,这里使用的是静态 IP 地址和手动配置 DNS 的示例。如果你的网络是动态分配 IP 地址(DHCP),那么 DNS 配置通常会由 DHCP 服务器提供。
打开 ifcfg-ens33 文件进行编辑:
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33
在文件中找到并编辑 DNS1 和 DNS2 行。添加或修改这些行以设置你的首选和备用 DNS 服务器的 IP 地址。示例:
- DNS1=8.8.8.8
- DNS2=8.8.4.4
请将上述 IP 地址替换为你希望使用的 DNS 服务器的实际地址。
保存并关闭文件。
重启 network 服务以应用更改:
sudo systemctl restart network
以上步骤应该将指定的 DNS 服务器配置到你的网络接口。请记得根据实际情况修改 IP 地址,这里的示例使用的是 Google 的公共 DNS 服务器地址。如果你使用 DHCP,可能需要通过 DHCP 配置文件或网络管理器工具来配置 DNS。
如果你觉得这篇文章对你有所帮助,不妨点击点赞按钮,让更多的人看到这篇优质的技术分享。同时,别忘了将这篇文章收藏起来,以备日后查阅。这样,你就能随时回顾和复习文章中的重要知识点,确保你的技术水平始终保持在最高水平。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。