第三周

1. 总结raid 0, 1, 5, 10, 01的工作原理。总结各自的利用率,冗余性,性能,至少几个硬盘实现。

1.1raid 0

  以 chunk 单位,读写数据,因为读写时都可以并行处理,所以在所有的级别中,RAID 0的速度是最快的。
  但是RAID 0既没有冗余功能,也不具备容错能力,如果一个磁盘(物理)损坏,所有数据都会丢失。

特性:

  读、写性能提升
  可用空间:N*min(S1,S2,...)
  无容错能力
  最少磁盘数:1+

1.2 raid 1

  也称为镜像, 两组以上的N个磁盘相互作镜像,在一些多线程操作系统中能有很好的读取速度,理论上读取速度等于硬盘数量的倍数,与RAID 0相同。另外写入速度有微小的降低。

特性:

  读性能提升、写性能略有下降
  可用空间:1*min(S1,S2,...)

  磁盘利用率50%

  有冗余能力
  最少磁盘数:2+

1.3 raid 5

特性:

  读、写性能提升
  可用空间:(N-1)*min(S1,S2,...)
  有容错能力:允许最多1块磁盘损坏
  最少磁盘数:3, 3+

1.4 RAID-10

本质上是两个raid1 组成一个raid0

特性:

读、写性能提升
可用空间:N*min(S1,S2,...)/2
有容错能力:每组镜像最多只能坏一块
最少磁盘数:4, 4+

1.5  RAID-01

本质上是多块磁盘先组成raid0,再以raid0为基础组成raid1。

特性:

读性能提升、写性能略有下降
可用空间:1*min(S1,S2,...)/2
有容错能力:每组镜像最多只能坏一块
最少磁盘数:4, 4+

2. 完成对LVM磁盘扩容及缩容示例。

LVM介绍
LVM: Logical Volume Manager 可以允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小,
允许在多个物理设备间重新组织文件系统
LVM可以弹性的更改LVM的容量

  通过交换PE来进行资料的转换,将原来LV内的PE转移到其他的设备中以降低LV的容量,或将其他设备中的PE加到LV中以加大容量
  实现过程
    将设备指定为物理卷
    用一个或者多个物理卷来创建一个卷组,物理卷是用固定大小的物理区域(Physical Extent,PE)来定义的
    在物理卷上创建的逻辑卷, 是由物理区域(PE)组成
    可以在逻辑卷上创建文件系统并挂载

 

 对LVM磁盘创建的范例:

[20:37:28 root@rocky001[ ~]#lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0          11:0    1 10.5G  0 rom  
nvme0n1     259:0    0  200G  0 disk
├─nvme0n1p1 259:1    0    1G  0 part /boot
└─nvme0n1p2 259:2    0  199G  0 part
  ├─rl-root 253:0    0   70G  0 lvm  /
  ├─rl-swap 253:1    0    2G  0 lvm  [SWAP]
  └─rl-home 253:2    0  127G  0 lvm  /home
nvme0n2     259:3    0   20G  0 disk
├─nvme0n2p1 259:4    0   10G  0 part /root/nvme2
├─nvme0n2p2 259:5    0    2G  0 part [SWAP]
└─nvme0n2p3 259:7    0    1K  0 part
nvme0n3     259:6    0   20G  0 disk

#(1)创建物理卷
[20:37:32 root@rocky001[ ~]#pvcreate /dev/nvme0n3
WARNING: dos signature detected on /dev/nvme0n3 at offset 510. Wipe it? [y/n]: y
  Wiping dos signature on /dev/nvme0n3.
  Physical volume "/dev/nvme0n3" successfully created.

#(2)创建物理卷组,在物理卷的基础上
[20:37:57 root@rocky001[ ~]#vgcreate vgnvme0 /dev/nvme0n3
  Volume group "vgnvme0" successfully created

#(3)从卷组创建逻辑卷
[20:38:43 root@rocky001[ ~]#lvcreate -L 2G -n mylv vgnvme0
WARNING: dos signature detected on /dev/vgnvme0/mylv at offset 510. Wipe it? [y/n]: y
  Wiping dos signature on /dev/vgnvme0/mylv.
  Logical volume "mylv" created.
[20:41:36 root@rocky001[ ~]#lsblk
NAME           MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0             11:0    1 10.5G  0 rom  
nvme0n1        259:0    0  200G  0 disk
├─nvme0n1p1    259:1    0    1G  0 part /boot
└─nvme0n1p2    259:2    0  199G  0 part
  ├─rl-root    253:0    0   70G  0 lvm  /
  ├─rl-swap    253:1    0    2G  0 lvm  [SWAP]
  └─rl-home    253:2    0  127G  0 lvm  /home
nvme0n2        259:3    0   20G  0 disk
├─nvme0n2p1    259:4    0   10G  0 part /root/nvme2
├─nvme0n2p2    259:5    0    2G  0 part [SWAP]
└─nvme0n2p3    259:7    0    1K  0 part
nvme0n3        259:6    0   20G  0 disk
└─vgnvme0-mylv 253:3    0    2G  0 lvm

#最后挂载,并且将挂载信息写入/etc/fstab下。

[20:44:30 root@rocky001[ ~]#mount /dev/vgnvme0/mylv /root/mylv
[20:44:35 root@rocky001[ ~]#lsblk
NAME           MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0             11:0    1 10.5G  0 rom  
nvme0n1        259:0    0  200G  0 disk
├─nvme0n1p1    259:1    0    1G  0 part /boot
└─nvme0n1p2    259:2    0  199G  0 part
  ├─rl-root    253:0    0   70G  0 lvm  /
  ├─rl-swap    253:1    0    2G  0 lvm  [SWAP]
  └─rl-home    253:2    0  127G  0 lvm  /home
nvme0n2        259:3    0   20G  0 disk
├─nvme0n2p1    259:4    0   10G  0 part /root/nvme2
├─nvme0n2p2    259:5    0    2G  0 part [SWAP]
└─nvme0n2p3    259:7    0    1K  0 part
nvme0n3        259:6    0   20G  0 disk
└─vgnvme0-mylv 253:3    0    2G  0 lvm  /root/mylv

 对lvm磁盘进行扩容或缩容的范例:

#先实现对逻辑卷的空间扩展

[20:54:09 root@rocky001[ ~]#lvextend -L +2G /dev/vgnvme0/mylv
  Size of logical volume vgnvme0/mylv changed from 2.00 GiB (512 extents) to 4.00 GiB (1024 extents).
  Logical volume vgnvme0/mylv successfully resized.

#然后实现扩展空间后文件系统的扩展

[21:02:25 root@rocky001[ ~]#resize2fs /dev/vgnvme0/mylv
resize2fs 1.45.6 (20-Mar-2020)
/dev/vgnvme0/mylv 上的文件系统已被挂载于 /root/mylv;需要进行在线调整大小

old_desc_blocks = 1, new_desc_blocks = 1
/dev/vgnvme0/mylv 上的文件系统现在为 1047552 个块(每块 4k)。

[21:03:03 root@rocky001[ ~]#lsblk
NAME           MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0             11:0    1 10.5G  0 rom  
nvme0n1        259:0    0  200G  0 disk
├─nvme0n1p1    259:1    0    1G  0 part /boot
└─nvme0n1p2    259:2    0  199G  0 part
  ├─rl-root    253:0    0   70G  0 lvm  /
  ├─rl-swap    253:1    0    2G  0 lvm  [SWAP]
  └─rl-home    253:2    0  127G  0 lvm  /home
nvme0n2        259:3    0   20G  0 disk
├─nvme0n2p1    259:4    0   10G  0 part /root/nvme2
├─nvme0n2p2    259:5    0    2G  0 part [SWAP]
└─nvme0n2p3    259:7    0    1K  0 part
nvme0n3        259:6    0   20G  0 disk
└─vgnvme0-mylv 253:3    0    4G  0 lvm  /root/mylv
[21:03:38 root@rocky001[ ~]#

#一步达成空间文件系统扩容 选项-r可以同时扩容文件系统

[20:56:54 root@rocky001[ ~]#lvresize -r -l +100%free /dev/vgnvme0/mylv
  Size of logical volume vgnvme0/mylv changed from 4.00 GiB (1024 extents) to <20.00 GiB (5119 extents).
  Logical volume vgnvme0/mylv successfully resized.
resize2fs 1.45.6 (20-Mar-2020)
/dev/mapper/vgnvme0-mylv 上的文件系统已被挂载于 /root/mylv;需要进行在线调整大小

old_desc_blocks = 1, new_desc_blocks = 3
/dev/mapper/vgnvme0-mylv 上的文件系统现在为 5241856 个块(每块 4k)。

[20:58:33 root@rocky001[ ~]#

#针对XFS的文件系统扩展 xfs_growfs MOUNTPOINT

 #缩容的过程中有风险,可能会破坏文件,需要提前备份后缩容

#先取消挂载

[21:03:38 root@rocky001[ ~]#umount /dev/vgnvme0/mylv
[21:09:18 root@rocky001[ ~]#lsblk
NAME           MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0             11:0    1 10.5G  0 rom  
nvme0n1        259:0    0  200G  0 disk
├─nvme0n1p1    259:1    0    1G  0 part /boot
└─nvme0n1p2    259:2    0  199G  0 part
  ├─rl-root    253:0    0   70G  0 lvm  /
  ├─rl-swap    253:1    0    2G  0 lvm  [SWAP]
  └─rl-home    253:2    0  127G  0 lvm  /home
nvme0n2        259:3    0   20G  0 disk
├─nvme0n2p1    259:4    0   10G  0 part /root/nvme2
├─nvme0n2p2    259:5    0    2G  0 part [SWAP]
└─nvme0n2p3    259:7    0    1K  0 part
nvme0n3        259:6    0   20G  0 disk
└─vgnvme0-mylv 253:3    0    4G  0 lvm 

#开始缩减

[21:09:21 root@rocky001[ ~]#lvreduce -L -2G -r /dev/vgnvme0/mylv
fsck,来自 util-linux 2.32.1
/dev/mapper/vgnvme0-mylv:没有问题,11/262144 文件,34894/1047552 块
resize2fs 1.45.6 (20-Mar-2020)
将 /dev/mapper/vgnvme0-mylv 上的文件系统调整为 523264 个块(每块 4k)。
/dev/mapper/vgnvme0-mylv 上的文件系统现在为 523264 个块(每块 4k)。

  Size of logical volume vgnvme0/mylv changed from <4.00 GiB (1023 extents) to <2.00 GiB (511 extents).
  Logical volume vgnvme0/mylv successfully resized.
[21:11:13 root@rocky001[ ~]#lsblk
NAME           MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0             11:0    1 10.5G  0 rom  
nvme0n1        259:0    0  200G  0 disk
├─nvme0n1p1    259:1    0    1G  0 part /boot
└─nvme0n1p2    259:2    0  199G  0 part
  ├─rl-root    253:0    0   70G  0 lvm  /
  ├─rl-swap    253:1    0    2G  0 lvm  [SWAP]
  └─rl-home    253:2    0  127G  0 lvm  /home
nvme0n2        259:3    0   20G  0 disk
├─nvme0n2p1    259:4    0   10G  0 part /root/nvme2
├─nvme0n2p2    259:5    0    2G  0 part [SWAP]
└─nvme0n2p3    259:7    0    1K  0 part
nvme0n3        259:6    0   20G  0 disk
└─vgnvme0-mylv 253:3    0    2G  0 lvm  
#重新挂载

[21:13:26 root@rocky001[ ~]#mount /dev/vgnvme0/mylv /root/mylv

[21:13:59 root@rocky001[ ~]#lsblk
NAME           MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0             11:0    1 10.5G  0 rom  
nvme0n1        259:0    0  200G  0 disk
├─nvme0n1p1    259:1    0    1G  0 part /boot
└─nvme0n1p2    259:2    0  199G  0 part
  ├─rl-root    253:0    0   70G  0 lvm  /
  ├─rl-swap    253:1    0    2G  0 lvm  [SWAP]
  └─rl-home    253:2    0  127G  0 lvm  /home
nvme0n2        259:3    0   20G  0 disk
├─nvme0n2p1    259:4    0   10G  0 part /root/nvme2
├─nvme0n2p2    259:5    0    2G  0 part [SWAP]
└─nvme0n2p3    259:7    0    1K  0 part
nvme0n3        259:6    0   20G  0 disk
└─vgnvme0-mylv 253:3    0    2G  0 lvm  /root/mylv

3. 总结程序包管理器有哪些,以及包中包含什么内容的文件,尝试这些文件如何获取命令获取? yum/dnf/apt总结程序包获取途径,以及rpm, yum, apt命令选项示例。

软件包管理器功能:
    将编译好的应用程序的各组成文件打包一个或几个程序包文件,利用包管理器可以方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作
主流的程序包管理器
    redhat:rpm文件, rpm 包管理器,rpm:Redhat Package Manager,RPM Package   Manager
    debian:deb文件, dpkg 包管理器

软件包为了管理和使用的便利,会将一个大的软件分类,放在不同的子包中。
包的分类

Application-VERSION-ARCH.rpm: 主包
Application-devel-VERSION-ARCH.rpm 开发子包
Application-utils-VERSION-ARHC.rpm 其它子包
Application-libs-VERSION-ARHC.rpm 其它子包

 3.1程序包管理器相关文件

1. 包文件组成 (每个包独有)
  包内的文件
  元数据,如:包的名称,版本,依赖性,描述等
  可能会有包安装或卸载时运行的脚本


2. 数据库(公共):/var/lib/rpm
  程序包名称及版本
  依赖关系
  功能说明
  包安装后生成的各文件路径及校验码信息

3.2获取程序包的途径

软件包需要事先将源码进行编译后打包形成,获取包的途径如下:

CentOS 镜像:

https://www.centos.org/download/
http://mirrors.aliyun.com
https://mirrors.huaweicloud.com/
https://mirror.tuna.tsinghua.edu.cn/
http://mirrors.sohu.com
http://mirrors.163.com

 Ubuntu镜像:

Ubuntu Releases

http://cdimage.ubuntu.con/releases/

 第三方组织提供

Fedora-EPEL:Extra Packages for Enterprise Linux

 https://fedoraproject.org/wiki/EPEL
https://mirrors.aliyun.com/epel/
https://mirrors.cloud.tencent.com/epel/

 软件项目官方站点

 http://yum.mariadb.org/10.4/centos8-amd64/rpms/
http://repo.mysql.com/yum/mysql-8.0-community/el/8/x86_64/

 搜素引擎

 http://pkgs.org
http://rpmfind.net
http://rpm.pbone.net
https://sourceforge.net/

 3.3rpm 包管理器(centos系统上的rpm命令管理程序包)

 rpm功能:
        安装、卸载、升级、查询、校验、数据库维护

3.3.1安装

格式:

rpm {-i|--install} [install-options] PACKAGE_FILE...

 选项:

-v: verbose
-vv:
-h: 以#显示程序包管理执行进度

 常用组合:

rpm -ivh PACKAGE_FILE ...

 [install-options]:

--test: 测试安装,但不真正执行安装,即dry run模式
--nodeps:忽略依赖关系
--replacepkgs | replacefiles
--nosignature: 不检查来源合法性
--nodigest:不检查包完整性
--noscripts:不执行程序包脚本
%pre: 安装前脚本 --nopre
%post: 安装后脚本 --nopost
%preun: 卸载前脚本 --nopreun
%postun: 卸载后脚本 --nopostun

 3.3.2升降级

rpm {-U|--upgrade} [install-options] PACKAGE_FILE... #有旧包就升级,没有就安装。
rpm {-F|--freshen} [install-options] PACKAGE_FILE...  #就旧包就升级,没有就不执行升级

 [install-options] 选项:

--oldpackage:降级
--force: 强制安装

 常用组合:

rpm -Uvh PACKAGE_FILE ...
rpm -Fvh PACKAGE_FILE ...

注意事项:

(1) 不要对内核做升级操作;Linux支持多内核版本并存,因此直接安装新版本内核
  (2) 如果原程序包的配置文件安装后曾被修改,升级时,新版本提供的同一个配置文件不会直接覆盖老版本的配置文件,而把新版本文件重命名(FILENAME.rpmnew)后保留

 3.3.3包查询

rpm {-q|--query} [select-options] [query-options]

 [select-options][query-options]选项:

#[select-options]
-a:所有包
-f:查看指定的文件由哪个程序包安装生成
-p rpmfile:针对尚未安装的程序包文件做查询操作
#[query-options]
--changelog:查询rpm包的changelog
-c:查询程序的配置文件
-d:查询程序的文档
-i:information
-l:查看指定的程序包安装后生成的所有文件
--scripts:程序包自带的脚本
--last 最后安装的包
--changelog 安装包的变更历史
#和CAPABILITY相关
--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供
--whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖
--provides:列出指定程序包所提供的CAPABILITY
-R,--requires 查询指定的程序包所依赖的CAPABILITY

 常用组合:

-qa
-q PACKAGE
-qi PACKAGE
-qc PACKAGE
-ql PACKAGE
-qd PACKAGE
-q --scripts PACKAGE
-qf FILE
-qpi PACKAGE_FILE
-qpl PACKAGE_FILE, ...

 范例:

[15:36:13 root@rocky001[ ~]#rpm -q -a --last |head -n 5
telnet-server-0.17-76.el8.x86_64              2024年04月07日 星期日 10时47分36秒
cronie-anacron-1.5.2-8.el8.x86_64             2024年04月05日 星期五 17时26分06秒
cronie-1.5.2-8.el8.x86_64                     2024年04月05日 星期五 17时26分06秒
at-3.1.20-12.el8.x86_64                       2024年04月05日 星期五 17时09分08秒
python3-future-0.18.3-4.el8.noarch            2024年04月05日 星期五 13时48分29秒
[15:36:41 root@rocky001[ ~]#

 3.3.4包卸载

rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test]
PACKAGE_NAME ...

 3.3.5包校验

   在安装包时,系统也会检查包的来源是否是合法的检查包的完整性和签名

 rpm -K|--checksig rpmfile

  软件在安装时,会将包里的每个文件的元数据,如:大小,权限,所有者,时间等记录至rpm相关的数据库中,可以用来检查包中的文件是否和当初安装时有所变化
 

rpm {-V|--verify} [select-options] [verify-options]

 3.3.6数据库维护

 /var/lib/rpm/

 rpm包安装时产生的信息都在上面路径里面。

#重建数据库

rpm {--initdb|--rebuilddb}
initdb: 初始化,如果事先不存在数据库,则新建之,否则,不执行任何操作
rebuilddb:重建已安装的包头的数据库索引目录

 3.3.7dpkg包管理器(ubuntu的包管理器)

#安装包,不支持包的依赖
dpkg -i package.deb
#删除包,不建议,不自动卸载依赖于它的包
dpkg -r package
#删除包(包括配置文件)
dpkg -P package
#列出当前已安装的包,类似rpm -qa
dpkg -l
#显示该包的简要说明
dpkg -l package
#列出该包的状态,包括详细信息,类似rpm –qi
dpkg -s package
#列出该包中所包含的文件,类似rpm –ql
dpkg -L package
#搜索包含pattern的包,类似rpm –qf
dpkg -S <pattern>
#配置包,-a 使用,配置所有没有配置的软件包
dpkg --configure package
#列出 deb 包的内容,类似rpm –qpl
dpkg -c package.deb
#解开 deb 包的内容
dpkg --unpack package.deb

 3.4yum和dnf

CentOS 使用 yum, dnf 解决rpm的包依赖关系

YUM:yellowdog Update Modifier,rpm的前端程序,解决软件包相关的依赖性,可以在多个库之间定位软件包,centos8用dnf替代了yum,不过保留了yum的兼容性,配置通用。

yum/dnf 是基于C/S 模式
    yum 服务器存放rpm包和相关包的元数据库
    yum 客户端访问yum服务器进行安装或查询等
yum 实现过程
  先在yum服务器上创建 yum repository(仓库),在仓库中事先存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下),当yum客户端利用yum/dnf工具进行安装时包时,会自动下载repodata中的元数据,查询远数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装。

3.4.1yum客户端配置

yum客户端配置文件

/etc/yum.conf #为所有仓库提供公共配置
/etc/yum.repos.d/*.repo: #为每个仓库的提供配置文件

repo仓库配置文件指向的定义:

[repositoryID]
name=Some name for this repository
baseurl=url://path/to/repository/
enabled={1|0}
gpgcheck={1|0}
gpgkey=URL
enablegroups={1|0}
failovermethod={roundrobin|priority}
roundrobin:意为随机挑选,默认值
priority:按顺序访问
cost= 默认为1000

 yum服务器的baseurl形式:
 

file:// 本地路径
http://
https://
ftp://

 注意:yum仓库指向的路径一定必须是repodata目录所在目录相关变量。

yum的repo配置文件中可用的变量:
$releasever: 当前OS的发行版的主版本号,如:8,7,6
$arch: CPU架构,如:aarch64, i586, i686,x86_64等
$basearch:系统基础平台;i386, x86_64
$contentdir:表示目录,比如:centos-8,centos-7
$YUM0-$YUM9:自定义变量

 范例:

http://server/centos/$releasever/$basearch/
http://server/centos/7/x86_64
http://server/centos/6/i386

 范例配置文件(centos8):

[16:15:50 root@rocky001[ rpm]#ll /etc/yum.conf
lrwxrwxrwx. 1 root root 12 5月  10 2022 /etc/yum.conf -> dnf/dnf.conf

#本质上是dnf的软连接

[17:24:26 root@rocky001[ rpm]#cat /etc/yum.conf
[main]
gpgcheck=1                         #安装包前要校验合法和完整性
installonly_limit=3                   #可以同时安装3个包,最小值为2,如果是0或者1,则不限制
clean_requirements_on_remove=True   #删除包时,是否将不再使用的包删除
best=True                                                #升级时,自动选择安装最新版,即使缺依赖的包
skip_if_unavailable=False
[17:25:21 root@rocky001[ rpm]#

 范例配置文件(centos7):

[root@centos7 ~]# cat /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever #缓存路径
keepcache=0      #如果为1,则下载rpm并缓存下来,不删除,默认安装rpm后会删除rpm包
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?
project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release

 baseurl 指向的路径
阿里云提供了写好的CentOS,Rocky和ubuntu的仓库文件下载链接

repo安装包下载_开源镜像站-阿里云

Rocky 系统的yum源

#南京大学
https://mirror.nju.edu.cn/rocky/$releasever/
#上海交大
https://mirrors.sjtug.sjtu.edu.cn/rocky/$releasever/
#山东大学
https://mirrors.sdu.edu.cn/rocky/$releasever/


CentOS系统的yum源

#阿里云
https://mirrors.aliyun.com/centos/$releasever/
#腾讯云
https://mirrors.cloud.tencent.com/centos/$releasever/
#华为云
https://repo.huaweicloud.com/centos/$releasever/
#清华大学
https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/


EPEL的yum源

#阿里云
https://mirrors.aliyun.com/epel/$releasever/x86_64
#腾讯云
https://mirrors.cloud.tencent.com/epel/$releasever/x86_64
#华为云
https://mirrors.huaweicloud.com/epel/$releasever/x86_64
#清华大学
https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/x86_64


阿里巴巴开源软件

阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区

 范例在contos8上配置一个用本地系统安装光盘作为本地yum仓库

#将光盘挂载

[18:08:00 root@rocky001[ ~]#mount /dev/sr0 /root/cdrom
mount: /root/cdrom: WARNING: device write-protected, mounted read-only.
[18:08:30 root@rocky001[ ~]#lsblk
NAME           MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0             11:0    1 10.5G  0 rom  /root/cdrom
nvme0n1        259:0    0  200G  0 disk
├─nvme0n1p1    259:1    0    1G  0 part /boot
└─nvme0n1p2    259:2    0  199G  0 part
  ├─rl-root    253:0    0   70G  0 lvm  /
  ├─rl-swap    253:1    0    2G  0 lvm  [SWAP]
  └─rl-home    253:2    0  127G  0 lvm  /home
nvme0n2        259:3    0   20G  0 disk
├─nvme0n2p1    259:4    0   10G  0 part /root/nvme2
├─nvme0n2p2    259:5    0    2G  0 part [SWAP]
└─nvme0n2p3    259:7    0    1K  0 part
nvme0n3        259:6    0   20G  0 disk
└─vgnvme0-mylv 253:3    0    2G  0 lvm  /root/mylv

#然后创建配置文件

[18:11:45 root@rocky001[ ~]#cat /etc/yum.repos.d/ioscdcentos8.repo
[CentOS8]
name=CentOS8
baseurl=file:///root/cdrom
gpgcheck=0
enabled=1

 范例:centos8配置的yum系统和epel源

[17:43:31 root@rocky001[ ~]#cat /etc/yum.repos.d/Rocky-BaseOS.repo
# Rocky-BaseOS.repo
#
# The mirrorlist system uses the connecting IP address of the client and the
# update status of each mirror to pick current mirrors that are geographically
# close to the client.  You should use this for Rocky updates unless you are
# manually picking other mirrors.
#
# If the mirrorlist does not work for you, you can try the commented out
# baseurl line instead.

[baseos]
name=Rocky Linux $releasever - BaseOS
mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=BaseOS-$releasever
#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
countme=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial

[17:43:24 root@rocky001[ ~]#ls /etc/yum.repos.d/
epel-modular.repo          Rocky-Debuginfo.repo         Rocky-Plus.repo
epel.repo                  Rocky-Devel.repo             Rocky-PowerTools.repo
epel-testing-modular.repo  Rocky-Extras.repo            Rocky-ResilientStorage.repo
epel-testing.repo          Rocky-HighAvailability.repo  Rocky-RT.repo
Rocky-AppStream.repo       Rocky-Media.repo             Rocky-Sources.repo
Rocky-BaseOS.repo          Rocky-NFV.repo

#appstream

[appstream]
name=Rocky Linux $releasever - AppStream
mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=AppStream-$releasever
gpgcheck=1
enabled=1
countme=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial

#epel

[epel-source]
name=Extra Packages for Enterprise Linux 8 - $basearch - Source
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-source-8&arch=$basearch&infra=$infra&content=$contentdir
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
gpgcheck=1

#extras

[extras]
name=Rocky Linux $releasever - Extras
mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=extras-$releasever
#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/extras/$basearch/os/
gpgcheck=1
enabled=1
countme=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial

   注意:与之前的版本不同,CentOS 8 系统有两个yum 源:BaseOS和AppStream ,需要分别设置两个仓库。
yum-config-manager命令
可以生成yum仓库的配置文件及启用或禁用仓库,来自于yum-utils包
格式:

#增加仓库
yum-config-manager --add-repo URL或file
#禁用仓库
yum-config-manager --disable "仓库名"
#启用仓库
yum-config-manager --enable "仓库名"

 3.4.2yum命令

yum命令的用法:

yum [options] [command] [package ...]

 选项:

-y  #自动回复yes

-q  #静默模式

--nogpgcheck #禁止进行gpg check
--enablerepo=repoidglob #临时启用此处指定的repo,支持通配符,如:"*"
--disablerepo=repoidglob #临时禁用此处指定的repo,和上面语句同时使用,放在后面的生效

 3.4.2.1 显示仓库列表

yum repolist [all|enabled|disabled]

 范例:

[18:11:54 root@rocky001[ ~]#yum repolist all
仓库 id                        仓库名称                                         状态
CentOS8                        CentOS8                                          启用
appstream                      Rocky Linux 8 - AppStream                        启用
appstream-debug                Rocky Linux 8 - AppStream - Source               禁用
appstream-source               Rocky Linux 8 - AppStream - Source               禁用
baseos                         Rocky Linux 8 - BaseOS                           启用
baseos-debug                   Rocky Linux 8 - BaseOS - Source                  禁用
baseos-source                  Rocky Linux 8 - BaseOS - Source                  禁用
devel                          Rocky Linux 8 - Devel WARNING! FOR BUILDROOT AND 禁用
epel                           Extra Packages for Enterprise Linux 8 - x86_64   启用
epel-debuginfo                 Extra Packages for Enterprise Linux 8 - x86_64 - 禁用
epel-modular                   Extra Packages for Enterprise Linux Modular 8 -  禁用
epel-modular-debuginfo         Extra Packages for Enterprise Linux Modular 8 -  禁用
epel-modular-source            Extra Packages for Enterprise Linux Modular 8 -  禁用
epel-source                    Extra Packages for Enterprise Linux 8 - x86_64 - 禁用
epel-testing                   Extra Packages for Enterprise Linux 8 - Testing  禁用
epel-testing-debuginfo         Extra Packages for Enterprise Linux 8 - Testing  禁用
epel-testing-modular           Extra Packages for Enterprise Linux Modular 8 -  禁用
epel-testing-modular-debuginfo Extra Packages for Enterprise Linux Modular 8 -  禁用
epel-testing-modular-source    Extra Packages for Enterprise Linux Modular 8 -  禁用
epel-testing-source            Extra Packages for Enterprise Linux 8 - Testing  禁用
extras                         Rocky Linux 8 - Extras                           启用
ha                             Rocky Linux 8 - HighAvailability                 禁用
ha-debug                       Rocky Linux 8 - High Availability - Source       禁用
ha-source                      Rocky Linux 8 - High Availability - Source       禁用
media-appstream                Rocky Linux 8 - Media - AppStream                禁用
media-baseos                   Rocky Linux 8 - Media - BaseOS                   禁用
nfv                            Rocky Linux 8 - NFV                              禁用
plus                           Rocky Linux 8 - Plus                             禁用
powertools                     Rocky Linux 8 - PowerTools                       禁用
powertools-debug               Rocky Linux 8 - PowerTools - Source              禁用
powertools-source              Rocky Linux 8 - PowerTools - Source              禁用
resilient-storage              Rocky Linux 8 - ResilientStorage                 禁用
resilient-storage-debug        Rocky Linux 8 - Resilient Storage - Source       禁用
resilient-storage-source       Rocky Linux 8 - Resilient Storage - Source       禁用
rt                             Rocky Linux 8 - Realtime                         禁用
[18:33:19 root@rocky001[ ~]#

 3.4.2.2显示程序包

yum list
yum list [all | glob_exp1] [glob_exp2] [...]
yum list {available|installed|updates} [glob_exp1] [...]

范例:

[18:35:02 root@rocky001[ ~]#yum list installed | head -n 5
已安装的软件包
GConf2.x86_64                                      3.2.6-22.el8                                              @AppStream
ModemManager.x86_64                                1.18.2-1.el8                                              @anaconda
ModemManager-glib.x86_64                           1.18.2-1.el8                                              @anaconda
NetworkManager.x86_64                              1:1.36.0-4.el8                                            @anaconda
[18:35:25 root@rocky001[ ~]#

 3.4.2.3安装程序包

范例:安装epel源

[18:37:30 root@rocky001[ ~]#rm -rf /yum -y install epel-release
上次元数据过期检查:4:29:37 前,执行于 2024年04月16日 星期二 14时07分57秒。
软件包 epel-release-8-18.el8.noarch 已安装。
依赖关系解决。
====================================================================================
 软件包                 架构             版本                  仓库            大小
====================================================================================
升级:
 epel-release           noarch           8-19.el8              epel            25 k

事务概要
====================================================================================
升级  1 软件包

总下载:25 k
下载软件包:
epel-release-8-19.el8.noarch.rpm                    104 kB/s |  25 kB     00:00    
------------------------------------------------------------------------------------
总计                                                 40 kB/s |  25 kB     00:00     
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
  准备中  :                                                                     1/1
  运行脚本: epel-release-8-19.el8.noarch                                        1/1
  升级    : epel-release-8-19.el8.noarch                                        1/2
  运行脚本: epel-release-8-19.el8.noarch                                        1/2
  清理    : epel-release-8-18.el8.noarch                                        2/2
  运行脚本: epel-release-8-18.el8.noarch                                        2/2
  验证    : epel-release-8-19.el8.noarch                                        1/2
  验证    : epel-release-8-18.el8.noarch                                        2/2

已升级:
  epel-release-8-19.el8.noarch                                                      

完毕!
[18:37:37 root@rocky001[ ~]#

安装sl(小火车程序)

[18:37:37 root@rocky001[ ~]#yum -y install sl
上次元数据过期检查:0:00:36 前,执行于 2024年04月16日 星期二 18时37分43秒。
依赖关系解决。
====================================================================================
 软件包         架构               版本                      仓库              大小
====================================================================================
安装:
 sl             x86_64             5.02-1.el8                epel              16 k

事务概要
====================================================================================
安装  1 软件包

总下载:16 k
安装大小:26 k
下载软件包:
sl-5.02-1.el8.x86_64.rpm                             76 kB/s |  16 kB     00:00    
------------------------------------------------------------------------------------
总计                                                 30 kB/s |  16 kB     00:00     
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
  准备中  :                                                                     1/1
  安装    : sl-5.02-1.el8.x86_64                                                1/1
  运行脚本: sl-5.02-1.el8.x86_64                                                1/1
  验证    : sl-5.02-1.el8.x86_64                                                1/1

已安装:
  sl-5.02-1.el8.x86_64                                                              

完毕!
[18:38:20 root@rocky001[ ~]#

 执行sl看看效果

[18:39:15 root@rocky001[ ~]#rpm -ql sl
/usr/bin/sl
/usr/lib/.build-id
/usr/lib/.build-id/cb
/usr/lib/.build-id/cb/664a85114a0cb25cf0460ada9ed86a7b128658
/usr/share/doc/sl
/usr/share/doc/sl/LICENSE
/usr/share/doc/sl/README.ja.md
/usr/share/doc/sl/README.md
/usr/share/man/ja/man1/sl.1.ja.gz
/usr/share/man/man1/sl.1.gz
[18:39:24 root@rocky001[ ~]#sl

#前面外面已经发现yum在centos8里面只是dnf的软连接。接下来我们用dnf下载水牛说话的小程序。

[18:39:51 root@rocky001[ ~]#dnf -y install cowsay
上次元数据过期检查:0:03:29 前,执行于 2024年04月16日 星期二 18时37分43秒。
依赖关系解决。
====================================================================================
 软件包            架构              版本                     仓库             大小
====================================================================================
安装:
 cowsay            noarch            3.7.0-10.el8             epel             47 k

事务概要
====================================================================================
安装  1 软件包

总下载:47 k
安装大小:72 k
下载软件包:
cowsay-3.7.0-10.el8.noarch.rpm                      210 kB/s |  47 kB     00:00    
------------------------------------------------------------------------------------
总计                                                 86 kB/s |  47 kB     00:00     
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
  准备中  :                                                                     1/1
  安装    : cowsay-3.7.0-10.el8.noarch                                          1/1
  运行脚本: cowsay-3.7.0-10.el8.noarch                                          1/1
  验证    : cowsay-3.7.0-10.el8.noarch                                          1/1

已安装:
  cowsay-3.7.0-10.el8.noarch                                                        

完毕!
[18:41:14 root@rocky001[ ~]#hello Koko!

 

3.4.2.4卸载程序包

yum remove | erase package1 [package2] [...]

 3.4.2.5升级和降级

yum check-update

 升降级

yum upgrade|update [package1] [package2] [...]
yum upgrade-minimal #最小化升级
yum downgrade package1 [package2] [...] (降级)

 3.4.2.6查询程序包

查看information

yum info [...]

 范例:

[18:41:55 root@rocky001[ ~]#yum info bash
上次元数据过期检查:0:09:36 前,执行于 2024年04月16日 星期二 18时37分43秒。
已安装的软件包
名称         : bash
版本         : 4.4.20
发布         : 3.el8
架构         : x86_64
大小         : 6.5 M
源           : bash-4.4.20-3.el8.src.rpm
仓库         : @System
来自仓库     : anaconda
概况         : The GNU Bourne Again shell
URL          : https://www.gnu.org/software/bash
协议         : GPLv3+
描述         : The GNU Bourne Again shell (Bash) is a shell or command language
             : interpreter that is compatible with the Bourne shell (sh). Bash
             : incorporates useful features from the Korn shell (ksh) and the C
             : shell (csh). Most sh scripts can be run by bash without modification.

可安装的软件包
名称         : bash
版本         : 4.4.20
发布         : 4.el8_6
架构         : x86_64
大小         : 1.5 M
源           : bash-4.4.20-4.el8_6.src.rpm
仓库         : baseos
概况         : The GNU Bourne Again shell
URL          : https://www.gnu.org/software/bash
协议         : GPLv3+
描述         : The GNU Bourne Again shell (Bash) is a shell or command language
             : interpreter that is compatible with the Bourne shell (sh). Bash
             : incorporates useful features from the Korn shell (ksh) and the C
             : shell (csh). Most sh scripts can be run by bash without modification.

[18:47:19 root@rocky001[ ~]#

 3.4.2.7仓库缓存

清除目录/var/cache/yum/缓存

yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

构建缓存

yum makecache

3.4.2.8查看yum日志

日志在以下文件中

#CentOS 7以前版本日志
/var/log/yum.log
#CentOS 8 版本日志
/var/log/dnf.rpm.log
/var/log/dnf.log

 日志命令:

yum history [info|list|packages-list|packages-info|summary|addon-
info|redo|undo|rollback|new|sync|stats]

范例:

[18:47:19 root@rocky001[ ~]#yum history
ID     | 命令行                        | 日期和时间       | 操作           | 更改   
------------------------------------------------------------------------------------
    19 | -y install cowsay             | 2024-04-16 18:41 | Install        |    1   
    18 | -y install sl                 | 2024-04-16 18:38 | Install        |    1   
    17 | -y install epel-release       | 2024-04-16 18:37 | Upgrade        |    1   
    16 | -y install telnet-server.x86_ | 2024-04-07 10:47 | Install        |    1   
    15 | -y install cronie             | 2024-04-05 17:26 | Upgrade        |    2   
    14 | -y install at                 | 2024-04-05 17:09 | Upgrade        |    1   
    13 |                               | 2024-04-05 13:48 | Install        |    5   
    12 | -y install dstat              | 2024-04-05 13:47 | Install        |    7 EE
    11 |                               | 2024-04-05 13:44 | Install        |    1   
    10 |                               | 2024-04-05 13:39 | Install        |    1   
     9 |                               | 2024-04-05 13:38 | Install        |    1   
     8 |                               | 2024-04-05 13:35 | Install        |    1   
     7 |                               | 2024-04-05 13:32 | Install        |    1   
     6 | -y install htop               | 2024-04-05 13:17 | Install        |    1   
     5 |                               | 2024-04-05 13:08 | Install        |    2   
     4 | install screen -y             | 2024-02-24 00:55 | Install        |    1   
     3 | install epel-release.noarch   | 2024-02-24 00:47 | Install        |    1 EE
     2 |                               | 2024-02-24 00:15 | I, U           |   12   
     1 |                               | 2024-02-21 23:36 | Install        | 1379 EE
[18:53:41 root@rocky001[ ~]#

[18:53:41 root@rocky001[ ~]#yum history info 19
事务 ID: 19
起始时间    : 2024年04月16日 星期二 18时41分13秒
起始 RPM 数据库     : 1394:5baab25826c0e51d41f893e32014d0915b01f254
结束时间       : 2024年04月16日 星期二 18时41分13秒 (0 秒)
结束 RPM 数据库      : 1395:c9488eb2c09cfafa0f6563a5be4ae0a70912a6cd
用户           : root <root>
返回码    : 成功
Releasever     : 8
命令行   : -y install cowsay
注释        :
已改变的包:
    安装 cowsay-3.7.0-10.el8.noarch @epel
[18:54:32 root@rocky001[ ~]#

 3.4.2.9安装升级本地程序包

yum localinstall | install rpmfile1 [rpmfile2] [...]
yum localupdate | update rpmfile1 [rpmfile2] [...]

 3.4.2.10查看包的安全报警

yum updateinfo --summary|--list|--info

范例:

[18:54:32 root@rocky001[ ~]#yum updateinfo
上次元数据过期检查:0:19:26 前,执行于 2024年04月16日 星期二 18时37分43秒。
更新信息概要 可用
      1 新软件包的提示
    122 安全更新通知
          1 严重安全通告
         49 重要安全通告
         68 中级安全通告
          4 低级安全通告
    235 错误修复通知
     15 性能强化通知

[18:58:04 root@rocky001[ ~]#yum updateinfo info | head -n10
上次元数据过期检查:0:24:08 前,执行于 2024年04月16日 星期二 18时37分43秒。
===============================================================================
  adcli bug fix and enhancement update
===============================================================================
 更新 ID: RLBA-2023:2997
    类型: 错误修复
更新完毕: 2023-05-19 03:19:33
    错误: 1991619 -
        : 2133838 -
    描述: For detailed information on changes in this release, see the Rocky Linux 8.8 Release Notes linked from the References section.
[19:01:52 root@rocky001[ ~]#

 3.4.3apt (ubuntu)

  Debian 使用apt 工具集来管理包系统,apt-get 是其中一个常用的命令行工具,另外一款较为流行的命令行与 GUI 兼顾的工具是 aptitude ,之前最常用的 Linux 包管理命令都被分散在了 apt-get、apt-cache 和 apt-config 这三条命令中


  在 2014 年apt 命令发布第一个稳定版,Ubuntu 16.04 引入新特性之一便是 apt 命令,apt 命令解决了命令过于分散的问题,它包括 apt-get 命令出现以来使用最广泛的功能选项,以及 apt-cache 和 apt-config 命令中很少用到的功能。在使用 apt 命令时,用户不必再由 apt-get 转到 apt-cache 或 apt-config,提供管理软件包所需的必要选项

  apt 相当于 apt-get、apt-cache 和 apt-config 中最常用命令选项的集合

  apt 具有更精减但足够的命令选项,而且参数选项的组织方式更为有效。此外,启用的几个特性也非常有帮助。例如:可以在使用 apt 命令安装或删除程序时看到进度条,apt 还会在更新存储库数据库时提示用户可升级的软件包个数

  apt 与 apt-get 有一些类似的命令选项,但它并不能完全向下兼容 apt-get 命令,也即可用 apt 替换部分apt-get 系列命令,但不是全部apt 命令用法
查看帮助:apt help

APT命令:

apt特有的命令:

apt list 列出包含条件的包(已安装,可升级等)
apt edit-sources 编辑源列表

 4搭建私有yum仓库(base, epel源)给另一个虚拟机使用。

这里我们用10.0.0.150作为服务器仓库:

[15:07:01 root@rocky001[ ~]#yum -y install httpd
上次元数据过期检查:2:01:10 前,执行于 2024年04月17日 星期三 13时05分57秒。
依赖关系解决。
=============================================================================
 软件包       架构   版本                                    仓库       大小
=============================================================================
安装:
 httpd        x86_64 2.4.37-62.module+el8.9.0+1436+2b7d5021  appstream 1.4 M
安装依赖关系:
 apr          x86_64 1.6.3-12.el8                            appstream 128 k
 apr-util     x86_64 1.6.1-9.el8                             appstream 105 k
 httpd-filesystem
              noarch 2.4.37-62.module+el8.9.0+1436+2b7d5021  appstream  43 k
 httpd-tools  x86_64 2.4.37-62.module+el8.9.0+1436+2b7d5021  appstream 110 k
 mod_http2    x86_64 1.15.7-8.module+el8.9.0+1780+0fd41399.5 appstream 154 k
 rocky-logos-httpd
              noarch 86.3-1.el8                              baseos     24 k
安装弱的依赖:
 apr-util-bdb x86_64 1.6.1-9.el8                             appstream  24 k
 apr-util-openssl
              x86_64 1.6.1-9.el8                             appstream  26 k
启用模块流:
 httpd               2.4                                                    

事务概要
=============================================================================
安装  9 软件包

总下载:2.0 M
安装大小:5.4 M
下载软件包:
(1/9): apr-util-bdb-1.6.1-9.el8.x86_64.rpm   184 kB/s |  24 kB     00:00    
(2/9): apr-util-openssl-1.6.1-9.el8.x86_64.r 513 kB/s |  26 kB     00:00    
(3/9): apr-util-1.6.1-9.el8.x86_64.rpm       476 kB/s | 105 kB     00:00    
(4/9): apr-1.6.3-12.el8.x86_64.rpm           502 kB/s | 128 kB     00:00    
(5/9): httpd-filesystem-2.4.37-62.module+el8 970 kB/s |  43 kB     00:00    
(6/9): httpd-tools-2.4.37-62.module+el8.9.0+ 1.1 MB/s | 110 kB     00:00    
(7/9): mod_http2-1.15.7-8.module+el8.9.0+178 1.5 MB/s | 154 kB     00:00    
(8/9): rocky-logos-httpd-86.3-1.el8.noarch.r 180 kB/s |  24 kB     00:00    
(9/9): httpd-2.4.37-62.module+el8.9.0+1436+2 2.2 MB/s | 1.4 MB     00:00    
-----------------------------------------------------------------------------
总计                                         629 kB/s | 2.0 MB     00:03     
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
  准备中  :                                                              1/1
  安装    : apr-1.6.3-12.el8.x86_64                                      1/9
  运行脚本: apr-1.6.3-12.el8.x86_64                                      1/9
  安装    : apr-util-bdb-1.6.1-9.el8.x86_64                              2/9
  安装    : apr-util-openssl-1.6.1-9.el8.x86_64                          3/9
  安装    : apr-util-1.6.1-9.el8.x86_64                                  4/9
  运行脚本: apr-util-1.6.1-9.el8.x86_64                                  4/9
  安装    : httpd-tools-2.4.37-62.module+el8.9.0+1436+2b7d5021.x86_64    5/9
  安装    : rocky-logos-httpd-86.3-1.el8.noarch                          6/9
  运行脚本: httpd-filesystem-2.4.37-62.module+el8.9.0+1436+2b7d5021.no   7/9
  安装    : httpd-filesystem-2.4.37-62.module+el8.9.0+1436+2b7d5021.no   7/9
  安装    : mod_http2-1.15.7-8.module+el8.9.0+1780+0fd41399.5.x86_64     8/9
  安装    : httpd-2.4.37-62.module+el8.9.0+1436+2b7d5021.x86_64          9/9
  运行脚本: httpd-2.4.37-62.module+el8.9.0+1436+2b7d5021.x86_64          9/9
  验证    : apr-1.6.3-12.el8.x86_64                                      1/9
  验证    : apr-util-1.6.1-9.el8.x86_64                                  2/9
  验证    : apr-util-bdb-1.6.1-9.el8.x86_64                              3/9
  验证    : apr-util-openssl-1.6.1-9.el8.x86_64                          4/9
  验证    : httpd-2.4.37-62.module+el8.9.0+1436+2b7d5021.x86_64          5/9
  验证    : httpd-filesystem-2.4.37-62.module+el8.9.0+1436+2b7d5021.no   6/9
  验证    : httpd-tools-2.4.37-62.module+el8.9.0+1436+2b7d5021.x86_64    7/9
  验证    : mod_http2-1.15.7-8.module+el8.9.0+1780+0fd41399.5.x86_64     8/9
  验证    : rocky-logos-httpd-86.3-1.el8.noarch                          9/9

已安装:
  apr-1.6.3-12.el8.x86_64                                                    
  apr-util-1.6.1-9.el8.x86_64                                                
  apr-util-bdb-1.6.1-9.el8.x86_64                                            
  apr-util-openssl-1.6.1-9.el8.x86_64                                        
  httpd-2.4.37-62.module+el8.9.0+1436+2b7d5021.x86_64                        
  httpd-filesystem-2.4.37-62.module+el8.9.0+1436+2b7d5021.noarch             
  httpd-tools-2.4.37-62.module+el8.9.0+1436+2b7d5021.x86_64                  
  mod_http2-1.15.7-8.module+el8.9.0+1780+0fd41399.5.x86_64                   
  rocky-logos-httpd-86.3-1.el8.noarch                                        

完毕!
[15:07:14 root@rocky001[ ~]#systemctl enable --now httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.

 #网站数据存放的地方

[16:32:21 root@rocky001[ ~]#mkdir /var/www/html/centos/8 -pv
mkdir: 已创建目录 '/var/www/html/centos'
mkdir: 已创建目录 '/var/www/html/centos/8'

#我之前将光盘挂载在/root/cdroom下。可以用光盘内的yum源复制到刚刚建立的目录下

[16:34:45 root@rocky001[ 8]#cp -a /root/cdrom/*  /var/www/html/centos/8/

 #这里我们的yum源仓库就初步搭好了,接下来我去10.0.0.155的客户端上进行yum配置

 #先把原有的yum源配置文件备份到backup,在这里重新配置一个以10.0.0.150主机yum源仓库。

[root@10 ~]# cd /etc/yum.repos.d/
[root@10 yum.repos.d]# ls
Rocky-AppStream.repo  Rocky-HighAvailability.repo  Rocky-ResilientStorage.repo
Rocky-BaseOS.repo     Rocky-Media.repo             Rocky-RT.repo
Rocky-Debuginfo.repo  Rocky-NFV.repo               Rocky-Sources.repo
Rocky-Devel.repo      Rocky-Plus.repo
Rocky-Extras.repo     Rocky-PowerTools.repo

[root@10 yum.repos.d]# mv /etc/yum.repos.d/* /etc/yum.repos.d/backup/

 

 #上图10.0.0.150的yum源通过光盘复制过来的 AppStream 和 BaseOS两个yum源。

下面我们开始写10.0.0.155客户机的配置文件。

[root@10 yum.repos.d]# cat /etc/yum.repos.d/test.repo
[BaseOS]
name=BaseOS
baseurl=http://10.0.0.150/centos/8/BaseOS
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
[AppStream]
name=Appstream
baseurl=http://10.0.0.150/centos/8/AppStream/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
[root@10 yum.repos.d]#

 ###这里重点说明!!!前面httpd(apache)我们只是装好了但是并没有启用,这里我们搭建好一个网站才能使用里面的yum源!

#这里我先做个主页

[17:34:38 root@Koko[ home]#useradd Koko

[17:39:09 root@Koko[ home]#mkdir /home/Koko/public_htm

[17:39:16 root@Koko[ home]#cd Koko/
[17:39:21 root@Koko[ Koko]#ls
public_html

[17:39:22 root@Koko[ Koko]#cd public_html/
[17:39:26 root@Koko[ public_html]#ls
[17:39:27 root@Koko[ public_html]#vim index.html
[17:40:44 root@Koko[ public_html]#chmod -R 755 /home/Koko  #修改权限
[17:41:29 root@Koko[ public_html]#systemctl stop firewalld        #禁用防火墙
[17:42:02 root@Koko[ public_html]#setenforce 0                         #修改selinux权限

[17:48:40 root@Koko[ public_html]#cat index.html
"欢迎来到Koko的个人 baseos appstream的yum源仓库
这只是个个人实验的页面。

[17:46:11 root@Koko[ public_html]#vim /etc/httpd/conf.d/userdir.conf

#将里面UserDir行的 UserDir disable改为UserDir enable 开启个人主页。

[17:48:07 root@Koko[ public_html]#systemctl restart httpd   #重启httpd服务

 #下面来看看搭好的网站页面,我们看看10.0.0.150/~Koko的主页面,当然我们之前配置的yum源也在里面10.0.0.150/centos,如果不知道http搭建的这里推荐一个链接。保姆级教学!!! Linux下搭建Apche(httpd)服务 超详细_linux httpd-CSDN博客

#开始看看我的网页

 

 

 我们搭好的baseos和appstream的yum源就在里面。接下来我们在10.0.0.155的主机上yum httpd试一下

  为了证明一下yum.repos.d只有我写的配置,而不是自带的配置导致的这个yum httpd成功。截个图~

[root@10 ~]# yum -y install httpd
BaseOS                                                                 72 MB/s | 2.6 MB     00:00    
Appstream                                                             129 MB/s | 7.8 MB     00:00    
Dependencies resolved.
======================================================================================================
 Package                Arch        Version                                      Repository      Size
======================================================================================================
Installing:
 httpd                  x86_64      2.4.37-47.module+el8.6.0+823+f143cee1.1      AppStream      1.4 M
Installing dependencies:
 apr                    x86_64      1.6.3-12.el8                                 AppStream      128 k
 apr-util               x86_64      1.6.1-6.el8.1                                AppStream      104 k
 httpd-filesystem       noarch      2.4.37-47.module+el8.6.0+823+f143cee1.1      AppStream       40 k
 httpd-tools            x86_64      2.4.37-47.module+el8.6.0+823+f143cee1.1      AppStream      107 k
 mod_http2              x86_64      1.15.7-5.module+el8.6.0+823+f143cee1         AppStream      153 k
 rocky-logos-httpd      noarch      85.0-4.el8                                   BaseOS          22 k
Installing weak dependencies:
 apr-util-bdb           x86_64      1.6.1-6.el8.1                                AppStream       23 k
 apr-util-openssl       x86_64      1.6.1-6.el8.1                                AppStream       26 k
Enabling module streams:
 httpd                              2.4                                                              

Transaction Summary
======================================================================================================
Install  9 Packages

Total download size: 2.0 M
Installed size: 5.4 M
Downloading Packages:
(1/9): rocky-logos-httpd-85.0-4.el8.noarch.rpm                        4.3 MB/s |  22 kB     00:00    
(2/9): apr-1.6.3-12.el8.x86_64.rpm                                     16 MB/s | 128 kB     00:00    
(3/9): apr-util-1.6.1-6.el8.1.x86_64.rpm                               11 MB/s | 104 kB     00:00    
(4/9): apr-util-bdb-1.6.1-6.el8.1.x86_64.rpm                          4.4 MB/s |  23 kB     00:00    
(5/9): apr-util-openssl-1.6.1-6.el8.1.x86_64.rpm                      6.6 MB/s |  26 kB     00:00    
(6/9): httpd-filesystem-2.4.37-47.module+el8.6.0+823+f143cee1.1.noarc 9.9 MB/s |  40 kB     00:00    
(7/9): httpd-tools-2.4.37-47.module+el8.6.0+823+f143cee1.1.x86_64.rpm  22 MB/s | 107 kB     00:00    
(8/9): mod_http2-1.15.7-5.module+el8.6.0+823+f143cee1.x86_64.rpm       29 MB/s | 153 kB     00:00    
(9/9): httpd-2.4.37-47.module+el8.6.0+823+f143cee1.1.x86_64.rpm        94 MB/s | 1.4 MB     00:00    
------------------------------------------------------------------------------------------------------
Total                                                                  70 MB/s | 2.0 MB     00:00     
BaseOS                                                                0.0  B/s |   0  B     00:00    
Curl error (37): Couldn't read a file:// file for file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial [Couldn't open file /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial]
The downloaded packages were saved in cache until the next successful transaction.
You can remove cached packages by executing 'yum clean packages'.

 这样我们用10.0.0.150给10.0.0.155主机yum用的仓库就搭好了,还有epel源可以下载到/centos/8/目录下,然后写好配置文件。

[root@10 ~]# cat /etc/yum.repos.d/test.repo
[BaseOS]
name=BaseOS
baseurl=http://10.0.0.150/centos/8/BaseOS
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
[AppStream]
name=Appstream
baseurl=http://10.0.0.150/centos/8/AppStream/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

[epel]
name=epel
baseurl=http://10.0.0.150/centos/8/epel/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

 上面搭建的网站没有设置路由只能在局域网内访问,即主机和几个虚拟机访问。

 5. 总结系统安装之后的常用初始化步骤。rocky/ubuntu

Ubuntu20.04,Centos7.6,Rocky8安装后的初始化_rocky8 初始化-CSDN博客

6. 解读一键安装httpd脚本,并自行实现一个一键安装脚本,要求
1)基于位置变量传递版本号
2)基于独立函数进行初始化步骤,禁用防火墙,安装开发依赖包。
3)基于独立函数进行下载包,解压包。
4)基于独立函数进行编译,安装包。
5)基于独立函数完成链接包。
6)启动服务,并输出自定义的语句,安装xxx服务

[20:20:01 root@rocky001[ ~]#cat httpinstal.sh
#!/bin/bash
#这是一个一键安装httpd的脚本
CPUS=`grep -c processor /proc/cpuinfo`  #获取CPU性能后面给编译安装提供一个最佳性能
HTTPD_VERSION=2.4.59
HTTPD_F=httpd-${HTTPD_VERSION}.tar.gz
ID=`lsb_release -a | sed -nr 's/^Dis.*:[[:space:]](.*)/\1/p'` #提取系统版本名称
INSTALL_DIR=/apps/httpd
COLOR="echo -e \E[32;1m"
END="\E[0m"
#centos防火墙默认开启,ubuntu的防火墙默认不开启
install(){                                       #安装apache前需要的包
if [ $ID = 'Rocky' ];then
                systemctl disable --now firewalld
        yum -y install gcc
                yum -y install gcc make apr-devel apr-util-devel openssl-devel pcre-devel redhat-rpm-config bzip2 wget
        elif [ $ID = 'Ubuntu' ];then
                apt update
                apt -y install libapr1-dev libaprutil1-dev libpcre3-dev libssl-dev
        else
                $COLOR"不支持此系统,退出安装!"$END
                exit
fi
}

makeinstall(){                                        #编译安装,这里被versionup函数调用
        tar xf ${HTTPD_F} -C /usr/local/src
        cd /usr/local/src/httpd-${HTTPD_VERSION}
        ./configure --prefix=${INSTALL_DIR} --enable-ssl --disable-status
        make -j $CPUS && make install
}

versionup(){                                          #从官方获取最新的源码包
if [ ! -f ${HTTPD_F} ];then
    wget https://dlcdn.apache.org/httpd/${HTTPD_F}&& makeinstall || {$COLOR "下载失败,退出" $END;exit}
                
        else
                $COLOR"版本已是2.4.59,无需升级"$END;exit
fi
}

START()                        #为了让新旧两个版本同时存在,为新版本搭一个软连接。
{

ln -s /apps/httpd/bin/apachectl /usr/bin/newapachectl
newapachectl start && $COLOR"安装成功!"$END
$COLOR"请访问:http://`hostname -I`"$END

}

install
versionup
START

[20:20:07 root@rocky001[ ~]#

#我们先在10.0.0.150rocky上试一试这个脚本。这台机装过一个旧版本的。

 

#已经安装好了,目前使用的是newapache版本是59

[21:12:49 root@rocky001[ conf]#newapachectl -v
Server version: Apache/2.4.59 (Unix)    #新版本
Server built:   Apr 18 2024 20:46:23
[21:12:59 root@rocky001[ conf]#cd
[21:13:06 root@rocky001[ ~]#apachectl -v
Server version: Apache/2.4.37 (rocky)  #旧版本
Server built:   Aug 17 2023 23:57:25

#新下载的版本配置在/apps/httpd/conf/http.conf里面,和旧的版本配置不一样,如果还想要我们之前的yum源,我们可以把旧版的配置(在/etc/http/conf目录下)照着改,主要改主机名,主机地址,和网站根目录(yum源存放的地方),最重要的一点注意端口不要和旧版本的端口相同。

#先把newapache stop掉,然后链接。再把newapache启用然后再连接,看看效果。

#再启动newapache

我们搭好的yum源又可以继续用了。

7. 总结开放系统互联OSI模型,每层作用及对应的协议。

   在制定计算机网络标准方面,起着重大作用的两大国际组织是:国际电信联盟电信标准化部门,与国际标准化组织(ISO International Organization for Standardization),虽然它们工作领域不同,但随着科学技术的发展,通信与信息处理之间的界限开始变得比较模糊,这也成了国际电信联盟电信标准化部门和ISO共同关心的领域。1984年,ISO发布了著名的OSI(Open System Interconnection)标准,它定义了网络互联的7层框架,物理层、数据链路层、网络层、传输层、会话层、表示层和应用层),即OSI开放系统互连参考模型。

    第7层 应用层
应用层(Application Layer)提供为应用软件而设的接口,以设置与另一应用软件之间的通信。例如:HTTP、HTTPS、FTP、TELNET、SSH、SMTP、POP3、MySQL等
    第6层 表示层
  主条目:表示层(Presentation Layer)把数据转换为能与接收者的系统格式兼容并适合传输的格式
    第5层 会话层
会话层(Session Layer)负责在数据传输中设置和维护电脑网络中两台电脑之间的通信连接。
    第4层 传输层
传输层(Transport Layer)把传输表头(TH)加至数据以形成数据包。传输表头包含了所使用的协议等发送信息。例如:传输控制协议(TCP)等。
    第3层 网络层
网络层(Network Layer)决定数据的路径选择和转寄,将网络表头(NH)加至数据包,以形成报文。网络表头包含了网络数据。例如:互联网协议(IP)等。
    第2层 数据链接层
数据链路层(Data Link Layer)负责网络寻址、错误侦测和改错。当表头和表尾被加至数据包时,会形成信息框(Data Frame)。数据链表头(DLH)是包含了物理地址和错误侦测及改错的方法。数据链表尾(DLT)是一串指示数据包末端的字符串。例如以太网、无线局域网(Wi-Fi)和通用分组无线服务(GPRS)等。分为两个子层:逻辑链路控制(logical link control,LLC)子层和介质访问控制(Mediaaccess control,MAC)子层
    第1层 物理层
物理层(Physical Layer)在局部局域网上传送数据帧(Data Frame),它负责管理电脑通信设备和网络媒体之间的互通。包括了针脚、电压、线缆规范、集线器、中继器、主机接口卡等

8. 调整动态端口范围为20000-62000

#调整端口的范围的配置文件在 /proc/sys/net/ipv4/ip_local_prot_range

[01:14:10 root@rocky001[ ~]#cat /proc/sys/net/ipv4/ip_local_port_range
32768    60999
[01:14:12 root@rocky001[ ~]#

[01:20:16 root@rocky0

[01:19:55 root@rocky001[ ~]#echo 20000 62000 > /proc/sys/net/ipv4/ip_local_port_range

01[ ~]#cat /proc/sys/net/ipv4/ip_local_port_range
20000    62000

9. 总结TCP包头结构,TCP三次握手,4次挥手。

  源端口、目标端口:计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个进程需要通信。源端口、目标端口是用16位表示的,可推算计算机的端口个数为2^16个,即65536


  序列号:表示本报文段所发送数据的第一个字节的编号。在TCP连接中所传送的字节流的每一个字节都会按顺序编号。由于序列号由32位表示,所以每2^32个字节,就会出现序列号回绕,再从 0
开始确认号:表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。也就是告诉发送方:我希望你(指发送方)下次发送的数据的第一个字节数据的编号为此确认号


  数据偏移:表示TCP报文段的首部长度,共4位,由于TCP首部包含一个长度可变的选项部分,需要指定这个TCP报文段到底有多长。它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。该字段的单位是32位(即4个字节为计算单位),4位二进制最大表示15,所以数据偏移也就是TCP首部最大60字节


  URG:表示本报文段中发送的数据是否包含紧急数据。后面的紧急指针字段(urgent pointer)只
有当URG=1时才有效


  ACK:表示是否前面确认号字段是否有效。只有当ACK=1时,前面的确认号字段才有效。TCP规
定,连接建立后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段


  PSH:提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间。如果为1,则表示对方应当立即把数据提交给上层应用,而不是缓存起来,如果应用程序不将接收到的数据读走,就会一直停留在TCP接收缓冲区中


  RST:如果收到一个RST=1的报文,说明与主机的连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接。或者说明上次发送给主机的数据有问题,主机拒绝响应,带RST标志的TCP报文段称为复位报文段


  SYN:在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。SYN=1,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中SYN才置为1,带SYN标志的TCP报文段称为同步报文段


  FIN:表示通知对方本端要关闭连接了,标记数据是否发送完毕。如果FIN=1,即告诉对方:“我的数据已经发送完毕,你可以释放连接了”,带FIN标志的TCP报文段称为结束报文段


  窗口大小:表示现在允许对方发送的数据量,也就是告诉对方,从本报文段的确认号开始允许对方发送的数据量,达到此值,需要ACK确认后才能再继续传送后面数据,由Window size value *
Window size scaling factor(此值在三次握手阶段TCP选项Window scale协商得到)得出此值


校验和:提供额外的可靠性

紧急指针:标记紧急数据在数据字段中的位置


选项部分:其最大长度可根据TCP首部长度进行推算。TCP首部长度用4位表示,选项部分最长为:(2^4-1)*4-20=40字节


TCP包头常见选项:
最大报文段长度MSS(Maximum Segment Size),通常1460字节
  指明自己期望对方发送TCP报文段时那个数据字段的长度。比如:1460字节。数据字段的长度加上TCP首部的长度才等于整个TCP报文段的长度。MSS不宜设的太大也不宜设的太小。若选择太小,极端情况下,TCP报文段只含有1字节数据,在IP层传输的数据报的开销至少有40字节(包括TCP报文段的首部和IP数据报的首部)。这样,网络的利用率就不会超过1/41。若TCP报文段非常长,那么在IP层传输时就有可能要分解成多个短数据报片。在终点要把收到的各个短数据报片装配成原来的TCP报文段。当传输出错时还要进行重传,这些也都会使开销增大。因此MSS应尽可能大,只要在IP层传输时不需要再分片就行。在连接建立过程中,双方都把自己能够支持的MSS写入这一字段。 MSS只出现在SYN报文中。即:MSS出现在SYN=1的报文段中
MTU和MSS值的关系:MTU=MSS+IP Header+TCP Header
通信双方最终的MSS值=较小MTU-IP Header-TCP Header


窗口扩大 Window Scale
  为了扩大窗口,由于TCP首部的窗口大小字段长度是16位,所以其表示的最大数是65535。但是随着时延和带宽比较大的通信产生(如卫星通信),需要更大的窗口来满足性能和吞吐率,所以产生了这个窗口扩大选项


时间戳 Timestamps
 可以用来计算RTT(往返时间),发送方发送TCP报文时,把当前的时间值放入时间戳字段,接收方收到后发送确认报文时,把这个时间戳字段的值复制到确认报文中,当发送方收到确认报文后即可计算出RTT。也可以用来防止回绕序号PAWS,也可以说可以用来区分相同序列号的不同报文。因为序列号用32为表示,每2^32个序列号就会产生回绕,那么使用时间戳字段就很容易区分相同序列号的不同报文

TCP三次握手和四次挥手

 第一次握手:A向B发送报文 SYN=1 ACK=0  seq=x (A向B发送x号包)希望建立链接。

 第二次握手:B向A发送报文 SYN=1 ACK=1 seq=y ack=x+1 (同意建立链接,B向A发送y号包,并表示你的x号包我已收到下次发送x+1 号包)

 第三次握手:A向B发送报文 ACK=1 seq=x+1 ack=y+1 (建立链接,A向B发送x+1号包,并表示y号包我已经收到,下次发送y+1号包)

TCP四次挥手

 第一次挥手:A主动关闭进入终止等待状态并向B发送报文,终止链接,发送u号包。

 第二次挥手:B收到A终止报文被动关闭进入关闭等待状态并向A发送报文,字段有效已收到你的u号包下次向我发送u+1号包,并向你发送v号包。

第三次挥手:B向A发送报文,终止链接,发送w号包,你的u号包已收到,下次发送u+1号包,同时B进入最后确认状态。

第四次挥手:A向B发送报文,字段有效,向你发送u+1号包,你的w号包我已收到。B收到报文后关闭,A延迟2ms后关闭(确保最后一次挥手有足够的时间发出报文,不然收到终止链接后直接关闭了没有发送报文,那么B收不到会一直处于最后确认状态不会关闭。)

10. 总结主机到主机的包传递过程。

  数据包在A物理层发出在数据链路层进行帧的封装并转入网络层传输在数据链路层解除帧封装给B(双方主机都建立了路由表)

 11. 总结IP地址 A, B, C, D 类,并解析IP地址的组成

 

A类:
0 0000000 - 0 1111111.X.Y.Z : 0-127.X.Y.Z
网络ID位是最高8位,主机ID是24位低位
网络数:126=2^7(可变是的网络ID位数)-2
每个网络中的主机数:2^24-2=16777214
默认子网掩码:255.0.0.0
私网地址:10.0.0.0
范例:114.114.114.114,8.8.8.8,1.1.1.1,123.56.174.200,119.29.29.29
B类:
10 000000 - 10 111111.X.Y.Z:128-191.X.Y.Z
网络ID位是最高16位,主机ID是16位低位
网络数:2^14=16384
每个网络中的主机数:2^16-2=65534
默认子网掩码:255.255.0.0

私网地址:172.16.0.0-172.31.0.0
范例:180.76.76.76,172.16.0.1
C类:
110 0 0000 - 110 1 1111.X.Y.Z: 192-223.X.Y.Z
网络ID位是最高24位,主机ID是8位低位
网络数:2^21=2097152
每个网络中的主机数:2^8-2=254
默认子网掩码:255.255.255.0
私网地址:192.168.0.0-192.168.255.0
范例: 223.6.6.6,223.5.5.5


D类:组(多)播,1110 0000 - 1110 1111.X.Y.Z: 224-239.X.Y.Z


E类:保留未使用,240-255

 12. 201.222.200.111/18计算主机数?子网掩码?说明计算方法。

201.222.200.111/18 的子网掩码为 255.255.192.0 用二进制表示11111111.11111111.11000000.00000000

  一个网段中的主机数=2^主机ID位数(32-子网掩码位数)-2(网段地址首段和尾段不能作为主机地址)2^(32-18)-2=16382  即201.222.200.111/18中最多有16382台主机。

13. 当A(10.0.1.1/16)与B(10.0.2.2/24)通信,A如何判断是否在同一个网段?A和B能否通信?

A的地址10.0.1.1 子网掩码 255.255.0.0  B的地址10.0.2.2 子网掩码 255.255.255.0

 当A和B通信时用A的子网掩码分别和AB与当结果相同时处于同一网段,不同则不属于同一网段不能通信。B和A通信时则用B的子网掩码进行上述步骤。

A与B通信

A: 00001010.00000000.00000001.00000001  B: 00001010.00000000.00000010.00000010

     11111111.11111111.00000000.00000000          11111111.11111111.00000000.00000000

     00001010.00000000.00000000.00000000       00001010.00000000.00000000.00000000   

 得出结论结果相同则A与B通信时处于同一网段,A与B能通信

B与A通信

B:00001010.00000000.00000010.00000010  A: 00001010.00000000.00000001.00000001

      11111111.11111111.11111111.00000000              11111111.11111111.11111111.00000000

      00001010.00000000.00000010.00000000         00001010.00000000.00000001.00000000

  结果不同,则B与A通信时B与A不在同一网段,即无法通信。

 14. 如何将10.0.0.0/8划分32个子网?求每个子网的掩码,主机数。

10.0.0.0/8 的子网掩码是255.0.0.0

  当要划分32个子网段时需要向后借位 2^5=32 即需要向网络ID位借5位,此时ip地址为10.0.0.0/13 子网掩码为255.248.0.0

 每个子网的最大主机数为:2^(32-13)-2=524286。

15. 通过网络配置命令,让主机可以上网。 ip, netmask, gateway, dns,主机名。相关命令总结,最终可以通过这些配置让你的主机上网。

15.1主机名

hostnamectl set-hostname Koko
hostname
hostnamectl status

 /etc/hostname
默认没有此文件,通过DNS反向解析获取主机名,主机名默认为:localhost.localdomain
删除文件/etc/hostname,恢复主机名localhost.localdomain

 15.2ip命令

15.2.1配置Linux网络属性

ip [ OPTIONS ] OBJECT { COMMAND | help }

 information:

OBJECT := { link | addr | route }
ip link - network device configuration
set dev IFACE,可设置属性:up and down:激活或禁用指定接口,相当于 ifup/ifdown
show [dev IFACE] [up]::指定接口 ,up 仅显示处于激活状态的接口
man帮助:ip(8), ip-address(8), ip-link(8), ip-route(8)

 范例:

#禁用网卡
ip link set eth1 down
#网卡改名
ip link set eth1 name wangnet
#启用网卡
ip link set wangnet up
#网卡别名
ip addr add 172.16.100.100/16 dev eth0 label eth0:0
ip addr del 172.16.100.100/16 dev eth0 label eth0:0
#清除网络地址
ip addr flush dev eth0

  范例: 增加网卡别名实现一个网卡多个IP

[04:17:00 root@rocky001[ ~]#ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:d7:f0:93 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.150/24 brd 10.0.0.255 scope global dynamic noprefixroute ens160
       valid_lft 1317sec preferred_lft 1317sec
    inet6 fe80::20c:29ff:fed7:f093/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:85:14:3b brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
[04:20:47 root@rocky001[ ~]#ip address add 10.0.0.160/24 dev ens160 label ens160:1
[04:22:19 root@rocky001[ ~]#ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:d7:f0:93 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.150/24 brd 10.0.0.255 scope global dynamic noprefixroute ens160
       valid_lft 1224sec preferred_lft 1224sec
    inet 10.0.0.160/24 scope global secondary ens160:1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fed7:f093/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:85:14:3b brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
[04:22:20 root@rocky001[ ~]#

#删除IP的命令ip address del 10.0.0.8/24 dev eth0 注意!!!要先加新的IP后再删除旧的IP,这个命令用来修改IP

15.2.2管理路由

ip route 用法

#添加路由:
ip route add TARGET via GW dev IFACE src SOURCE_IP
TARGET:
主机路由:IP
网络路由:NETWORK/MASK
#添加网关:
ip route add default via GW dev IFACE
#删除路由:
ip route del TARGET
#显示路由:
ip route show|list
#清空路由表:
ip route flush [dev IFACE] [via PREFIX]

 范例:

#自动配置好的。

[04:22:20 root@rocky001[ ~]#route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default             10.0.0.2           0.0.0.0             UG    100    0         0 ens160
10.0.0.0            0.0.0.0           255.255.255.0   U      100    0        0 ens160
192.168.122.0   0.0.0.0          255.255.255.0   U         0     0        0 virbr0
[04:34:04 root@rocky001[ ~]#

 15.3网络基本配置文件

IP、MASK、GW、DNS相关的配置文件:

/etc/sysconfig/network-scripts/ifcfg-IFACE

 配置格式参考路径:

/usr/share/doc/initcripts-*/sysconfig.txt

 常用配置

[04:43:10 root@rocky001[ ~]#cat /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=ens160
UUID=cbbc80b9-10b6-4a3e-b083-872c6f8609ad
DEVICE=ens160
ONBOOT=yes
[04:43:45 root@rocky001[ ~]#

 15.4域名解析DNS

/etc/resolv.conf
nameserver DNS_SERVER_IP1
nameserver DNS_SERVER_IP2
nameserver DNS_SERVER_IP3
search DOMAIN

 常见公共DNS

180.76.76.76 百度
223.5.5.5 阿里
223.6.6.6 阿里
119.29.29.29 腾讯
119.28.28.28 腾讯
114.114.114.114 电信
114.114.115.115 电信
1.2.4.8 CNNIC
210.2.4.8 CNNIC
240c::6666 CNNIC
240c::6644 CNNIC
80.80.80.80 Freenom World
80.80.81.81 Freenom World
8.8.8.8 Google
8.8.4.4 Google
1.1.1.1 Cloudflare
117.50.11.11 OneDNS
117.50.22.22 OneDNS
52.80.66.66 OneDNS
117.50.10.10 OneDNS
52.80.52.52 OneDNS

这里我们可以ping通百度

[04:43:45 root@rocky001[ ~]#ping 180.76.76.76
PING 180.76.76.76 (180.76.76.76) 56(84) bytes of data.
64 bytes from 180.76.76.76: icmp_seq=1 ttl=128 time=28.2 ms
64 bytes from 180.76.76.76: icmp_seq=2 ttl=128 time=16.2 ms
64 bytes from 180.76.76.76: icmp_seq=3 ttl=128 time=15.9 ms
64 bytes from 180.76.76.76: icmp_seq=4 ttl=128 time=16.6 ms
64 bytes from 180.76.76.76: icmp_seq=5 ttl=128 time=16.3 ms
64 bytes from 180.76.76.76: icmp_seq=6 ttl=128 time=16.8 ms
64 bytes from 180.76.76.76: icmp_seq=7 ttl=128 time=16.8 ms
64 bytes from 180.76.76.76: icmp_seq=8 ttl=128 time=15.8 ms
64 bytes from 180.76.76.76: icmp_seq=9 ttl=128 time=16.0 ms
64 bytes from 180.76.76.76: icmp_seq=10 ttl=128 time=16.7 ms
^C
--- 180.76.76.76 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9019ms
rtt min/avg/max/mdev = 15.796/17.523/28.242/3.593 ms
[04:48:07 root@rocky001[ ~]#

 15.5路由配置文件

/etc/sysconfig/network-scripts/route-IFACE

 /etc/sysconfig/network-scripts/route-IFACE
两种风格:
(1) TARGET via GW
如:10.0.0.0/8 via 172.16.0.1
(2) 每三行定义一条路由
ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW

 16. 解析/etc/sysconfig/network-scripts/ifcfg-eth0配置格式。

04:51:32 root@rocky001[ ~]#cat /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet                               #接口类型
PROXY_METHOD=none               #代理方法
BROWSER_ONLY=no                     #仅限浏览器开关
BOOTPROTO=dhcp                         #激活网卡时地址配置协议
DEFROUTE=yes                                #最优路由线路开关
IPV4_FAILURE_FATAL=no               
IPV6INIT=yes                                     #初始化开关
IPV6_AUTOCONF=yes                      #自动配置开关
IPV6_DEFROUTE=yes                       #最优路由开关
IPV6_FAILURE_FATAL=no           
NAME=ens160                                #设备用到的名字
UUID=cbbc80b9-10b6-4a3e-b083-872c6f8609ad
DEVICE=ens160                                #设备名
ONBOOT=yes                                  #在系统引导时激活此设备开关
[04:51:50 root@rocky001[ ~]#

 15.6网络配置工具nmcli

图形工具:nm-connection-editor
字符配置 tui工具:
nmtui
nmtui-connect
nmtui-edit
nmtui-hostname
命令行工具:nmcli
以上工具都依赖NetworkManager服务,此服务是管理和监控网络设置的守护进程
nmcli命令
nmcli命令相关术语
      设备即网络接口
      连接是对网络接口的配置,一个网络接口可有多个连接配置,但同时只有一个连接配置生效
格式:

nmcli [ OPTIONS ] OBJECT { COMMAND | help }
device - show and manage network interfaces
nmcli device help
connection - start, stop, and manage network connections
nmcli connection help

#修改IP地址属性

nmcli connection modify IFACE [+|-]setting.property value
setting.property: ipv4.addresses ipv4.gateway ipv4.dns1 ipv4.method manual |auto

 修改配置文件执行生效:

#查看帮助
nmcli con add help
#使用nmcli配置网络
nmcli con show
#显示所有活动连接
nmcli con show --active
#显示网络连接配置
nmcli con show "System eth0“
#显示设备状态
nmcli dev status
#显示网络接口属性
nmcli dev show eth0
#创建新连接default,IP自动通过dhcp获取
nmcli con add con-name default type Ethernet ifname eth0
#删除连接
nmcli con del default
#创建新连接static ,指定静态IP,不自动连接
nmcli con add con-name static ifname eth0 autoconnect no type Ethernet
ipv4.addresses 172.25.X.10/24 ipv4.gateway 172.25.X.254

17. 基于配置文件或命令完成bond0配置

 创建bonding设备的配置文件

[05:05:14 root@rocky001[ ~]#vim /etc/sysconfig/network-scripts/ifcfg-bond0
[05:06:28 root@rocky001[ ~]#cat /etc/sysconfig/network-scripts/ifcfg-bond0
NAME=bond0
TYPE=bond
DEVICE=bond0
BOOTPROTO=none
IPADDR=10.0.0.100
PREFIX=8
#miimon指定链路监测时间间隔。如果miimon=100,那么系统每100ms 监测一次链路连接状态,如果有一条线路不通就转入另一条线路
BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1"

[05:20:17 root@rocky001[ ~]#cat /etc/sysconfig/network-scripts/ifcfg-virbr0
NAME=virbr0
DEVICE=virbr0
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
ONBOOT=yes
[05:20:22 root@rocky001[ ~]#cat /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=ens160
UUID=cbbc80b9-10b6-4a3e-b083-872c6f8609ad
DEVICE=ens160
ONBOOT=yes
MASTER=bond0
[05:20:27 root@rocky001[ ~]#

 查看bond0的状态:

/proc/net/bonding/bond0

 删除bond

ifconfig bond0 down
rmmod bonding

 18. 通过ifconfig命令结果找到ip地址.

ifconfig命令:

ifconfig [interface]
ifconfig -a
ifconfig IFACE [up|down]
ifconfig interface [aftype] options | address ...
ifconfig IFACE IP/netmask [up]
ifconfig IFACE IP netmask NETMASK
启用混杂模式:[-]promisc

范例:

[root@centos8 ~]#ifconfig eth0 10.0.0.68 netmask 255.255.0.0
#清除eth0上面的IP地址
[root@centos8 ~]#ifconfig eth0 0.0.0.0
#启用和禁用网卡
[root@centos8 ~]#ifconfig eth0 down
[root@centos8 ~]#ifconfig eth0 up
#对一个网卡设置多个IP地址
[root@centos8 ~]#ifconfig eth0:1 172.16.0.8/24
[root@centos8 ~]#ifconfig

 通过ifconfig命令结果找到ip地址

[05:29:29 root@rocky001[ ~]#ifconfig | grep 'inet '
        inet 10.0.0.150  netmask 255.255.255.0  broadcast 10.0.0.255
        inet 10.0.0.160  netmask 255.255.255.0  broadcast 0.0.0.0
        inet 127.0.0.1  netmask 255.0.0.0
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
[05:29:44 root@rocky001[ ~]#

 19.  使用脚本判断 你主机所在网络内在线的主机IP有哪些? ping通则在线。

[05:47:59 root@rocky001[ ~]#. ping.sh
10.0.0.150 可以ping通
10.0.0.151 可以ping通
10.0.0.152“ 不可以ping通
10.0.0.153“ 不可以ping通
10.0.0.154“ 不可以ping通
10.0.0.155 可以ping通
10.0.0.156“ 不可以ping通
10.0.0.157“ 不可以ping通
10.0.0.158“ 不可以ping通
10.0.0.159“ 不可以ping通
10.0.0.160 可以ping通
[05:48:07 root@rocky001[ ~]#cat ping.sh
#!/bin/bash
for i in {150..160};do
    ping -c 1 -w 1 10.0.0.$i &>/dev/null
    if [ $? -eq 0 ];then
        echo "10.0.0.$i 可以ping通"
    else
        echo "10.0.0.$i“ 不可以ping通"
    
    fi
done

###########

[06:15:17 root@rocky001[ ~]#. ping.sh
10.0.0.150 在线
10.0.0.151 在线
10.0.0.155 在线
10.0.0.160 在线
[06:15:25 root@rocky001[ ~]#cat ping.sh
#!/bin/bash
for i in {150..160};do
    ping -c 1 -w 1 10.0.0.$i &>/dev/null
    if [ $? -eq 0 ];then
        echo "10.0.0.$i" 在线
    else
        echo "10.0.0.$i"不在线 >/dev/null
    fi
done
[06:15:39 root@rocky001[ ~]#

  • 39
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值