• DNS的服务与部署(2)


    1、dns的安装及开启

    dnf install bind.x86_64 -y         #安装
    #Berkeley Internet Name Domain (BIND)

    systemctl enable --now named    #启用dns服务,服务名称叫named
    firewall-cmd --permanent --add-service=dns #火墙设置
    firewall-cmd --reload            #重启火墙
    setenforce 0                    #调整内核级火墙为警告模式

    2、配置dns服务使内网主机可以访问其dns资源

    netstat -antlupe | grep named                #可以查看dns开放端口

    vim /etc/named.conf                            #编辑dns配置文件,对文件做以下修改
    11行左右 listen-on port 53 { any; };         #在本地所有网络接口上开启53端口
    19行左右 allow-query { any; };                 #允许查询A记录的客户端列表,提供服务给所有主机
    20行左右 forwarders { 114.114.114.114; };    #将源换为国内的,指定资源从114上取,这样速度会快一点
    34行左右 dnssec-validation no;                 #禁用dns检测使dns能够缓存外部信息到本机,开着会因为检测不合规返回不了“答案”
    ##每一个字符串一定要用分号结尾

    systemctl restart named                        #重启服务

    使用内网其他主机测试:

    vim /etc/resolv.conf #编辑dns指向文件 nameserver 192.168.187.129

    #添加我们配置的dns服务器的ip dig www.baidu.com

    #解析测试我们的dns服务器配置是否成功

    显示NOERROR就是没有问题!

    3、DNS的正向解析

    企业内部也需要对外提供dns做相应的解析工作!
    准备工作:
    在上个高速缓存配置的基础上,先编辑主配置文件vim /etc/named.conf,将源注释掉

    然后使用命令nm-connection-editor将dns服务器在的主机和测试主机的ip都改为静态ip
    dns服务器的IP改成:192.168.187.129
    测试主机IP改为:192.168.187.136   

    修改配置并保存

    (1)主机记录A记录

    第一步:添加域名语句块

    vim /etc/named.rfc1912.zone
    ##和主配置文件里的内容一样,里边有要维护域名的语句块
    ##主配置文件读取域名信息就会到这个文件里读取
    ##我们可以在这个文件里添加我们要维护的域名的语句块
    添加:
    zone "lucky.com" IN {             #维护的域名
     type master;                     #当前服务器位主dns
     file "lucky.com.zone";         #域名A记录文件,要解析域名时看的是这个文件
     allow-update { none; };         #允许更新主机列表
    };

    第二步:编辑域名A记录文件

    cd /var/named/                #进入数据目录
    cp -p named.localhost lucky.com.zone        #复制模板得到我们要的域名A记录文件,一定要加-p参数,所属组相同

    vim lucky.com.zone            #编辑A记录文件

    A记录文件内容及解释如下:
    $TTL 1D #TIME-TO-LIVE(dns地址保存时间长度)
    @ IN SOA dns.lucky.com. root.lucky.com (         #SOA授权起始(Start of Authority),谁授权的
    #@符的值就是/etc/named.rfc1912.zone文件里我们编写的域名语句块引号里的内容
    #不是以.结尾的字符串都会被自动补齐@符的值
     0 ; serial             #域名版本序列号,下文dns集群会用到,有详细解释
     1D ; refresh             #刷新时间(辅助dns)
     1H ; retry             #重试时间(辅助dns)
     1W ; expire             #过期时间(辅助dns,查询失败过期停止对辅助域名的应答)
     3H ) ; minimum         #A记录最短有效期
             NS     dns.lucky.com.
    dns     A     192.168.187.129
    lucky.a A     192.168.187.97         ##正向解析记录
    lucky.a A     192.168.187.99

    复制并编辑A记录文件

    第三步:重启并在另一台内网主机测试
    systemctl restart named
    另一台主机先检查下dns服务器是不是我们设置的

    然后dig www.lucky.com,如图测试成功!
    ##多个ip会自动做轮调

    (2)规范域名转换CNAME记录

    当内部主机名不规范时,对外开放的是规范域名。
    那么对外开放的域名只有一个,将对外开放的域名转换到内部主机再做解析

    dns服务器端:
    vim /var/named/lucky.com.zone            #编辑A记录文件

    添加:
    www     CNAME   www.a.lucky.com.
    #www.a.lucky.com.就是不规范域名

    systemctl restart named        #重启dns

    客户端:
    dig www.lucky.com            #另一台主机测试

    编辑文件

    重启

    另一台主机测试,如图设置成功!

    (3)邮件解析MX记录

    什么是MX记录?
    当我们在发送邮件时,假设我们用的163.com邮箱,需要将163.com解析成ip才能进行数据传输,这个ip就叫这个域的mx记录(负责邮件发送和接收的ip)。

    dns服务器端

    vim /var/named/lucky.com.zone

    #编辑A记录文件 添加后保存退出:

    lucky.com. MX 1 192.168.187.129.

    systemctl restart named

    #重启dns

    添加时写的是服务器ip

    客户端:

    dnf install postfix mailx -y          #安装提供邮件投递协议的软件postfix和发送邮件的客户端mailx systemctl start postfix               #开启postfix服务 

    dig -t mx lucky.com                  #查看mx记录

    查看mx记录,没有问题

    发邮件给root@lucky.com(自行类比@qq.com)
    ##因为在dns服务器端25端口是自用的(回环),所以不会收到邮件,所以我们在测试端看发送队列看下效果即可
    ##如图即是正向解析成功

    4、DNS的反向解析

    逆向查询记录PTR记录

    什么是PTR记录?
    邮件接收方只会显示发送方的ip,需要做反向解析,显示真实的域名,让用户知道邮件从哪儿来的。从ip到域名就是ptr记录。

    dns服务器端

    vim /etc/named.rfc1912.zones            #编辑文件
    添加:
    zone "187.168.192.in-addr.arpa" IN {
            type master;
            file "192.168.187.ptr";
            allow-update { none; };
    };

    cd /var/named/
    cp -p named.loopback 192.168.187.ptr        #复制模板得到ptr文件

    vim 192.168.187.ptr                            #编辑ptr记录文件
    修改成下文:
    $TTL 1D
    @       IN SOA  dns.lucky.com. rname.invalid. (
                                            0       ; serial
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
            NS      dns.lucky.com.
    dns     A       192.168.187.129
    233     PTR     www.lucky.com.
    #反向解析IP192.168.187.233应该得到域名www.lucky.com

    systemctl restart named                        #重启

    编辑named.rfc1912.zones文件

    编辑ptr记录文件

    客户端:
    dig -x 192.168.187.233测试如图成功!

    5、DNS的双向解析


    双向解析:
    在内网中的主机解析得到内网的ip,
    在外网中的主机解析得到外网的ip。
    实验环境:
    我们需要一台双网卡主机模拟内网,一台单网卡主机模拟外网
    dns服务器端做内网主机:
    添加一个网卡,将ip设为192.168.0.0/24网段的
    原来的192.168.187.0/24网段的做内网ip

    单网卡主机做外网主机:
    ip改为192.168.0.0/24网段的,模拟外网主机,并且将网关设为dns服务器端192.168.0.0/24网段的ip,保证两台主机能相互通信

    两台主机更改完网络后都需重启网络

    nmcli connection reload

    nmcli connection up

    网络名 例如客户端网卡名为ens160,那么就是

    nmcli connection up ens160

    设置完后ping一下通了即可

    dns服务器端(内网主机):

    vim /etc/named.conf #编辑主配置文件

    将下图内容注释掉:

    注释掉后,在下边添加如下内容:
    view localnet {
            match-clients { 192.168.187.0/24; };
            zone "." IN {
                    type hint;
                    file "named.ca";
            };
            include "/etc/named.rfc1912.zones";
    };

    view internet {
            match-clients { any; };
            zone "." IN {
                    type hint;
                    file "named.ca";
            };
            include "/etc/named.rfc1912.zones.inter";
    };

    拷贝/etc/named.rfc1912.zones文件得到/etc/named.rfc1912.zones.inter文件
    cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.inter
    vim /etc/named.rfc1912.zones.inter        #编辑外网配置文件
    做如下图更改:

    拷贝A记录文件得到外网的A记录文件
    cp -p /var/named/lucky.com.zone /var/named/lucky.com.inter
    vim /var/named/lucky.com.inter        #编辑外网A记录文件
    做如下图更改:
    #把ip都改成我们想让外网主机访问时看到的ip

    重启systemctl restart named

    vim /etc/resolv.conf       #添加dns服务器

    ip nameserver 192.168.187.129

    #因为更改过网络,所以可能需要重新添加

    客户端(外网主机)

    vim /etc/resolv.conf                    #添加dns服务器

    ip nameserver 192.168.187.129    #因为更改过网络,所以可能需要重新添加

    测试:
    dns服务器端(内网主机):
    dig -x 192.168.187.233测试,如图显示的内网ip,成功!

    客户端(外网主机):
    dig -x 192.168.187.233测试,如图显示的外网ip,成功!

    6、DNS集群

    当我们的主dns服务器访问量过大时,服务器不足以支撑这么大的访问量,我们可以增加n台辅助dns来分担访问压力。
    我们下面以增加一台辅助dns来实验如何使主辅dns同步更新!

    辅助dns:


    我以上面用过的客户端主机为辅助dns
    先将其IP改为和主dns一个网段的,192.168.187.136

    更改完网络后需重启网络

    nmcli connection reload

    nmcli connection up ens160

    dnf install bind.x86_64 -y         #也安装dns
    #Berkeley Internet Name Domain (BIND)

    systemctl enable --now named    #启用dns服务,服务名称叫named
    firewall-cmd --permanent --add-service=dns #火墙设置
    firewall-cmd --reload            #重启火墙
    setenforce 0                    #调整内核级火墙为警告模式

    vim /etc/named.conf                #编辑主配置文件
    注释掉11,12,19行

    vim /etc/named.rfc1912.zones    #在文件中加入域名语句块
    添加:
    zone "lucky.com" IN {
            type slave;                #类型是辅助dns
            masters { 192.168.187.129; };    #主dns
            file "slaves/lucky.com.zone";    #数据同步到slaves目录下
    };

    编辑主配置文件注释掉如图三行,就相当于全部都开启(any)

    添加域名语句块

    vim /etc/resolv.conf

    nameserver 192.168.187.136    #将dns服务器改为自己的,为了看效果

    systemctl restart named    #重启dns服务

    主dns:


    我以上面配好的dns服务器192.168.187.129这台主机为主dns

    先去掉上个实验的配置,防止影响

    vim /etc/named.conf   

    #编辑主配置文件

    注释掉如下图内容:

    vim /etc/named.rfc1912.zones

    在域名语句块内添加如下内容:

    also-notify { 192.168.187.136; };   #辅助dns的ip

    systemctl restart named             #重启dns

    测试:
    辅助dns:
    dig www.lucky.com得到如图结果:

    主dns:

    vim /var/named/lucky.com.zone

    #编辑A记录文件 更改下ip和serial值:

    之后在辅助dns端重新dig看是否同步成功

    serial值的作用:
    每更改一次该值并重启主dns服务后,辅助dns就会重新同步A记录
    即重新同步域名所对应ip
    一天可以改99次
    值可以任意写!
    !!!!!但只能增量更改!!!!!

    其他值解释:
     1D ; refresh             #刷新时间(辅助dns)
     1H ; retry             #重试时间(辅助dns)
     1W ; expire             #过期时间(辅助dns,查询失败过期停止对辅助域名的应答)
     3H ) ; minimum         #A记录最短有效期

    辅助dns:
    dig www.lucky.com得到如图结果:
    测试成功!ip同步成功!

    DNS(DHCP+DNS)动态域名解析

    dhcp能自动分配ip,当重新分配时怎么让dns知道ip重新分配了呢?ddns可以解决这个问题,实现动态域名解析。
    更新原理:制作一个key,让dhcp能更新dns的A记录,key是更新域名的钥匙。
    在/var/named目录下生成一个更新数据,在系统读取A记录时会把.jnl结尾的更新文件与A记录文件整合实现。

    ddns服务端

    dnf install dhcp-server -y        #安装dhcp服务器
    cp /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf        #复制模板得到配置文件
    vim /etc/dhcpd/dhcpd.conf        #编辑dhcp配置文件
    做如下图修改:
    #修改最终结果是剩31行

    systemctl start dhcpd        #开启dhcp
    接下来制作更新域的“钥匙”key:
    #/etc/rndc.key是dns默认使用的key模板,用的是SHA-256加密,所以我们下面也要使用SHA-256加密
    cd /mnt/
    dnssec-keygen -a HMAC-SHA256 -b 128 -n HOST luckykey
    #SHA256加密方式是对称的,公钥和私钥是一样的

    cp -p /etc/rndc.key /etc/lucky.key        #复制key模板得到key文件
    vim /etc/lucky.key                        #编辑key文件
    改成如下内容:
    key "luckykey" {                        #我们前面取的key名字
            algorithm hmac-sha256;            #加密方式
            secret "/P/GVMVRb/dNIjtr2qYvMg==";        #我们前面生成的密钥,最好复制粘贴
    };

    vim /etc/named.conf         #更改dns主配置文件加key文件指向

    在第45行左右添加key文件指向:

    include "/etc/lucky.key";

    vim /etc/named.rfc1912.zones             #域名语句块在这里

    在域名语句块里添加key更新:

    如下图:

    systemctl restart named        #重启dns

    接下来测试一下该key能否更新dns:
    nsupdate -k Kluckykey.+163+37031.private        #-k指定key,不指定send会失败
    > update add hello.lucky.com 86400 A 192.168.187.111    #新增A记录
    > send                                                    #成功
    > update del hello.lucky.com                            #删除A记录
    > send                                                    #成功
    > quit                                                    #退出
    测试成功!继续下一步

    vim /etc/dhcp/dhcpd.conf             #编辑dncp配置文件

    打开dns更新的“开关”:
    第14行取消注释,并改为interim(网络更新):
    ddns-update-style interim;

    在最后指定key,相当于让dhcp拿到了dns更新的“钥匙”:
    key luckykey {                            #我们前面取得key的名字,别写错了
      algorithm hmac-sha256;
      secret /P/GVMVRb/dNIjtr2qYvMg==;        #最好直接复制前面我们生成的key文件里的防止出错
    };

    在最后加入key要更新的域:
    zone lucky.com. {
      primary 127.0.0.1;                    #dns在本机,所以直接写本机回环接口就可以了
      key luckykey;                            #我们前面取得key的名字,别写错了
    }

    删掉jnl文件(不然前面的更新测试会影响):

    rm -fr /var/named/lucky.com.zone.jnl

    重启两个服务:

    systemctl restart dhcpd

    systemctl restart named

    客户端:
    首先要关闭VM虚拟机的本地dhcp服务,如下图操作即可:
    ##如果是真机是linux系统直接在虚拟机里改配置文件即可

    选择更改设置

    取消勾选本地dhcp服务

    然后将我们之前设置的静态ip改为dhcp:

    nm-connection-editor

    测试下我们是否关闭本地dhcp成功:

    nmcli connection up ens160          #重启网卡

    cat /etc/resolv.conf        #看下dns服务用的谁的

    如图是用的我们自己配置的,设置成功!

    改下主机名方便测试:

    hostnamectl       #查看主机名 

    hostnamectl set-hostname nodeb.lucky.com      #改主机名为nodeb.lucky.com

    测试:
    客户端:

    dig    nodeb.lucky.com

    ifconfig     看两个出来的ip一样否

    如图是一样的

    dns服务端:

    vim /etc/dhcp/dhcpd.conf     #编辑dncp配置文件

    改一下ip范围:

    我改为了77-90,如下图:

    重启下dhcp服务: systemctl restart dhcpd

    客户端

    nmcli connection up ens160                #重启网卡,

    那么会重新获取ip

    dig nodeb.lucky.com

    ifconfig 看两个出来的ip一样否

    如图,重新获取的ip是我们上面重新设置的范围内的,dns解析也是同步的

    测试成功!

  • 相关阅读:
    vr虚拟现实游戏世界介绍|数字文化展览|VR元宇宙文旅
    Options Error: invalid boolean value
    【手撕DroneSSOD】(一)Density Crop Labeling 部分
    openGauss亮相1024程序员节,深度解读openGauss 5.1.0版本
    【C++】【LeetCode】【二叉树的前序、中序、后序遍历】【递归+非递归】
    接口测试Http协议下的Get和Post请求的区别
    Spark repartitionAndSortWithinPartitions
    【每日一题】找到出现了K次的数
    Java文件操作
    工厂方法模式 创建型模式之四
  • 原文地址:https://blog.csdn.net/weixin_42795092/article/details/139198139