Linux-------------DNS域名解析:正反解析

DNS简介

域名管理系统DNS(Domain Name System)是域名解析服务器的意思,应用层协议,是互联网的一项服务。它在互联网的作用是:把域名转换成网络可以识别的ip地址,在通过IP地址访问主机。 这种由文字组成的名称,显而易见要更容易记忆。
鉴于互联网中的域名和ip地址对应关系数据库太过庞大,DNS域名解析服务采用了类似目录树的层次结构来记录域名与ip地址直接的关系,如下图
在这里插入图片描述
为了降低用户访问网络资源的门槛,DNS技术由此产生,这是一个用于管理和解析域名与ip地址对应关系的技术,简单来说就是能用接受用户输入的域名或ip地址,然后自动查询进行匹配(映射关系)的ip地址或域名,即将域名解析为ip地址(正向解析),或将ip地址解析为域名(反向解析),这样我们只需要在浏览器输入域名就能打开想要访问的网站了。

前期准备

首先需要先进行网卡的配置,网卡配置目录:/etc/sysconfig/netword-scripts目录中,由于每台设备的硬件架构不一样,需根据自己的网卡名称进行配置,这里我的网卡名称为:ens33,具体配置如下,复制时需将:

TYPE=Ethernet           //设备类型
BOOTPROTO=static        // 地址分配模式
NAME=ens33               //网卡名称
ONBOOT=yes               //是否启动
IPADDR=192.168.10.100    //ip地址
NETMASK=255.255.255.0    //子网掩码
GATEWAY=192.168.10.1     //网关地址
DNS1=192.168.10.100     //DNS地址,这里之所以和ip地址一样,是为了后续配置方便,不容易出错
                 

完成了网卡配置之后对网卡进行重启:systemctl restart network,重启完成之后没有报错即配置成功,最后可以用ifconfig查看一下
在这里插入图片描述
综上网卡已成功配置成功,接下来安装一下bind(域名解析服务程序),使用:yum install bind*进行安装,最后会提示安装成功,如若不能安装可能是yum没有正确的进行配置,可以查看之前发的apache文章。
在这里插入图片描述
成功安装bind之后就可以正式开始配置了,在这之前要知道的是在bind服务程序中有三个比较重要的文件:

主配置文件(/etc/named.conf):用于定义bind服务程序的运行。
区域配置文件(/etc/named.rfc1912.zones):用于保存域名和ip地址对应关系所在位置,对应着每个域和相应ip所在的具体位置,当需要查看或者修改时可以找到相关文件。
数据配置文件目录(/var/named):这个目录用来保存域名和ip地址真实对应关系的数据配置文件

接下里开始配置,首先我们需要进入主配置文件:/etc/named.conf,然后将11行和17行的地址都改成any,这两行分别表示服务器上的所有ip地址均可提供DNS域名解析服务,以及所有人都可以对本服务器发送DNS查询请求,如下图是修改后的
在这里插入图片描述
以上就已经完成了前期的准备工作,接下来正式进入正方解析的实验

正方解析实验

正向解析实验

首先第一步我们需要编辑区域配置文件,该文件默认有很多东西,这里可以选择将默认的东西全部删除只留下自己的参数,也可以选择将自己参数添加到配置文件的最下面
进入 vim /etc/named.rfc1912.zones 下,添加以下参数,

zone “hahaha.com” IN {
type master;
file"hahaha.com.zone"; //后续要创建的文件
allow-update { none; };
};

bind软件有自带的实例,我们直接将name.localhost复制一份即可,然后修改里面的参数
在这里插入图片描述
将复制的配置文件进行修改,如下:

$TTL 1D
@       IN SOA  hahaha.com. rname.invalid. (        //注意com后有一个点:.    
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      hahaha.com.             //这后面也有一个点:.
@       A       192.168.10.100           
mail    IN A    192.168.10.101      //正向解析,通过前面的网址解析后面的ip地址
www     IN A    192.168.10.102

修改完这些配置之后,需要重启一下named:systemctl restart named,不报错即成功运行,最后使用nslookup检验一下是否可以成功解析
在这里插入图片描述
如图所示,成功解析成功,以上就是正向解析的全部内容,反向解析也只需要稍微更改一下即可。

反向解析实验

进入 vim /etc/named.rfc1912.zones 下,添加反向解析的参数
反向解析是将ip地址解析成域名,因此在定义区域时应把ip地址反写,比如原来是192.168.10.0,反写之后就是10.168.192,只需要写出ip地址的网络位即可。

zone "10.168.192.in-addr.arpa" IN {         
        type master;
        file"hahaha.com.zone";         //这里的正向解析和方向解析放至同一个文件,也可以为反向解析重新创建一个
        allow-update { none; };
};

接下来进入你复制的文件内:hahah.com.zone内进行添加

$TTL 1D
@       IN SOA  hahaha.com. rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      hahaha.com.
@       A       192.168.10.100 
mail    IN A    192.168.10.101             //正向解析
WWW     IN A    192.168.10.102             //正向解析
10      PTR     www.hahaha.com.             //这里是反向解析
10      PTR     mail.hahaha.com.            //前面的10是你输入的ip地址例如:192.168.100.10即可解析后面的网址
20      PTR     bbs.hahaha.com.            //输入192.168.100.20进行解析

最后使用nslookup进行解析
在这里插入图片描述
输入192.168.10.10时成功解析两个网址,如上图所示解析对应的网址,DNS方向解析实验完成

常见错误

修改resolv.conf

进入vim /etc/resolv.conf进行修改为自己的ip地址
在这里插入图片描述

修改hostname

进入:vim /etc/hostname 进行添加修改
在这里插入图片描述

检查DNS是否为ip地址

TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.10.100
NETMASK=255.255.255.0
GETWAY=192.168.10.1
DNS1=192.168.10.100     //这里和ip地址一致
NAME=ens33
ONBOOT=yes

归纳总结

以上就是DNS的全部内容,过程中可能会出现很多问题,需自己慢慢领会,在配置时需要细心,很多时候都是标点符号的问题,所有一定要认真认真认真,多进行几次配置即可熟练掌握。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: 这个错误是由于两个数组的形状不兼容导致的。其中一个数组的形状是(none, 1),另一个数组的形状是(none, 2)。这意味着它们的行数相同,但列数不同。在某些情况下,这可能是由于数据类型不匹配或数据维度不正确引起的。您需要检查数据并确保它们具有相同的形状和数据类型。如果需要,您可以使用numpy库中的reshape函数来更改数组的形状。 ### 回答2: ValueError: shapes (None, 1) and (None, 2) are incompatible。是Python语言中常见的错误,通常出现在人工智能、机器学习等领域。这个错误提示显示的是两个数组的形状(Shapes)不兼容。简单来说,就是指两个数组的维度不一致,无法进行运算。 其中,None代表的是数组的尺寸,意味着这个维度大小可以被任意赋值,但是两个数组在某些维度上的大小是不匹配的。这个问题通常可以通过改变数组形状或对数组进行重新组合来解决。 实际上,这个错误可能涉及到函数、方法、操作、层、参数等各种因素。其中,常见的原因是两个数组中的一部分维度大小不匹配、缺少数据或维度没有进行扩展等。在解决这个错误的过程中,需要认真检查代码中涉及到的所有参数和变量,特别是需要仔细检查数组的形状、大小和数据类型是否匹配。 在数据科学领域中,这个错误通常会出现在机器学习的模型训练和预测过程中。如果两个数组的维度不匹配,可能会导致无法正常训练模型或预测出错。因此,在使用Python进行数据处理和机器学习的过程中,需要注意数组的形状和大小,以避免这个错误的出现。 总之,ValueError: shapes (None, 1) and (None, 2) are incompatible。这个错误提示意味着两个数组的形状不兼容,需要进行调整和匹配才能进行运算。在处理数据和编写代码时需要认真检查数据的大小、形状和类型,以避免这个错误的出现。 ### 回答3: 这个错误是由于两个numpy数组的形状不兼容而导致的。在 numpy 中,数组的形状是非常重要的,不同的形状可以产生不同的结果,如果两个数组的形状不兼容,就会出现这种 ValueError。 首先我们需要了解一下 numpy 数组的形状。在 numpy 中,数组的形状通常由两个属性组成:维度和大小。维度表示数组的维度数量,大小表示每个维度上的元素数量。比如一个二维数组的形状可以表示为 (3, 4),其中 3 表示该数组有 3 个维度,4 表示每个维度上有 4 个元素。 在出现 "shapes (none, 1) and (none, 2) are incompatible" 的错误时,通常是因为两个数组的形状在维度数量或者每个维度上的元素数量上不匹配。其中, (none, 1) 表示第一个数组的形状为一维数组,大小为 none 表示元素数量未知,后面的 1 表示每个维度上有 1 个元素。同理,(none, 2) 表示第二个数组的形状为一维数组,大小为 none 表示元素数量未知,后面的 2 表示每个维度上有 2 个元素。 针对这种错误,我们需要检查一下代码中两个数组的形状是否一致。如果不一致,我们需要进行相应的修改,使它们的形状兼容。具体的做法可以通过 numpy 提供的一些数组操作函数来实现,比如 reshape()函数可以改变数组的形状, concatenate()函数可以将两个数组拼接在一起,等等。 在解决这个错误时,我们还需要注意一些细节,比如 numpy 中不同操作函数对数组形状的要求可能会有所不同,我们需要根据具体情况进行选择。此外,我们还需要注意避免在操作数组时出现类型不一致的错误,比如将字符串类型的数组和浮点类型的数组进行拼接,这也可能会导致 ValueError 错误的出现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是念念i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值