IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux—DNS域名解析服务 -> 正文阅读

[系统运维]Linux—DNS域名解析服务


前言

整个互联网中连接了数以亿计的服务器、个人主机,其中大部分的网站、邮件等服务器都使用了域名形式的地址,比如 www.google.com 、mail.163.com 等。很明显这种格式的地址要比使用 64.233.189.147 的 IP 地址形式更加直观,而且更容易被用户记住。


一、BIND 域名服务基础

1.DNS 服务器及类型

1.1 DNS 服务器

  • 全世界只有13台 DNS 根服务器(这13台根域名服务器名字分别为 “A” 至 “w” ),1个为主根服务器在美国,其余12个均为辅根服务器,其中9个在美国,欧洲2个,位于英国和瑞典,亚洲1个位于日本。

  • DNS 的默认端口为53,分为TCP和UDP。

  • TCP 是用来做区域传送,多用于主从同步,在一个区中主 DNS 服务器从自己本机的数据文件中读取该区的 DNS 数据信息,而辅助 DNS 服务器则从区的主 DNS 服务器中读取该区的 DNS 数据信息。

  • UDP 是用来做 DNS 解析的

1.2 服务器类型

根据所管理的区域地址数据的来源不同,DNS系统可以分为不同的类型。在同一台DNS服务器中,相对于不同的区域来说,也拥有不同的身份。常见的几种类型如下:

  • 缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或指定其他 DNS服务器作为解析来源。

  • 主域名服务器:维护某一个特定 DNS区域的地址数据库,对其中的解析记录具有自主控制权,是指定区域中唯一存在的权威服务器、官方服务器。构建主域名服务器时,而要自行建立所负责区域的地址数据文件。

  • 从域名服务器:与主域名服务器提供完全相同的DNS解析服务,通常用于DNS服务器的热备份。

2. DNS 系统的分布式数据结构

  • 全域名是指同时带有主机名和域名的名称,如 www.baidu.com

  • 用树根的完整表述方式,从节点到树根采用反向书写,并将每个节点用 “.” 分隔

  • FQDN 有严格的命名限制,长度不能超过256字节,只允许使用字符a-z,0-9,A-Z 和减号 “-” 。

  • 点号 “.” 只允许在域名标志之间或者 FQDN 的结尾使用。

  • 域名不区分大小,由最顶层到下层,可以分成:根域、顶级域、二级域、子域,如下图

mark
示例

www.baidu.com.
www           #主机
.baidu	      #子域
.com	      #二级
.cn	          #顶级域
.	          #根域          

3.BIND 安装和配置文件

BIND 不是唯一能够提供域名服务的 DNS 服务程序,但它却是应用最为广泛的,可以运行在大多数 Linux/UNIX 主机中。

3.1 BIND的安装

软件包及功能如下

  • bind-9.9.4-37.el7.x86 64.rpm ——提供了域名服务的主要程序及相关文件。

  • bind-utils-9.9.4-37.el7.x86 64.rpm——提供了对DNS服务器的测试工具程序,如 nslookup 等

  • bind-libs-9.9.4-37.el7.x86_64.rpm ——提供了bind、bind-utils需要使用的库函数。

  • bind-chroot-9.9.4-37.el7.x86 64.rpm ——为 BIND服务提供一个伪装的根目录(将/var/named/chroot/文件夹作为BIND 服务的根目录),以提高安全性。

默认已安装 bind-utils 和 bind-libs,因此只需要安装 bind 和 bind-chroot 即可

[root@localhost ~]#yum install -y bind        #安装bind软件包

[root@localhost /]#rpm -qa |grep "^bind"      #查看是否已安装与bind相关的软件包
bind-license-9.11.4-26.P2.el7_9.5.noarch
bind-9.11.4-26.P2.el7_9.5.x86_64
bind-export-libs-9.11.4-26.P2.el7_9.5.x86_64
bind-libs-9.11.4-26.P2.el7_9.5.x86_64
bind-utils-9.11.4-26.P2.el7_9.5.x86_64
bind-libs-lite-9.11.4-26.P2.el7_9.5.x86_64

3.2 BIND服务控制

  • BIND 软件包安装完成以后会自动增加一个名为 named 的系统服务,通过 service工具可以控制 DNS 域名服务的运行。

  • 通过执行下面的操作可以开启、查询 named 服务

[root@localhost /var/named]#service named status       #查看服务状态
或者
[root@localhost /var/named]#systemctl status named     #查看服务状态
[root@localhost /var/named]#systemctl start named      #开启服务

3.3 BIND 服务的配置文件

  • 可以用下面的命令查询配置文件所在的位置
 [root@localhost ~]# rpm -qc bind
  • 主配置文件 named.conf 通常位于 /etc/ 目录下,named.conf 文件里主要包括全局配置和区域配置两个部分

全局配置

options {
        listen-on port 53 { 192.168.24.129; };                #监听地址和端口
#       listen-on-v6 port 53 { ::1; };                        #IPV6 一般不用 
        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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { any; };                             #允许使用的本DNS服务的网段(any代表所有)

区域配置

zone "benet.com." IN {                                        #正向“benet.com.”区域
        type master;                                          #类型为主区域
        file "benet.com.zone";                                #区域数据文件为 benet.com.zone
        allow-update { none; };                              
};

修改完主配置文件以后,可以执行 named-checkconf 命令对 named.conf 文件进行语法检查。如果文件中没有语法错误,该命令将不给出任何提示;反之,则会给出相应的提示信息,只要根据出错提示修正文件中的错误即可。

带“-z”选项的 named-checkconf 命令还可以尝试加载主配置文件中对应的区域数据库文件,并检查该文件是否存在问题。例如,当出现“…file not found”的错误时,表示找不到对应的文件。

  • 区域数据配置文件 named.localhost 通常位于 /var/named/ 目录下,每个区域数据文件对应一个 DNS 解析区域
$TTL 1D                                                    #有效解析记录生存周期
@       IN SOA  benet.com. admin.benet.com. (              #"@"符号表示当前的DNS区域名
                                        0       ; serial   #更新序列号,可以是10位以内的整数
                                        1D      ; refresh  #刷新时间,重新下教地址数据的间隔
                                        1H      ; retry    #重试延时,下教失败后的重试间隔
                                        1W      ; expire   #失效时间,超过该时间仍无法下载则放弃
                                        3H )    ; minimum  #无效解析记录的生存周期
        NS      benet.com.                                 #记录当前区域的DNS服务器的名称
        A       192.168.24.129                             #主机IP地址
IN    MX 10     mail.benet.com.                            #MX邮件交换记录,数字越大优先级越低
www  IN  A    192.168.24.129                               #正向解析对应的IP地址
mail IN A     192.168.24.30
ftp  IN CNAME  www                                         #CNAME使用别名,ftp是www的别名
*    IN  A     192.168.24.100                              #泛域名解析,“*"代表任意主机名  

注意:"benet.com. “为完全合格域名(FQDN),后面有个”."不能漏掉,否则无法解析

二、使用 BIND 构建域名服务器

1. 正向解析

基本步骤如下

关闭防火墙

systemctl stop firewalld

先挂载再安装 BIND 软件包

[root@localhost ~]#mount /dev/sr0 /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]#yum install -y bind
已安装:
  bind.x86_64 32:9.11.4-26.P2.el7_9.5                                                                                                                

作为依赖被安装:
  bind-export-libs.x86_64 32:9.11.4-26.P2.el7_9.5                                                                                                    

作为依赖被升级:
  bind-libs.x86_64 32:9.11.4-26.P2.el7_9.5       bind-libs-lite.x86_64 32:9.11.4-26.P2.el7_9.5      bind-license.noarch 32:9.11.4-26.P2.el7_9.5     
  bind-utils.x86_64 32:9.11.4-26.P2.el7_9.5      dhclient.x86_64 12:4.2.5-83.el7.centos.1           dhcp-common.x86_64 12:4.2.5-83.el7.centos.1     
  dhcp-libs.x86_64 12:4.2.5-83.el7.centos.1     

完毕!

配置主配置文件

[root@localhost ~]#vim /etc/named.conf
options {
        listen-on port 53 { 192.168.24.129; };                     #本地IP地址
#       listen-on-v6 port 53 { ::1; };                             #这里要注释掉IPV6行,不使用
        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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { any; };                                  #设置any代表允许所有解析的网段

:wq保存并退出

更改区域配置文件,添加正向解析的区域目标

[root@localhost /var/named]#vim /etc/named.rfc1912.zones 

......
};

zone "benet.com." IN {                      #正向解析的区域
        type master;
        file "benet.com.zone";              #指定文件为benet.com.zone
        allow-update { none; };
};

......
:wq保存并退出

备份配置文件

[root@localhost /var/named]#cd /var/named/                         #区域数据文件存放位置
[root@localhost /var/named]#ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
[root@localhost /var/named]#cp -p named.localhost benet.com.zone   #这里一定带上"-p"选项,保留权限
[root@localhost /var/named]#ls
benet.com.zone  data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves

配置正向区域数据文件

[root@localhost /var/named]#vim benet.com.zone 

$TTL 1D
@       IN SOA  benet.com. admin.benet.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      benet.com.
        A       192.168.24.129
IN    MX 10     mail.benet.com.
www  IN  A    192.168.24.129
mail IN A     192.168.24.30
ftp  IN CNAME  www
*    IN  A     192.168.24.100

:wq保存并退出

注意:配置的时候一定要再三检查格式,不要漏掉任何一个标点符号,比如"." !!!

修改客户端的域名解析配置文件,添加 DNS 服务器地址。

[root@localhost /var/named]#vim /etc/resolv.conf 
# Generated by NetworkManager
search localdomain
#nameserver 192.168.24.2                               #注释掉
nameserver 192.168.24.129                              #添加本地IP地址
~                            

启动 named 服务

[root@localhost /var/named]#systemctl start named      #开启服务
[root@localhost /var/named]#systemctl status named     #查看服务状态

验证解析

[root@localhost /var/named]#nslookup www.benet.com
Server:		192.168.24.129
Address:	192.168.24.129#53

Non-authoritative answer:
Name:	www.bene.com
Address: 85.13.130.6

[root@localhost /var/named]#nslookup mail.benet.com
Server:		192.168.24.129
Address:	192.168.24.129#53

Name:	mail.benet.com
Address: 192.168.24.30

[root@localhost /var/named]#nslookup aaab.benet.com
Server:		192.168.24.129
Address:	192.168.24.129#53

Name:	aaab.benet.com
Address: 192.168.24.100
  • host 命令也可以用来解析,例如
[root@localhost /]#host abc.benet.com

2. 反向解析

  • 这里是建立在上面正向解析基础上来进行配置的,主配置文件就不做修改了。

步骤如下

更改区域配置文件,添加反向解析的区域目标

[root@localhost /var/named]#vim /etc/named.rfc1912.zones 
zone "24.168.192.in-addr.arpa" IN {                    #这里填写地址的时候一定要注意不能多填或是少"."
        type master;
        file "benet.com.zone.local";
        allow-update { none; };
};

:wq保存并退出

备份

[root@localhost /var/named]#cp -p benet.com.zone benet.com.zone.local
[root@localhost /var/named]#ls
benet.com.zone  benet.com.zone.local  data  named.ca  named.empty  named.localhost  named.loopback  slaves

配置反向区域数据文件

[root@localhost /var/named]#vim benet.com.zone.local 
$TTL 1D
@       IN SOA  benet.com. admin.benet.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      benet.com.
        A       192.168.24.129
100  IN PTR      www.benet.com.

:wq保存并退出

重启服务

[root@localhost /var/named]#systemctl restart named

测试解析

[root@localhost /var/named]#host 192.168.10.100
Host 100.10.168.192.in-addr.arpa. not found: 3(NXDOMAIN)

3. 正向解析过程详解

3.1 解析过程

首先,客户机提交域名解析请求,并将该请求发送给本地的域名服务器:

①当本地的域名服务器收到请求后,先检查DNS服务器的缓存,若查到请求的地址或名字,即向客户机发出应答信息;

②若没有查到,则在数据库中查找,若查到请求的地址或名字,即向客户机发出应答信息;

③若没有查到,则将请求发给根域DNS服务器,并依序从根域查找顶级域,由顶级查找二级域,二级域查找三级,直至找到要解析的地址或名字,即向客户机所在网络的 DNS 服务器发出应答信息,DNS 服务器收到应答后先在缓存中存储,然后将解析结果发给客户机。

④若没有找到,则返回错误信息。

3.2 查询方式

① 递归查询

  • 递归查询是一种 DNS 服务器的查询模式,在该模式下 DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果 DNS 服务器本地没有存储查询 DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。

通俗来说就是客户机发送请求后自己只用等待结果即可,中间具体过程交给服务器实现。

② 迭代查询

  • DNS 服务器另外一种查询方式,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台 DNS 服务器地址,客户机再向这台 DNS 服务器提交请求,依次循环直到返回查询的结果为止。

大概意思就是客户机的请求需要自己挨个去查询才能得到结果,服务器没有结果时候只会给你提供其它服务器的地址,而不会帮你去请求查询,这与递归截然相反。

三、构建主从域名服务器

1. 从服务器作用

从服务器作为主 DNS 的备份服务器,为主服务器分担域名查询的压力,并且提供区域数据的备份。

2. 主从服务器的构建

  • 配置环境
    主服务器:192.168.24.129
    从服务器:192.168.24.128

  • 具体步骤如下

先配置主服务器

[root@localhost ~]# vim /etc/named.rfc1912.zones 

zone "benet.com." IN {
        type master;                                     #类型为主服务器
        file "benet.com.zone";
        allow-transfer { 192.168.24.128; };              #设置从服务器地址
};


};

zone "24.168.192.in-addr.arpa" IN {
        type master;                                 
        file "benet.com.zone.local";
        allow-transfer { 192.168.24.128; };          
[root@localhost ~]# vim /etc/resolv.conf 
# Generated by NetworkManager
#nameserver 192.168.24.2
nameserver 192.168.24.129
nameserver 192.168.24.128

配置从服务器

[root@localhost ~]#mount /dev/sr0 /mnt/                          #先挂载
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]#df -h

[root@localhost ~]#yum install -y bind                           #安装 BIND 包
[root@localhost ~]#cp -p /etc/named.conf /etc/named.conf.bak     #先进行备份


[root@localhost /]#vim /etc/named.conf                          #修改主配置文件

options {
        listen-on port 53 { 192.168.24.128; };
        listen-on-v6 port 53 { ::1; };
        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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { any; };



[root@localhost /]#vim /etc/named.rfc1912.zones                #修改区域配置文件

zone "benet.com" IN {
        type slave;                                            #类型设置为从服务器
        file "slaves/benet.com.zone";                          #指定数据文件
        masters { 192.168.24.129; };                           #指向主服务器IP地址
};

zone "24.168.192.in-addr.arpa" IN {
        type slave;
        file "slaves/benet.com.zone.local";
        masters { 192.168.24.129; };

};
:wq保存并退出  

到客户端的域名解析配置文件中添加从服务器地址

[root@localhost /]#vim /etc/resolv.conf 

# Generated by NetworkManager
search localdomain
#nameserver 192.168.24.2
nameserver 192.168.24.129
nameserver 192.168.24.128

重启 named 服务

[root@localhost /etc/named]#systemctl restart named

配置完以后关闭主服务,测试能否进行域名解析

到主服务器里关闭named服务,并解析
[root@localhost ~]# systemctl stop named
[root@localhost ~]# host www.benet.com
www.benet.com has address 192.168.24.129

总结:可以看到当主服务器的 named 服务关闭以后,一样是可以解析的。

四、构建分离解析的域名服务器

安装 bind 软件包

[root@localhost ~]#yum install -y bind

添加二块新网卡ens33 ens37
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

对网卡进行配置

[root@localhost ~]#cd /etc/sysconfig/network-scripts/
[root@localhost /etc/sysconfig/network-scripts]#vim ifcfg-ens33

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=d070a868-b0cc-4909-829f-5dcb4cda6ba0
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.20.21
NETMASK=255.255.255.0
[root@localhost /etc/sysconfig/network-scripts]#cp -p ifcfg-ens33 ifcfg-ens37



[root@localhost /etc/sysconfig/network-scripts]#vim ifcfg-ens37

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
#NAME=ens37
#UUID=d070a868-b0cc-4909-829f-5dcb4cda6ba0
DEVICE=ens37
ONBOOT=yes
IPADDR=10.0.0.101
NETMASK=255.255.255.0

查看网卡信息

root@localhost /etc/sysconfig/network-scripts]#systemctl restart network



[root@localhost /etc/sysconfig/network-scripts]#ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.20.21  netmask 255.255.255.0  broadcast 192.168.20.255
        inet6 fe80::88c5:1c37:ef02:f37f  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:d2:bb:c5  txqueuelen 1000  (Ethernet)
        RX packets 444  bytes 42749 (41.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 393  bytes 58207 (56.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.101  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::1be3:a624:9776:2f7b  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:d2:bb:cf  txqueuelen 1000  (Ethernet)
        RX packets 263  bytes 24145 (23.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 219  bytes 28810 (28.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

修改主配置文件

[root@localhost ~]#vim /etc/named.conf 

options {
        listen-on port 53 { any; };                                               
        listen-on-v6 port 53 { ::1; };
        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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { any; };                                                                 

:wq 保存退出

配置区域配置文件

[root@localhost ~]#vim /etc/named.rfc1912.zones 

view "lan" {
match-clients { 192.168.20.0/24; } ;
zone "benet.com" IN {
   type master;
   file "benet.com.zone.lan";
};

zone "." IN {
type hint;
file "named.ca";
};
};

view "wan" {
match-clients { any; };
zone "benet.com" IN {
type master;
file "benet.com.zone.wan";
};
};
:wq保存并退出

修改区域数据配置文件

[root@localhost ~]#cd /var/named/
[root@localhost /var/named]#ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
[root@localhost /var/named]#cp -p named.lo
named.localhost  named.loopback   
[root@localhost /var/named]#cp -p named.localhost benet.com.zone.lan
[root@localhost /var/named]#vim benet.com.zone.lan 

$TTL 1D
@       IN SOA  benet.com. admin.benet.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      benet.com.
        A       192.168.20.21
www  IN A       192.168.20.21
:wq保存退出
[root@localhost /var/named]#cp -p benet.com.zone.lan benet.com.zone.wan
[root@localhost /var/named]#vim benet.com.zone.wan 

$TTL 1D
@       IN SOA  benet.com. admin.benet.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      benet.com.
        A       10.0.0.101
www  IN A       10.0.0.101

:wq保存退出

内网验证

[root@localhost /var/named]#systemctl restart named
[root@localhost /var/named]#host www.benet.com
www.benet.com has address 10.0.0.101

进入虚拟机 Windows10 系统里更改配置验证外网能否解析

先把网卡改为 VMnet3
在这里插入图片描述

然后手动配置 IP 地址等信息
在这里插入图片描述

查看 IP 地址

在这里插入图片描述

在这里插入图片描述

从上面输出信息可以看出以外网的 IP 成功解析

总结

  • DNS 系统主要提供以下功能:根据域名查找IP地址(正向解析),根据IP地址查找域名(反向解析)。

  • 常见的 DNS 服务器类型包括:缓存域名服务器、主域名服务器、从域名服务器。

  • DNS 服务的配置文件主要包括:主配置文件 named.conf、各个解析区域的区域数据文件。

  • 分离解析的域名服务器实际也还是主域名服务器,可以根据不同的客户端提供不同的域名解析记录。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-30 12:34:54  更:2021-08-30 12:36:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 11:43:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码