草庐IT

Linux系统中配置DNS服务器

李叉叉&&同学 2023-08-23 原文

DNS简介

分布式数据库(满足大量用户访问,将流量越分越小)。功能是域名解析,主机名与IP地址之间的转换,①正向解析(主机名-ip)。②反向解析(ip-主机名。

在域名服务器中,一个域名只能对应一个ip地址,但是一个ip地址可以对应多个域名,也可以没有。

安装DNS服务

bind软件包

在Linux系统中,常用bind软件包来配置DNS服务

[root@192 redhat]# dnf install -y bind

配置文件

主配置文件

[root@192 named]# ll /etc/named.conf
-rw-r----- 1 root named 1722 9月 30 04:09 /etc/named.conf
[root@192 named]#

区域配置文件

全球的根域名服务器信息保存在named.ca文件中,bind安装之后会自动生成在var/named/下。

其中包括多个zone语句(配置相应的域名信息)。语句中主要包括选项file和type。

type域类型

hint:本地找不到,则从根域名服务器。
master:定义主服务器/权威服务器
slave: 定义辅助域名服务器
forward :定义转发域名服务器

file用于定义区域数据文件 该文件主要保存在主配置文件中的optical定义的目录下。

zone语句首行若指定为“逆向IP地址。in-addr.apra"说明定义的是反向解析。

DNS服务器中区域数据文件默认在 /var/named/ 目录下同时也分为正向解析数据文件(域名到IP地址的映射关系),和反向解析数据文件(IP地址到域名的映射关系)。

[root@192 named]# cd /var/named/
[root@192 named]# ll
总用量 16
drwxrwx--- 2 named named 6 9月 30 04:09 data
drwxrwx--- 2 named named 6 9月 30 04:09 dynamic
-rw-r----- 1 root named 2253 9月 30 04:09 named.ca
-rw-r----- 1 root named 152 9月 30 04:09 named.empty
-rw-r----- 1 root named 152 9月 30 04:09 named.localhost
-rw-r----- 1 root named 168 9月 30 04:09 named.loopback
drwxrwx--- 2 named named 6 9月 30 04:09 slaves

文件记录类型

TTL : 文件的生命周期

SOA记录:起始授权记录,一个区域解析库只能有一个SOA记录,而且必须为第一条。

NS记录(nameserver):域名服务记录,授权服务器,一个区域解析库可以有多个NS记录,其中一个为主服务器。

A记录:IPv4的地址记录

AAAA:IPv6的地址记录

PRT:反向解析记录,从IP解析为域名

MX:邮件交换记录。我们平时发邮件都是直接发到qq.com163.com等域名上,但是这些域名肯定是有多台服务器的,MX记录就是指明了哪个服务器会负责邮件。MX服务可以存在多个,由优先级来区分先后,0-99,数字越小优先级越高

CNAME记录:给一个地址设置一个别名

正向解析

主配置文件

区域数据文件

vim haha.ca
$TTL 1D
@ IN SOA @ admin#haha.com@ IN SOA @ admin#haha.com. (
0
1D
1D
1D
1D
)
IN NS ns.haha.com
IN MX 10 mail.haha.com.
ns IN A 192.168.71.129
mail IN A 192.168.71.129
web IN A 192.168.71.129
FTP IN CNAME web

测试服务

重启服务

从本地服务器上查询

[root@192 named]# dig -t A mail.haha.com @192.168.71.129

反向解析

主配置文件

options {
listen-on port 53 {192.168.71.129; };
directory "/var/named";
};
zone " haha.com" IN {
type master;// 主服务器
file "haha.ca";// 文件名
};
//反向
zone "71.168.192.in-addr.arpa" IN {
type master;// 主服务器
file "yiyi.ca";// 文件名
};

区域配置文件

$TTL 1D
@ IN SOA @ admin#haha.com@ IN SOA @ admin#haha.com. (
0
1D
1D
1D
1D
)
IN NS ns.haha.com
129 IN PTR bs.haha.com
129 IN PTR mail.haha.com
129 IN PTR web.haha.com
129 IN PTR ftp.haha.com

测试服务

[root@192 named]# dig -x 192.168.71.129 @192.168.71.129

[root@192 named]# nslookup
> ftp.haha.com
Server:192.168.71.2
Address:192.168.71.2#53
Non-authoritative answer:
Name: ftp.haha.com
Address: 72.10.32.93
>

转发服务器

定义

发服务器指的是转发器标签允许当本地DNS服务器无法对DNS客户端的解析请求进行本地解析时(DNS服务器无法权威的解析客户端的请求,即没有匹配的主要区域和辅助区域,并且无法通过缓存信息来解析客户端的请求),配置本地DNS服务器转发DNS客户发送的解析请求到上游DNS服务器。

搭建三个虚拟机作为标准DNS服务器,转发器,客户端。

以前面的服务器为标准服务器,新建转发服务器,

转发服务器的主配置文件

[root@192 named]# cat /etc/named.conf
options {
listen-on port 53 {192.168.71.132; };
forward only;
forwarders { 192.168.71.129;};// 标准服务器的地址
};

[root@192 named]# nmcli device show | grep DNS
IP4.DNS[1]: 192.168.71.2

重启服务

systemctl restart named

在中间·服务器·中访问标准服务器·

[root@192 named]# dig -t A mail.haha.com @192.168.71.129

客户端配置DNS墓表为转发服务器

解析web服务器

在转发服务器的基础上,配置HTTP协议,通过客户端;来访问。

出现的问题

安装bind软件包时报错

[root@192 redhat]# dnf install -y bind
正在更新 Subscription Management 软件仓库。
无法读取客户身份
本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。
Extra Packages for Enterprise Linux 9 - x86_64 13 kB/s | 9.8 kB 00:00
Extra Packages for Enterprise Linux 9 - x86_64 774 kB/s | 13 MB 00:17
MySQL 8.0 Community Server 5.3 kB/s | 2.6 kB 00:00
MySQL Connectors Community 5.5 kB/s | 2.6 kB 00:00
MySQL Tools Community 5.7 kB/s | 2.6 kB 00:00
baseos 0.0 B/s | 0 B 00:00
Errors during downloading metadata for repository 'BaseOS':
- Curl error (37): Couldn't read a file:// file for file:///mnt/BaseOS/repodata/repomd.xml [Couldn't open file /mnt/BaseOS/repodata/repomd.xml]
错误:为仓库 'BaseOS' 下载元数据失败 : Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried

原因是软件仓库没有挂载

[root@192 redhat]# mount /dev/sr0 /mnt

DNS服务重启失败

1月 29 17:06:20 192.168.71.129 systemd[1]: Starting Berkeley Internet Name Domain (DNS)...
1月 29 17:06:20 192.168.71.129 bash[2769]: zone ./IN: NS ' ns.haha.com' has no address records (A or AAAA)
1月 29 17:06:20 192.168.71.129 bash[2769]: zone ./IN: not loaded due to errors.
1月 29 17:06:20 192.168.71.129 bash[2769]: _default/./IN: bad zone
1月 29 17:06:20 192.168.71.129 systemd[1]: named.service: Control process exited, code=exited, status=1/FAILURE
1月 29 17:06:20 192.168.71.129 systemd[1]: named.service: Failed with result 'exit-code'.
1月 29 17:06:20 192.168.71.129 systemd[1]: Failed to start Berkeley Internet Name Domain (DNS).

问题在主配置文件和区域配置文件

有关Linux系统中配置DNS服务器的更多相关文章

  1. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

    我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

  2. ruby - 具有身份验证的私有(private) Ruby Gem 服务器 - 2

    我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..

  3. ruby-on-rails - 独立 ruby​​ 脚本的配置文件 - 2

    我有一个在Linux服务器上运行的ruby​​脚本。它不使用rails或任何东西。它基本上是一个命令行ruby​​脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg

  4. ruby-on-rails - 启动 Rails 服务器时 ImageMagick 的警告 - 2

    最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru

  5. ruby-on-rails - s3_direct_upload 在生产服务器中不工作 - 2

    在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo

  6. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  7. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  8. ruby-on-rails - 在 Rails 中调试生产服务器 - 2

    您如何在Rails中的实时服务器上进行有效调试,无论是在测试版/生产服务器上?我试过直接在服务器上修改文件,然后重启应用,但是修改好像没有生效,或者需要很长时间(缓存?)我也试过在本地做“脚本/服务器生产”,但是那很慢另一种选择是编码和部署,但效率很低。有人对他们如何有效地做到这一点有任何见解吗? 最佳答案 我会回答你的问题,即使我不同意这种热修补服务器代码的方式:)首先,你真的确定你已经重启了服务器吗?您可以通过跟踪日志文件来检查它。您更改的代码显示的View可能会被缓存。缓存页面位于tmp/cache文件夹下。您可以尝试手动删除

  9. 电脑0x0000001A蓝屏错误怎么U盘重装系统教学 - 2

      电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。  准备工作:  1、U盘一个(尽量使用8G以上的U盘)。  2、一台正常联网可使用的电脑。  3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。  4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。  U盘启动盘制作步骤:  注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注

  10. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

随机推荐