云计算-----第五周


1. 总结rocky 系统的启动流程,grub工作流程

        1.rocky启动流程

                1. 加载BIOS的硬件信息,获取第一个启动设备

                2. 读取第一个启动设备MBR的引导加载程序(grub)的启动信息

                3. 加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备

                4. 核心执行init程序,并获取默认的运行信息

                5. init程序执行/etc/rc.d/rc.sysinit文件,重新挂载根文件系统

                6. 启动核心的外挂模块

                7. init执行运行的各个批处理文件(scripts)

                8. init执行/etc/rc.d/rc.local

                9. 执行/bin/login程序,等待用户登录

                10. 登录之后开始以Shell控制主机

        2.grub工作流程

                1.Stage1阶段

                        1.系统启动装载stage2

                2.Stage1.5阶段

                        1.GRUB访问/boot分区grub目录下得stage2文件,将stage2载入内存并执行

                3.Stage2阶段

                        1.解析grub的配置文件/boot分区下/grub/grub.conf

                        2.显示操作系统启动菜单

                        3.加载内核镜像到内存

                        4.通过/boot/initrd开头文件建立虚拟DAM DISK虚拟文件系统

                        5.转交给内核


2. 总结awk工作原理,awk命令,选项,示例。

        1.awk工作原理

                1. 执行BEGIN{action;… }语句块中的语句

                2. 从文件或标准输入(stdin)读取一行,然后执行pattern{ action;… }语句块,它逐行扫描

                文件,从第一行到最后一行重复这个过程,直到文件全部被读取完毕。

                3. 当读至输入流末尾时,执行END{action;…}语句块

        2.awk

                1.命令

awk [options]  'program' var=vlue  file…
awk [options]  -f programfile   vr=vlue fil…

#常用选项
-f progfile|--file progfile	        #从文件中读入program
-F fs|--field-separator fs	        #指定分隔符,默认是空白符,可以指定多个
-v var=val|-asign var=val	        #设置变量

           2. program

格式
pattern{action statements;..}

pattern                      #定义条件,只有符合条件的记录,才会执行后面的action
action statements            #处理数据的方式,常见如 print,printf等

用法
program 通常放在单引号中,由三部份组成,分别是BEGIN{}[pattern]{COMMAND}END{},这三部份可以没有或都有

awk '' /etc/issue

awk 'BEGIN{print "begin"}' /etc/issue awk '{print $0}'	/etc/issue
awk 'END{print "end"}'	/etc/issue

awk 'BEGIN{print "begin"}{print $0}END{print "end"}'   /etc/issue



        3.awk 变量

                1.内置变量

常用内置变量

FILENAME	            当前文件名
FS	                    字段分隔符,默认为空白字符,功能相当于 -F
RS	                    换行符,用于分割指定文件的行,默认是换行符
OFS	                    输出字段分隔符,默认为空白字符
ORS	                    输出换行符,输出时用指定符号代替换行符
OFMT	                数字的输出格式,默认值是%.6g
NF	                    一条记录的字段数量
NR	                    已经读出的记录数,就是行号,从1开始
FNR	                    各文件分别记录行号
ARGC	                命令行参数的个数
ARGV	                数组,保存的是命令行所给定的各参数,每一个参数:ARGV[0],...... ,ARGV[n]

示例
FILENAME:
#begin中拿不到FILENAME
awk 'BEGIN{print FILENAME}' ./dmwj
[root@ubuntu ~]$  awk 'BEGIN{print FILENAME}{print "text"}END{print FILENAME}' /etc/issue

text
text
/etc/issue

FS:
[root@ubuntu ~]$  awk -v FS=":" 'BEGIN{print FS}{print $1,$1}' /etc/passwd
:
root root
daemon daemon
bin bin
sys sys

RS:
[root@ubuntu ~/csml]$  cat -A wbsj 
a s d;1 2 3;A S D;$
[root@ubuntu ~/csml]$  awk '{print $0}' wbsj 
a s d;1 2 3;A S D;
[root@ubuntu ~/csml]$  awk -v RS=";" '{print $0}' wbsj 
a s d
1 2 3
A S D


[root@ubuntu ~/csml]$  

OFS:
[root@ubuntu ~/csml]$  awk -v FS=":" '{print $1,$3}' /etc/passwd
root 0
daemon 1
bin 2
sys 3
sync 4
[root@ubuntu ~/csml]$  awk -v FS=":" -v OFS="---" '{print $1,$3}' /etc/passwd
root---0
daemon---1
bin---2
sys---3
sync---4

ORS:
[root@ubuntu ~/csml]$  cat -A wbsj 
a s d$
1 2 3$
A S D$
[root@ubuntu ~/csml]$  awk '{print $0}' wbsj 
a s d
1 2 3
A S D
[root@ubuntu ~/csml]$  awk -v ORS="---" '{print $0}' wbsj 
a s d---1 2 3---A S D---[root@ubuntu ~/csml]$  

OFMT:
awk 'BEGIN awk 'BEGIN{PI=3.1415926;print PI;OFMT="%.1g";print PI;OFMT="%.2g";print PI;OFMT="%.8g";print PI;OFMT="%.8f";print PI}'
3.14159
3
3.1
3.1415926
3.14159260

NF:
[root@ubuntu ~/csml]$  awk -v FS=":" '{print NF}' /etc/passwd
7
7
7
7
[root@ubuntu ~/csml]$  awk -v FS=":" '{print $NF}' /etc/passwd
/bin/bash
/usr/sbin/nologin
/usr/sbin/nologin

NR:
[root@ubuntu ~/csml]$  awk '{print NR,$0}' /etc/issue
1 Ubuntu 22.04 LTS \n \l
2 

FNR:
[root@ubuntu ~/csml]$  awk '{print NR,FNR,$0}' /etc/issue /etc/os-release 
1 1 Ubuntu 22.04 LTS \n \l
2 2 
3 1 PRETTY_NAME="Ubuntu 22.04 LTS"
4 2 NAME="Ubuntu"
5 3 VERSION_ID="22.04"
6 4 VERSION="22.04 (Jammy Jellyfish)"
7 5 VERSION_CODENAME=jammy
8 6 ID=ubuntu
9 7 ID_LIKE=debian
ARGC:
[root@ubuntu ~/csml]$  awk 'BEGIN{print ARGC}'
1
[root@ubuntu ~/csml]$  awk 'BEGIN{print ARGC}' /etc/issue
2
[root@ubuntu ~/csml]$  awk 'BEGIN{print ARGC}' /etc/issue /etc/passwd
3

ARGV:
[root@ubuntu ~]$  awk 'BEGIN{print ARGC,"---",ARGV[0],"---",ARGV[1],"---",ARGV[2],"---",ARGV[3]}' /etc/issue /etc/os-relaease
3 --- awk --- /etc/issue --- /etc/os-relaease --- 

                2.自定义变量两种

                        1.AWK中的自定义变量命名要区分大小写

用 -v 选项定义自定义变量
[root@ubuntu ~]$  awk -v va=asd 'BEGIN{print va}'
asd

在program中定义
[root@ubuntu ~]$  awk -v va=asd 'BEGIN{print va;va=qwe; print va}'
asd
#rocky定义的时候要加双引号
[root@rocky86 ~]# awk -v var1=abc 'BEGIN{print var1;var1="def"; print var1}{print 
var1}' /etc/redhat-release 
abc
def
def


3. 打印/etc/passwd的奇数行

[root@ubuntu ~]$  awk 'NR % 2 == 1' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
systemd-resolve:x:102:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
systemd-timesync:x:104:105:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
sshd:x:106:65534::/run/sshd:/usr/sbin/nologin
uuidd:x:108:114::/run/uuidd:/usr/sbin/nologin
tss:x:110:116:TPM software stack,,,:/var/lib/tpm:/bin/false
usbmux:x:112:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin
lxd:x:999:100::/var/snap/lxd/common/lxd:/bin/false
avahi:x:114:120:Avahi mDNS daemon,,,:/run/avahi-daemon:/usr/sbin/nologin
pulse:x:116:122:PulseAudio daemon,,,:/run/pulse:/usr/sbin/nologin


4. 打印Linux系统的"IP地址,系统版本,CPU核心,内存大小"

#!/bin/bash
echo "IP地址:$(ip -br -4 addr | awk '!/lo/{print$3}')"
echo "系统版本:$(awk -F= '/PRETTY_NAME/{print$2}' /etc/os-release | tr -d '"')"
echo "CPU核心数:$(lscpu | awk '/^CPU\(s\)/{print$2}')"
echo "内存大小:$(awk '/MemTotal/{print$2,$3}' /proc/meminfo )"
[root@ubuntu ~/dmwj]$  ./awk.sh 
IP地址:10.0.0.152/24
系统版本:Ubuntu 22.04 LTS
CPU核心数:2
内存大小:1973912 kB                         


5. 在文本的所有行前加序号

[root@ubuntu ~]$  awk '{print NR$0}' /etc/passwd
1root:x:0:0:root:/root:/bin/bash
2daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
3bin:x:2:2:bin:/bin:/usr/sbin/nologin
4sys:x:3:3:sys:/dev:/usr/sbin/nologin
5sync:x:4:65534:sync:/bin:/bin/sync
6games:x:5:60:games:/usr/games:/usr/sbin/nologin
7man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
8lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
9mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
10news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
11uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin


6. 统计某个文件夹下的文件占用的字节数。

[root@ubuntu ~]$  ls -l ./dmwj | awk '!/^total/{i+=$5}END{print i}' 
1707


7. 总结内核设计流派及特点。

        1.基本设计流派

                1.单内核

                        1.特点

                                1.所有核心功能(进程调度、内存管理、文件系统等)集成在内核空间,通过

                                函数调用直接交互。

                        2.优劣

                                1.性能高,子系统调用无通信开销;Linux 虽为单内核,但通过模块化

                                (.ko 文件)支持动态加载驱动和功能,兼具灵活性。代码耦合度高,单一模

                                块故障可能导致系统崩溃;扩展性受限。

                2.微内核

                        1.特点

                                1.仅保留最基础功能(进程通信、地址空间管理),其他服务(文件系统、驱

                                动)作为用户态进程运行,通过 IPC 通信。

                        2.优劣

                                1.高可靠性和可维护性,服务崩溃不影响内核;易扩展和移植。IPC 通信开销

                                大,性能低于单内核;典型代表如 L4 微内核、QNX。

                3.混合内核

                        1.特点

                                1.结合单内核与微内核优点,核心功能保留在内核态,部分服务移至用户态。


8. 总结systemd服务配置文件

        1.Unit

                1.unit表示不同类型的systemd对象,通过配置文件进行标识和配置;

                2.文件中主要包含了系统服务、监听socket、保存的系统快照以及其它与init相关的信息

                1.unit类型

unit类型      后缀                   作用
service     .service       定义系统服务
socket      .socket        定义进程间通信用的socket文件,可以延迟启动,按需启动
target      .target        不同服务的集合,用于模拟运行级别
device      .device        用于定义内核识别的设备
mount       .mount         定义文件系统挂载点
automount   .automount     文件系统的自动挂载点
swap        .swap          用于标识swap设备
timer       .timer         用于安排激活另一个单元的计时器
path        .path          用于定义文件系统中的文件或目录,常用于当文件系统变化时,
延迟激活服务,如spool 目录

slice       .slice         通过 Linux 控制组节点 (cgroups) 限制资源
scope       .scope         systemd 总线接口的信息,常用于管理外部系统进程

                2.unit的配置文件

/usr/lib/systemd/system/   #每个服务最主要的脚本文件目录,类似于之前的/etc/init.d/
/run/systemd/system/       #系统执行过程中所产生的服务脚本,比上面目录优先运行
/etc/systemd/system/       #管理员建立的执行脚本,类似于/etc/rcN.d/Sxx的功能,比上面目录优先运行

                3.字段说明

字段                        说明
UNIT                服务名称
LOAD                加载状态 loaded|not-found|bad-setting|error|masked
ACTIVE              服务状态 active|reloading|inactive|failed|activating|deactivating
SUB                 详细状态,与 LOAD和ACTIVE列有关,具体可执行 systemctl --state=help 查看
DESCRIPTION         unit 描述信息

        2.service 系统服务管理

1.格式:
systemctl COMMAND name.service [name2.service] ...
2.常用操作
操作类型                         systemctl命令                           service命令
启动服务         systemctl start name1.service[name2.service] ...     service name start
停止服务                systemctl stop name.service                   service name stop
重启服务                systemctl restart name.service                service name restart
查看状态                systemctl status name.service                 service name status
禁止服务启动            systemctl mask name.service 
恢复可启动              systemctl unmask name.service 
当前是否是启动状态       systemctl is-active name.service 
查看service服务脚本内容     systemctl cat name.service 
查看所有已经激活的服务    systemctl list-units --type service|-t service 
查看所有服务        systemctl list-units --type service| -t service--all|-a 
设定服务开机启动    systemctl enable name.service                       chkconfig name on
设定服务开机禁止启动    systemctl disable name.service                  chkconfig name off
查看所有服务开机启动状态    systemctl list-unit-files --type service --all|-a chkconfig --list
查看服务在不同运行级别下的启用禁用 ls/etc/systemd/system/*.wants/name.service chkconfig --list name
查看服务是否开机自启        systemctl is-enabled name.service 
列出失败的服务            systemctl --failed --type=service 
开机启动并立即启动        systemctl enable --now name.service 
开机禁用并立即禁用        systemctl disable --now name.service 
查看服务的依赖            systemctl list-dependencies name.service 
杀进程                   systemctl kill unitname

        3.service unit 文件格式

                1.unit 文件格式说明

                        1.以 # 开头的行后面的内容会被认为是注释

                        2.相关布尔值 1,yes,on,true 等可以表示开启,0,no,off,false 等都可以表示关闭

                        3.时间单位默认是秒,如果要使用其它时间单位,毫秒(ms),分钟(m) 等须显式说明

                2.service unit file文件通常由三部分组成

字段                                说明
[Unit]            定义与Unit类型无关的通用选项;用于提供unit的描述信息、unit行为及依赖关系等
[Service]         与特定类型相关的专用选项;此处为Service类型
[Install]         定义由“systemctl enable”以及"systemctl disable“命令在实现服务启用或禁用时用到的一些选项

[Unit] 字段中的常用选项
字段                                作用
Description                        描述信息
Documentation                      帮助信息
After            定义unit的启动次序,表示当前unit应该晚于哪些unit启动,其功能与Before相反
Before           定义unit的启动次序,表示当前unit应该早于哪些unit启动,其功能与After相反
Requires         依赖到的其它units,强依赖,被依赖的units无法激活时,当前unit也无法激活
Wants                    依赖到的其它units,弱依赖
Conflicts                    定义units间的冲突关系

[Service] 字段中的常用选项
字段                                说明
Type                定义影响ExecStart及相关参数的功能的unit进程启动类型
EnvironmentFile                环境配置文件
PIDFile                    指明生成进程文件路径
ExecStartPre             ExecStart前运行,可以有多条
ExecStart               指明启动unit要运行命令或脚本的绝对路径
ExecStartPost             ExecStart后运行,可以有多条
ExecReload            指明重新加载unit 配置要运行的命令或脚本
ExecStop                指明停止unit要运行的命令或脚本
KillSignal                以何信号杀死进程,默认SIGTERM
KillMode            以何种方式杀死进程control-group|process|mixed|none
TimeoutStopSec        在超过此时间后,如果进程没有被杀死,则继续使用SIGKILL配置或FinalKillSignal配置停止进程
PrivateTmp            布尔值,true 表示会生成私有的tmp目录,路径是/tmp/systemd-privateUUID-NAME.service-XXXXX/tmp/
Restart                当守护进程意外终止时,是否自动重启
RestartSec            意外终止到自动重启之间的时间间隔,其目的是保证前面的程序彻底退出,默认值100ms

[Install] 字段中的常用选项
字段                                说明    
Alias                别名,可使用systemctl command Alias.service
WantedBy                工作模式,就是在哪种运行级别下
Also                    安装本服务的时候还要安装别的相关服务


9. 总结system启动流程

        1. UEFi或BIOS初始化,运行POST开机自检

        2. 选择启动设备

        3. 引导装载程序, centos7是grub2,加载装载程序的配置文件: /etc/grub.d/,

        /etc/default/grub ,/boot/grub2/grub.cfg

        4. 加载initramfs驱动模块(可以实现根文件系统的挂载)

        5. 加载虚拟根中的内核

        6. 虚拟根的内核初始化,Centos7使用systemd代替init,第一个进程

        7. 执行initrd.target 所有单元,包括挂载 /etc/fstab

        8. 从initramfs根文件系统切换到磁盘根目录

        9. systemd执行默认target配置,配置文件/etc/systemd/system/default.target

        10. systemd执行sysinit.target初始化系统及basic.target准备操作系统

        11. systemd启动multi-user.target 下的本机与服务器服务

        12. systemd执行multi-user.target 下的/etc/rc.d/rc.local

        13. Systemd执行multi-user.target下的getty.target及登录服务

        14. systemd执行graphical需要的服务


10. 总结DNS域名三级结构

        1.域名的组成

                1.域名由英文字母,数字和英文连字符(-) 组成,且不区分大小写

                2.域名是分层次的,允许定义子域,子域名与上级域名之间用 . (点号)分隔,最上层节点

                的域名称为顶级 域名(TLD,Top-Level Domain),第二层节点的域名称为二级域名,依

                此类推.

        2.域名的管理

                1.域名由因特网域名与地址管理机构(ICANN,Internet Corporation for Assigned Names

                and Numbers) 管理,这是为承担域名系统管理、IP地址分配、协议参数配置,以及主服

                务器系统管理等职能而设立的 非盈利机构。 ICANN为不同的国家或地区设置了相应的顶

                级域名,这些域名通常都由两个英文字母组成。

                2.根域:全球共有13台IPV4根域名服务器,其中10台在美国,2台在欧洲,1台在亚洲

                3.一级域名:又称顶级域名,可分为三类,一类代表国家和地区(cn,hk,......),一类代

                表各类组织 (com,edu,......),以及反向域

                4.二级域名:某个具体组织,单位,机构,商业公司或个人使用,需要向域名管理机构

                申请(付费)才能获得 使用权 二级域名以下的域名,由使用该域名的组织自行分配

                5.13台IPV4根域名服务器,并不是说只有13台服务器,而是指有13个IP地址向外提供一

                级域名的DNS解析 服务,每个IP地址对应的,都是多机集群。


11. 总结DNS服务工作原理,涉及递归和迭代查询原理

        1.DNS服务工作原理

                1. 当客户端主机决定访问 https://www.magedu.com 这个域名时,首先会查询本机缓存;

                2. 如果本机缓存没有解析记录,则会向其配置的DNS服务器发起解析请求;

                3. DNS代理解析服务器会先查询其缓存是否有这条解析记录,如果有,则直接返回,如

                果没有,则继 续向上解析;

                4. DNS代理解析服务器会向根域名服务器发起解析请求,根域名服务器返回 com 域名的

                DNS地址;

                5. DNS代理解析服务器继续向 com 域名服务器发起解析请求,com 域名服务器返回

                magedu.com 域名服务器DNS地址;

                6. DNS代理解析服务器继续向 magedu.com 域名服务器发起解析请求,magedu.com 域

                名服务器返回 www.magedu.com 主机的IP;

                7. DNS代理解析服务器将 www.magedu.com 的IP地址存入本机缓存,再读取缓存,将

                IP地址发送给 客户端主机;

                8. 客户端主机通过IP地址顺利访问 https://www.magedu.com;

                DNS服务只负责域名解析,也就是说,DNS服务,只负责返回与域名对应的IP地址,但

                该IP地址在网络 上是否是可达的,并不由DNS决定

        2.递归和迭代查询原理

                1.递归查询

1.是指DNS服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果。如果DNS服务器本地
没有存储与之对应的信息,则该服务器需要询问其他服务器,并将返回的查询结果提交给用户。
一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器
本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结果后转交给客户
机。

2.此查询的源和目标保持不变,为了查询结果只需要发起一次查询。

3.递归算法:客户端向LocalDNS发起域名查询-->localDNS不知道域名对应的IP-->但它知道谁知道->他代
为帮客户端去查找-->最后再返回最终结果。

                2.迭代查询

1.是指DNS服务器在收到用户发起的请求时,并不直接回复查询结果,而是告诉另一台DNS服务器的地
址,用户再向这台DNS服务器提交请求,这样依次反复,直到返回查询结果。

2.一般情况下(有例外)本地的DNS服务器向其它DNS服务器的查询属于迭代查询,如:若对方不能返回权
威的结果,则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发起进行查询,直到返
回查询的结果为止。此查询的源不变,但查询的目标不断变化,为查询结果一般需要发起多次查询。

3.迭代算法:客户端向LocalDNS发起域名查询-->localDNS不知道域名对应的IP-->但它知道谁知道并推荐
客户端应该找谁-->客户端自己去找它。

                3.DNS缓存

                        1.DNS缓存是将解析数据存储在靠近发起请求的客户端的位置,也可以说DNS数据

                        是可以缓存在任意位 置,最终目的是以此减少递归查询过程,可以更快的让用户获

                        得请求结果。


12. 实现私有DNS, 供本地网络主机作DNS递归查询。

[root@ubuntu /etc/bind]$  cat ./named.conf.options 
options {

    listen-on port 53 { 10.0.0.152; };
    allow-query { localhost; 10.0.0.0/24; };
    recursion yes; //启动递归查询
    allow-recursion { localhost; 10.0.0.0/24; }; //允许查询地址
    allow-transfer { none; };
    dnssec-validation auto;
};
测试
[root@rocky ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
search localdomain
#nameserver 10.0.0.2
nameserver 10.0.0.152

[root@rocky ~]# dig www.baidu.com

; <<>> DiG 9.11.26-RedHat-9.11.26-6.el8 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53167
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 617cee295367bbda0100000068557391cfe4d84519acea42 (good)
;; QUESTION SECTION:
;www.baidu.com.			IN	A

;; ANSWER SECTION:
www.baidu.com.		1114	IN	CNAME	www.a.shifen.com.
www.a.shifen.com.	35	IN	A	183.240.99.58
www.a.shifen.com.	35	IN	A	183.240.99.169

;; Query time: 0 msec
;; SERVER: 10.0.0.152#53(10.0.0.152)
;; WHEN: Fri Jun 20 22:43:29 CST 2025
;; MSG SIZE  rcvd: 132


13. 总结DNS服务器类型,解析答案,正反解析域,资源记录定义。

        1.DNS服务器类型

                1. 递归解析器(Recursive Resolver)

                        1.核心作用

                                1.客户端代理,完成整个DNS查询链路

                        2.关键功能
                                1.接收用户设备的查询请求(如浏览器)。

                                2.代表用户向根→TLD→权威服务器逐级查询,直到获取最终IP。

                                3.缓存结果

                2.根域名服务器(Root Name Server)

                        1.核心作用

                                1.DNS查询的起点,全球共13组逻辑根

                        2.关键功能

                                1.返回顶级域(TLD)服务器地址(如查询 .com 时指向 .com 的管理服务器)。

                                2.不存储具体域名记录,仅提供TLD导航

                3.顶级域服务器(TLD Name Server)

                        1.核心作用

                                1.管理顶级域

                        2.关键功能

                                1.根据域名后缀返回权威服务器地址

                4.权威域名服务器(Authoritative Name Server)

                        1.核心作用

                                1.域名记录的最终来源,持有域名的完整DNS数据

                        2.关键功能

                                1.直接返回域名对应的IP地址(A/AAAA记录)或其他资源记录(MXCNAME等)。

                                2.由域名所有者或托管商配置(如Cloudflare、阿里云DNS)。

        2.解析答案

                1.DNS(域名系统)解析是将人类可读的域名(如 www.example.com)转换为计算机用

                于通信的IP地址

        3.正反解析域

                1.正向解析:将域名解析成IP地址

                2.反向解析:根据IP地址得到该IP地址指向的域名

        4.资源记录定义

                1.DNS数据库中的最小数据单元,用于存储域名解析所需的具体信息。

                2.核心作用:定义域名与IP、服务、验证信息等之间的映射关系。

                3.标准格式

[域名] [TTL] [记录类] [记录类型] [记录值]

字段	说明
域名	该记录所属的域名(如 example.com.)。
TTL	    存活时间(秒),决定其他DNS服务器缓存该记录的时长(如 3600 = 1小时)。
记录类	网络类型,通常为 IN(Internet)。
记录类型	标识记录的功能(如 A、MX、CNAME)。
记录值	记录的具体内容(如IP地址、别名、优先级等)。

                4.核心资源记录类型

1.A记录(Address Record)
功能:将域名解析为IPv4地址(如 www.example.com → 192.0.2.1)。
规则:
一个域名可对应多个A记录(实现负载均衡),每条记录指向一个独立IP。

2.AAAA记录(IPv6 Address Record)
功能:将域名解析为IPv6地址(如 www.example.com → 2001:db8::1)。
规则:
与A记录类似,但用于IPv6环境。

3.CNAME记录(Canonical Name Record)
功能:为域名设置别名(如将 shop.example.com 指向 www.example.com)。
规则:
别名必须指向规范域名(真实域名),不可指向IP。
禁止嵌套(如 A→B→C 不合法)。

4.MX记录(Mail Exchange Record)
功能:指定接收域名的邮件服务器地址。
规则:
需定义优先级(数字越小优先级越高)。
记录值格式:[优先级] [邮件服务器域名]。

5.NS记录(Name Server Record)
功能:声明负责该域名的权威DNS服务器。
规则:
一个域名至少需配置两条NS记录(主备冗余)。

6.PTR记录(Pointer Record)
功能:用于反向解析(IP → 域名),如 192.0.2.1 → server.example.com。
规则:
仅存在于 .arpa 域(如IPv4反向域 x.y.z.in-addr.arpa)。

7.TXT记录(Text Record)
功能:存储任意文本信息(通常用于验证或安全配置)。
规则:
文本需用双引号包裹(如 "v=spf1 ...")。
支持多条记录共存。

8.SOA记录(Start of Authority Record)
功能:定义域的管理元数据(主服务器、序列号、同步策略等)。
规则:
每个域必须有且仅有一个SOA记录。
包含7个参数:主服务器、管理员邮箱、序列号、刷新/重试/过期时间、最小TTL。


14. 实现DNS主从同步,实现DNS子域授权

10.0.0.151客户端
10.0.0.152MASTER DNS SERVER
10.0.0.162SLAVE DNS SERVER
10.0.0.152配置
[root@ubuntu /etc/bind]$  cat ./db.xiaop.com 
xiaop.com.	86400	IN	SOA	xiao-dns.	admin.xiaop.com ( 124 3H 15M 1D 1W )
xiaop.com.	86400	IN	NS	dns1.xiaop.com.
xiaop.com.	86400	IN	NS	dns2.xiaop.com.
dns1.xiaop.com.	86400	IN	A	10.0.0.152
dns2.xiaop.com.	84600	IN	A	10.0.0.162
www.xiaop.com.	84600	IN	A	10.0.0.163

[root@ubuntu /etc/bind]$  cat ./named.conf.default-zones 
zone "xiaop.com" IN {
	type master;
	file "/etc/bind/db.xiaop.com";
};

10.0.0.162
root@ubuntu3:/etc/bind# cat ./named.conf.default-zones 
zone "xiaop.com" IN {
	type slave;
	masters {10.0.0.152;};
	file "/etc/bind/slaves/db.xiaop.com";
 };

测试
[root@rocky ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
search localdomain
nameserver 10.0.0.152

[root@rocky ~]# host www.xiaop.com
www.xiaop.com has address 10.0.0.163
[root@rocky ~]# host www.xiaop.com 10.0.0.152
Using domain server:
Name: 10.0.0.152
Address: 10.0.0.152#53
Aliases: 

www.xiaop.com has address 10.0.0.163

关闭DNS MASTER 上的服务
[root@ubuntu /etc/bind]$  rndc stop
[root@ubuntu /etc/bind]$  systemctl is-active named
active
[root@ubuntu /etc/bind]$  systemctl stop named
[root@ubuntu /etc/bind]$  systemctl is-active named
inactive

备用DNS返回结果
[root@rocky ~]# nslookup www.xiaop.com
Server:		10.0.0.162
Address:	10.0.0.162#53

Name:	www.xiaop.com
Address: 10.0.0.163


15. 总结openssh服务安全加固和总结openssh免密认证原理,及免认证实现过程。

        1.openssh服务安全加固

                1.建议使用非默认端口

                2.禁止使用protocol version 1

                3.限制可登录用户

                4.设定空闲会话超时时长

                5.利用防火墙设置ssh访问策略

                6.仅监听特定的IP地址

                7.基于口令认证时,使用强密码策略

                8.禁止使用空密码

                9.禁止root用户直接登录

                10.限制ssh的访问频度和并发在线数

                11.经常分析日志

        2.openssh免密认证原理

                1. 首先在客户端生成一对密钥(ssh-keygen)

                2. 并将客户端的公钥ssh-copy-id 拷贝到服务端

                3. 当客户端再次发送一个连接请求,包括ip、用户名

                4. 服务端得到客户端的请求后,会到authorized_keys中查找,如果有响应的IP和用户,

                就会随机生 成一个字符串

                5. 服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端

                6. 得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送

                给服务端

                7. 服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许

                免密码登录

        3.免认证实现过程

1.生成密钥对
[root@ubuntu ~]$  ssh-keygen -t rsa -P '123456' -f ~/.ssh/id_rsa
Generating public/private rsa key pair.
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:uewcTNQ7L+au/Wma+3XVC0oKs87Y+6UnHPTF7S+BDG8 root@ubuntu
The key's randomart image is:
+---[RSA 3072]----+
|                 |
|         .       |
|        . . . .  |
|       . o.. o ..|
|       oS +=.o. o|
|       ++oo+E o.o|
|       .*.++. .oo|
|      =o Bo+.o...|
|     . =*=X*+  . |
+----[SHA256]-----+

2.上传公钥
[root@ubuntu ~]$  ssh-copy-id root@10.0.0.151
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '10.0.0.151 (10.0.0.151)' can't be established.
ED25519 key fingerprint is SHA256:WPldFrVRKuy7JEX8UUfwKyeKa//OHMl9UGrqDr6iw1E.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@10.0.0.151's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@10.0.0.151'"
and check to make sure that only the key(s) you wanted were added.

3.测试(输入密钥密码)
[root@ubuntu ~]$  ssh root@10.0.0.151
Enter passphrase for key '/root/.ssh/id_rsa': 
Activate the web console with: systemctl enable --now cockpit.socket

This system is not registered to Red Hat Insights. See https://cloud.redhat.com/
To register this system, run: insights-client --register

Last login: Mon Jul 14 16:04:13 2025 from 10.0.0.152



16. 总结对称加密和非对称加密的概念和常见的加密算法

        1.对称加密算法

                1.对称加密:

                        1.加密和解密使用同一个密钥

                2.特性:

                        1.加密、解密使用同一个密钥,效率高;

                        2.将原始数据分割成固定大小的块,逐个进行加密

                3.缺陷:

                        1.密钥过多

                        2.密钥分发

                        3.数据来源无法确认

                4.常见对称加密算法:

                        1.DES:Data Encryption Standard,56bits

                        2.3DES:

                        3.AES:Advanced (128, 192, 256bits)

                        4.Blowfish,Twofish

                        5.IDEA,RC6,CAST5

        2.非对称加密算法

                1.非对称加密:密钥是成对出现

                        1.公钥:public key,公开给所有人,主要给别人加密使用

                        2.私钥:secret key,private key 自己留存,必须保证其私密性,用于自已加密签名

                        3.特点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然

                2.功能:

                        1.数据加密:适合加密较小数据,比如: 加密对称密钥

                        2.数字签名:主要在于让接收方确认发送方身份

                3.缺点:

                        1.密钥长,算法复杂

                        2.加密解密效率低下

                4.常见算法:

                        1.RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件

                                块的长度也是可变 的,可实现加密和数字签名

                        2.DSA:数字签名算法,是一种标准的 DSS(数字签名标准)

                        3.ECC:椭圆曲线密码编码学,比RSA加密算法使用更小的密钥, 提供相当的或更

                                高等级的安全

        3.常见的加密算法

               1.单向哈希算法

                        1.哈希算法:

                                1.也称为散列算法,将任意数据缩小成固定大小的 “指纹”,称为digest,即摘要

                        2.特性:

                                1.任意长度输入,固定长度输出。

                                2.若修改数据,指纹也会改变,且有雪崩效应,数据的一点微小改变,生成的

                                        指纹值变化非常大。

                                3.无法从指纹中重新生成数据,即不可逆,具有单向性。

                        3.功能:

                                1.数据完整性

                        4.常见算法:

                                1.算法不一样,得到的摘要长度也不一样

                                2.md5: (128bits),sha1: (160bits),sha224,sha256,sha384,sha512

               2.综合应用多种加密算法

               3.密码交换

        1.密钥交换:IKE( Internet Key Exchange )

                1.公钥加密:用目标的公钥加密对称密钥

                2.DH (Deffie-Hellman):生成对称(会话)密钥

        2.DH 介绍

                1.这个密钥交换方法,由惠特菲尔德·迪菲和马丁·赫尔曼在1976年发表

                2.它是一种安全协议,让双方在完全没有对方任何预先信息的条件下通过不安全信道建

                      立起一个密钥,这个密钥一般作为“对称加密”的密钥而被双方在后续数据传输中使用。

                3.DH数学原理是base离散对数问题。做类似事情的还有非对称加密类算法,如:RSA。

                4.其应用非常广泛,在SSH、VPN、Https...都有应用,勘称现代密码基石

        3.DH 特点

                1.泄密风险:私密数据a,b在生成K后将被丢弃,因此不存在a,b过长时间存在导致增

                加泄密风险。

                2.中间人攻击:由于DH在传输p,g时并无身份验证,所以有机会被实施中间人攻击,替

                换双方传输时的 数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值