DNS(一)

介绍

名字解析服务:当主机IP变化时,只要修改名称服务即可,用户仍可以通过原有的名称进行访问而不受影响。

本地名称解析配置文件:hosts

LInux中是 /etc/hosts Windows中是 C:\Windows\System32\drivers\etc\hosts

DNS:Domain Name System 域名系统,应用层协议,是互联网的一项服务,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网。基于C/S架构,服务器端口号53/udp,53/tcp

BIND:Bekerley Internet Name Domain,由ISC提供的DNS软件实现

域名由因特网域名与地址管理机构(ICANN,Internet Corporation for Assigned Names and Numbers)管理,这是为承担域名系统管理、IP地址分配、协议参数配置,以及主服务器系统管理等职能而设立的非盈利机构。

FQDN:完全限定域名。主机名+域名构成,最左边是主机名,其余是域名

DNS域名结构

顶级域名分类

|--------|------------------------------------------------------------------------------|
| 国家顶级域名 | .cn中国 .uk英国 .jp日本 .us美国 等 |
| 类别顶级域名 | .com、.top(企业)、.edu(教育机构)、.gov(政府机构)、.mil(军事部门)、.net(互联网及信息中心)、.org(非盈利性组织) 等 |

认识网址结构

域名可划分各个子域,子域可继续划分子域。

aaa.bbb.ccc.com.

其中 aaa 是四级域名,bbb 是三级域名,ccc 是二级域名,com 是顶级域名,. 是根域;

DNS查询类型

递归查询 迭代查询

名称服务器

Name Server,域内负责解析本域内的名称的DNS服务器

IPV4的根域名服务器:全球共13个负责解析根域的DNS服务器,美国10个,荷兰1个,瑞典1个,日本1个。

IPV6的根域名服务器:全球共25个,中国1主3从,美国1主2从

解析类型

正向解析:FQDN > IP

反向解析:IP > FQDN

正反向解析是两个不同的名称空间,是两颗不同的解析树

DNS查询过程

以访问 www.163.com 为例。这是我见过对DNS最通俗易懂的解释了

  1. 首先查找电脑上的 DNS 缓存列表,如果有记录,那么直接返回对应 IP 地址,否则进行下一步;

  2. 查找电脑上的 HOST 文件的映射关系,如果有记录,那么返回对应 IP 地址,否则进行下一步;

  3. 查找互联网线路供应商的本地 DNS 服务器(即中国电信、中国移动或中国联通),本地 DNS 服务器先查找自己的缓存记录,如果有记录,那么返回对应 IP 地址,否则本地 DNS 服务器向根域名服务器发送请求;

  4. 根域名服务器收到请求后,查看是 .com 顶级域名,于是返回 .com 顶级域名服务器的 IP 地址给到本地 DNS 服务器;

  5. 本地 DNS 服务器收到回复后,向 .com 顶级域名服务器发起请求;

  6. .com 顶级域名服务器收到请求后,查看是 .163.com 次级域名,于是返回 .163.com 次级域名服务器的 IP 地址给 DNS 服务器;

  7. 本地 DNS 服务器收到回复后,向 .163.com 次级域名服务器发起请求;

  8. .163.com 次级域名服务器收到请求后,查看是自己管理的域名,于是查看域名和 IP 地址映射表,把 www.163.com 的 IP 地址返回给本地 DNS 服务器;

  9. 本地 DNS 服务器收到回复后,向电脑回复域名对应 IP 地址,并把记录写入本地 DNS 服务器的缓存里;

  10. 电脑收到回复后,使用 IP 地址访问网站,并把记录写入电脑 DNS 缓存中。

DNS软件bind

DNS服务器软件:bind、powerdns,unbound

bind相关程序包

bind:服务器端

bind-libs:相关库

bind-utils:客户端

bind-chroot:安全包,将dns相关文件放至 /var/named/chroot/

相关文件

|---------------------------------------|-----------------------------------------------------------|
| /etc/named.conf | BIND的主配置文件,包含了整个DNS服务器的配置信息。它定义了域名空间、反向解析、区域设置、转发规则、负载均衡等 |
| /usr/sbin/named | BIND的主程序文件 |
| /var/named/named.ca | 包含根DNS服务器的信息 |
| /usr/lib/systemd/system/named.service | BIND的Unit文件 |
| /etc/rndc.conf | 可控制BIND开关、重载、刷新缓存,增删zone等操作。端口 953/tcp |
| /etc/named.rfc1912.zones | 配置DNS区域 |
| /var/named/ZONE_NAME.ZONE | 解析库文件 |

主配置文件

  • 全局配置:options {};
  • 日志子系统配置:logging {};
  • 区域定义:本机能够为哪些zone进行解析,就要定义哪些zone
    zone "ZONE_NAME" IN {};

注意:

  • 任何服务程序如果期望其能够通过网络被其它主机访问,至少应该监听在一个能与外部主机通信的IP地址上
  • 缓存名称服务器的配置:监听外部地址即可
  • dnssec: 建议关闭dnssec,设为no

主配置文件的语法检查:named-checkconf

配置生效:rndc reload

实现主DNS服务器

DNS服务器类型

主DNS服务器、从DNS服务器、缓存DNS服务器(转发器)

主DNS服务器

管理维护所负责解析的域内解析库的服务器

从DNS服务器

从主服务器或从服务器通过区域传输解析库副本

  • 序列号:解析库版本号,主服务器解析库变化时,其序列递增
  • 刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
  • 重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
  • 过期时长:从服务器联系不到主服务器时,多久后停止服务
  • 通知机制:主服务器解析库发生变化时,会主动通知从服务器

区域传输

完全传输:传送整个解析库

增量传输:传递解析库变化的部分

解析形式

正向解析:FQDN >>> IP

反向解析:IP >>> FQDN

负责本地域名的正向和反向解析库

正向区域 反向区域

解析答案

肯定答案:存在对应的查询结果

否定答案:请求的条目不存在等原因导致无法返回结果

权威答案:直接由存有此查询结果的DNS服务器(权威服务器)返回的答案

非权威答案:由其它非权威服务器返回的查询答案

资源记录格式

name [TTL] IN rr_type value

注意:

  1. TTL可从全局继承
  2. 使用 "@" 符号可用于引用当前区域的名字
  3. 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应
  4. 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机

各种资源记录

区域解析库:由众多RR组成

资源记录:Resource Record,即RR

记录类型:如下

  • SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录

    magedu.org. 86400 IN SOA ns.magedu.org. nsadmin.magedu.org. (
    2015042201
    2H
    10M
    1W
    1D
    )

    magedu.org. 域名
    86400 SOA记录生存时间,当前为24小时(86400秒)
    IN 固定写法
    SOA 记录类型,起始记录
    ns.magedu.org. 负责此域名的DNS服务器的域名
    nsadmin.magedu.org. 负责此域名的DNS服务器的管理员的电子邮箱地址,由于@具有特殊含义,所以是点.
    2015042201 SOA记录的序列号,每次SOA记录变更时,此值就会增加
    2H 刷新时间,主服务器发送DNS更新到所有从服务器的时间间隔;不加单位默认是秒
    10M 重试时间,主服务器在重试间隔时间内没有收到从服务器的确认,它将再次发送更新
    1W 过期时间,从服务器多久未收到主服务器的更新消息后,它才开始认为自己的信息可能已经过时
    1D 否定答案的TTL值,当一个查询请求得不到回答时,这个值定义了缓存这个"没有答案"的回答的时间

  • A:internet Address,作用,FQDN --> IP

    www.magedu.org. IN A IP地址
    *.magedu.org. IN A IP地址

  • AAAA:FQDN --> IPv6

  • PTR:PoinTeR,IP --> FQDN

    现有 www.magedu.org. 对应 1.2.3.4 ,PTR格式如下
    4.3.2.1.in-addr.arpa. IN PTR www.magedu.org.

    网络地址和后缀可省略,主机地址仍需倒着写,简写如下
    4 IN PTR www.magedu.org.

  • NS:Name Server,专用于标明当前区域的DNS服务器

    magedu.org. IN NS ns1.magedu.org.
    magedu.org. IN NS ns2.magedu.org.

    对NS记录而言,任何一个NS记录后面的服务器名字,都应该在后续有一个A记录
    一个区域可以有多个NS记录

  • CNAME : Canonical Name,别名记录

    www.magedu.org. IN CNAME websrv.magedu.org.

    比如京东 www.jd.com.gslb.qianxun.com. >>> www.jd.com.s.galileo.jcloud-cdn.com. >>> wwwv6.jcloudimg.com. >>> 115.231.223.3 最后才解析到IP
    [root@wenzi ~]# dig www.jd.com
    ...
    ;; QUESTION SECTION:
    ;www.jd.com. IN A

    ;; ANSWER SECTION:
    www.jd.com. 47 IN CNAME www.jd.com.gslb.qianxun.com.
    www.jd.com.gslb.qianxun.com. 47 IN CNAME www.jd.com.s.galileo.jcloud-cdn.com.
    www.jd.com.s.galileo.jcloud-cdn.com. 47 IN CNAME wwwv6.jcloudimg.com.
    wwwv6.jcloudimg.com. 47 IN A 115.231.223.3
    ...

  • MX:Mail eXchanger,邮件服务

    magedu.org. IN MX 10 mx1.magedu.org.

    一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;数字越小优先级越高
    对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录

允许动态更新

动态更新:可以通过远程更新区域数据库的资源记录

实现动态更新,需要在指定的zone语句块中配置

zone "域名" IN {

type master;

file "zone文件名";

allow-update { any; };

};

实验一:实现主DNS服务器

企业内部用的域名 magedu.org ,能解析企业内部所有以 magedu.org 为后缀的主机

|-------------------------------|-------------------------|
| 192.168.28.158 | DNS主服务器 |
| 192.168.28.156、192.168.28.141 | web服务器 |
| 192.168.28.143 | 用来访问www.magedu.org,验证结果 |

在DNS主服务器上创建一个解析 magedu.org 域的区域解析库

记录所有以 magedu.org 后缀的域与IP的对应关系;一个区域解析对应一个域名。

bash 复制代码
修改DNS服务器配置文件,设置监听端口范围和允许哪些主机可以使用此dns
[root@wenzi ~]# vim /etc/named.conf
options {
        listen-on port 53 { 127.0.0.1; localhost; };
        ...
        allow-query     { localhost; 192.168.28.0/24; };
        ...

进入解析库目录
[root@wenzi ~]# cd /var/named/
[root@wenzi named]# ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
利用现有文件生成所需文件
[root@wenzi named]# cp -a named.localhost magedu.org.zone
$TTL 1D    ;如果在第一行声明了 $TTL 1D,那么下面的所有记录都将使用这个TTL值,直到遇到新的 $TTL 声明或者区域结束为止。

;SOA记录
@       IN SOA  ns1 admin.magedu.org. (
                                        20231014        ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
;列出此区域的DNS服务器
@       IN NS  ns1.magedu.org.
;A记录,把主机名ns1映射到 192.168.28.158
ns1     IN A   192.168.28.158
;定义别名www的规范名称是websrv,同时websrv对应两个ip地址,可起到负载均衡作用
www     CNAME   websrv
websrv  A       192.168.28.156
websrv  A       192.168.28.141
*       A       192.168.28.156    ;泛域名,不是www.magedu.org且是magedu.org结尾都映射至此地址

使配置文件包含新增加的解析库,声明此区域

可看到 /etc/named.conf 配置文件中有 include "/etc/named.rfc1912.zones"; 建议将zone卸载此文件内,和配置文件区分开

bash 复制代码
[root@wenzi named]# vim /etc/named.rfc1912.zones
zone "magedu.org" IN {    格式:zone 域名 IN
        type master;      声明是主区域,其它服务器可来此查询区域数据
        file "magedu.org.zone";    包含区域数据的文件
};
...

校验语法

校验zone语法 named-checkzone 域名 区域文件路径

root@wenzi \~\]# named-checkzone magedu.org /var/named/magedu.org.zone

校验配置文件语法

root@wenzi \~\]# named-checkconf

配置web服务器

bash 复制代码
192.168.28.141上配置
[root@wenzi ~]# yum -y install httpd && systemctl start httpd && echo 'www.magedu.org --- 192.168.28.141' > /var/www/html/index.html

192.168.28.156上配置
[root@wenzi ~]# yum -y install httpd && systemctl start httpd && echo 'www.magedu.org --- 192.168.28.156' > /var/www/html/index.html

修改192.168.28.143网卡配置,使DNS指向DNS主服务器,然后验证

反向解析区域

反向区域:即将IP反向解析为FQDN

区域名称:网络地址反写 加 .in-addr.arpa.

如:192.168.28. >>> 28.168.192.in-addr.arpa. 表示反向解析192.168.28.开头的地址

在 /etc/named.rfc1912.zones 定义区域 192.168.28.zone

root@wenzi \~\]# vim /etc/named.rfc1912.zones zone "28.168.192.in-addr-arpa" IN { type master; file "192.168.28.zone"; };

定义 192.168.28.zone 内容,将192.168.28.199解析为www.magedu.com

root@wenzi named\]# vim 192.168.28.zone $TTL 1D @ IN SOA csPTR admin.magedu.org. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS csPTR.magedu.org. 199 IN PTR www.magedu.com.

测试

实现从服务器

  1. 应该为一台独立的名称服务器
  2. 主服务器的区域解析库文件中必须有一条NS记录指向从服务器
  3. 从服务器只需要定义区域,而无须提供解析库文件;解析库文件应该放置于/var/named/slaves/目录中
  4. 主服务器得允许从服务器作区域传送
  5. 主从服务器时间应该同步,可通过ntp进行
  6. bind程序的版本应该保持一致;否则,应该从高,主低

实验二:实现从DNS服务器

主DNS服务器

修改配置文件

root@wenzi named\]# vim /etc/named.conf options { listen-on port 53 { 127.0.0.1; localhost; }; ... allow-query { localhost; 192.168.28.0/24; }; allow-transfer { 192.168.28.156; }; 允许传输区域数据的主机,即从DNS;同时也有加密功能

定义区域

root@wenzi named\]# vim /etc/named.rfc1912.zones zone "wenzi.com" IN { type master; file "wenzi.com.zone"; };

定义区域解析库

root@wenzi named\]# vim wenzi.com.zone @ IN SOA wz admin.wenzi.com. ( 1 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS wz.wenzi.com. DNS主服务器 IN NS slave.wenzi.com. DNS从服务器 wz IN A 192.168.28.158 slave IN A 192.168.28.156

从DNS服务器

修改配置文件

root@wenzi named\]# vim /etc/named.conf options { listen-on port 53 { 127.0.0.1; localhost; }; ... allow-query { localhost; 192.168.28.0/24; }; allow-transfer { none; }; 允许传输区域数据的主机,此处为none,没有其它从DNS服务器从这里获取zone数据;同时也有加密功能 ...

定义区域文件

root@wenzi named\]# vim /etc/named.rfc1912.zones zone "wenzi.com" { type slave; 此处为slave,从DNS masters { 192.168.28.158; }; 指定主DNS服务器地址 file "slaves/wenzi.com.slave"; 传输过来的zone文件存放地址,默认在/var/named/slaves/目录下 };

测试主机添加两个dns,一个为主DNS服务器IP,一个为从DNS服务器IP;当启动从服务器DNS后,可见主DNS的 wenzi.com.zone 文件已同步过来了

root@wenzi named\]# ll /var/named/slaves/ total 4 -rw-r--r-- 1 named named 257 Oct 16 03:05 wenzi.com.slave \[root@wenzi \~\]# dig wz.wenzi.com @192.168.28.158 ; \<\<\>\> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.14 \<\<\>\> wz.wenzi.com @192.168.28.158 ;; global options: +cmd ;; Got answer: ;; -\>\>HEADER\<\<- opcode: QUERY, status: NOERROR, id: 26790 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;wz.wenzi.com. IN A ;; ANSWER SECTION: wz.wenzi.com. 86400 IN A 192.168.28.158 ;; AUTHORITY SECTION: wenzi.com. 86400 IN NS wz.wenzi.com. wenzi.com. 86400 IN NS slave.wenzi.com. ;; ADDITIONAL SECTION: slave.wenzi.com. 86400 IN A 192.168.28.156 ;; Query time: 0 msec ;; SERVER: 192.168.28.158#53(192.168.28.158) ;; WHEN: Mon Oct 16 03:20:17 CST 2023 ;; MSG SIZE rcvd: 111 \[root@wenzi \~\]# dig wz.wenzi.com @192.168.28.156 ; \<\<\>\> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.14 \<\<\>\> wz.wenzi.com @192.168.28.156 ;; global options: +cmd ;; Got answer: ;; -\>\>HEADER\<\<- opcode: QUERY, status: NOERROR, id: 58088 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;wz.wenzi.com. IN A ;; ANSWER SECTION: wz.wenzi.com. 86400 IN A 192.168.28.158 ;; AUTHORITY SECTION: wenzi.com. 86400 IN NS wz.wenzi.com. wenzi.com. 86400 IN NS slave.wenzi.com. ;; ADDITIONAL SECTION: slave.wenzi.com. 86400 IN A 192.168.28.156 ;; Query time: 0 msec ;; SERVER: 192.168.28.156#53(192.168.28.156) ;; WHEN: Mon Oct 16 03:21:39 CST 2023 ;; MSG SIZE rcvd: 111

修改主DNS的 wenzi.com.zone 文件,测试变化是否同步

root@wenzi \~\]# vim /var/named/wenzi.com.zone $TTL 1D @ IN SOA master admin.wenzi.com. ( 1 ; serial 变化时序列号一定要变化,不然从DNS检测不到变化 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS master.wenzi.com. IN NS slave.wenzi.com. master IN A 192.168.28.158 slave IN A 192.168.28.156 \[root@wenzi \~\]# dig master.wenzi.com @192.168.28.158 ; \<\<\>\> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.14 \<\<\>\> master.wenzi.com @192.168.28.158 ;; global options: +cmd ;; Got answer: ;; -\>\>HEADER\<\<- opcode: QUERY, status: NOERROR, id: 26790 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;master.wenzi.com. IN A ;; ANSWER SECTION: master.wenzi.com. 86400 IN A 192.168.28.158 ;; AUTHORITY SECTION: wenzi.com. 86400 IN NS master.wenzi.com. wenzi.com. 86400 IN NS slave.wenzi.com. ;; ADDITIONAL SECTION: slave.wenzi.com. 86400 IN A 192.168.28.156 ;; Query time: 0 msec ;; SERVER: 192.168.28.158#53(192.168.28.158) ;; WHEN: Mon Oct 16 03:20:17 CST 2023 ;; MSG SIZE rcvd: 111 \[root@wenzi \~\]# dig master.wenzi.com @192.168.28.156 ; \<\<\>\> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.14 \<\<\>\> master.wenzi.com @192.168.28.156 ;; global options: +cmd ;; Got answer: ;; -\>\>HEADER\<\<- opcode: QUERY, status: NOERROR, id: 58088 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;master.wenzi.com. IN A ;; ANSWER SECTION: master.wenzi.com. 86400 IN A 192.168.28.158 ;; AUTHORITY SECTION: wenzi.com. 86400 IN NS master.wenzi.com. wenzi.com. 86400 IN NS slave.wenzi.com. ;; ADDITIONAL SECTION: slave.wenzi.com. 86400 IN A 192.168.28.156 ;; Query time: 0 msec ;; SERVER: 192.168.28.156#53(192.168.28.156) ;; WHEN: Mon Oct 16 03:21:39 CST 2023 ;; MSG SIZE rcvd: 111

停止主DNS的named服务,rndc stop ,测试从DNS是否起作用

root@wenzi \~\]# dig master.wenzi.com ; \<\<\>\> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.14 \<\<\>\> master.wenzi.com ;; global options: +cmd ;; Got answer: ;; -\>\>HEADER\<\<- opcode: QUERY, status: NOERROR, id: 13481 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;master.wenzi.com. IN A ;; ANSWER SECTION: master.wenzi.com. 86400 IN A 192.168.28.158 ;; AUTHORITY SECTION: wenzi.com. 86400 IN NS master.wenzi.com. wenzi.com. 86400 IN NS slave.wenzi.com. ;; ADDITIONAL SECTION: slave.wenzi.com. 86400 IN A 192.168.28.156 ;; Query time: 0 msec ;; SERVER: 192.168.28.156#53(192.168.28.156) ;; WHEN: Mon Oct 16 03:32:10 CST 2023 ;; MSG SIZE rcvd: 111

访问到的DNS是从DNS,已生效。

DNS转发(缓存)

利用DNS转发,可以将用户的DNS请求,转发至指定的DNS服务器,而非默认的根DNS服务器,并将指定服务器查询的返回结果进行缓存,提高效率。

注意:

  1. 被转发的服务器需要能够为请求者做递归,否则转发请求不予进行
  2. 在全局配置块中,关闭dnssec功能

dnssec-enable no;

dnssec-validation no;

转发方式

对非本机所负责解析区域的请求,全转发给指定的服务器

在全局配置块中实现:

复制代码
Options {
        forward  first|only;
        forwarders { ip;};
};
8.2.2 特定区域转发

仅转发对特定的区域的请求,比全局转发优先级高

复制代码
zone "ZONE_NAME" IN {
    type forward;
    forward  first|only;
    forwarders { ip;};
};

first:先转发至指定DNS服务器,如果无法解析查询请求,则本服务器再去根服务器查询

only: 先转发至指定DNS服务器,如果无法解析查询请求,则本服务器将不再去根服务器查询

相关推荐
敖云岚5 分钟前
【Linux】Centos7 安装 Docker 详细教程
linux·运维·服务器
北陌宝宝19 分钟前
Jenkins:开启高效软件开发的魔法之门
运维·jenkins
JhonKI26 分钟前
【Linux网络】构建HTTP响应与请求处理系统 - HttpResponse从理解到实现
linux·网络·http
文牧之40 分钟前
PostgreSQL 常用日志
运维·数据库·postgresql
蓝莓味柯基1 小时前
DevOps:概念与学习路径
运维·学习·devops
FJW0208141 小时前
【Linux】web服务器的部署和优化
linux·运维·服务器·rhce
Linux运维老纪1 小时前
Python文件操作及数据库交互(Python File Manipulation and Database Interaction)
linux·服务器·数据库·python·云计算·运维开发
weixin_430750931 小时前
智能小助手部署 Win10 + ollama的Deepseek + CentOS+ maxKB
linux·人工智能·机器学习·语言模型·自然语言处理·centos
有谁看见我的剑了?1 小时前
docker 运行时权限和 Linux 能力了解
linux·docker·容器
平生不喜凡桃李1 小时前
Linux 进程控制
linux·运维·服务器