目录
一、YUM仓库服务
1.YUM介绍
Yum,全称为 Yellowdog Updater, Modified,是一个在Linux发行版中用于管理软件包的命令行工具。它最初是为了简化 Fedora Core(现在的 Fedora)中软件包管理的工具而开发的,并且现在已经被多个基于RPM包管理系统的发行版所采用和支持,比如 CentOS 和 Red Hat Enterprise Linux(RHEL)
1.1功能及特点
1.依赖性解决:
Yum 可以自动解决软件包之间的依赖关系。这意味着当你安装一个软件包时,Yum 会自动査找并安装该软件包所依赖的其他软件包,从而简化了软件安装过程
2.在线更新:Yum 可以从指定的软件源(repository)中获取最新的软件包信息,并能够自动更新系统中已安装的软件包到最新版本。这使得系统管理员可以轻松地保持系统软件的最新状态
3.插件系统:Yum 支持插件机制,可以通过插件来扩展其功能,比如增加额外的命令或者改善性能
4.多软件源管理:Yum 允许管理员配置和管理多个软件源,这些源可以是官方的发行版源、第三方提供的源,甚至是本地创建的源。这样可以更灵活地管理软件包的获取和更新
5.命令行操作:Yum 是一个命令行工具,通过简单的命令和参数可以完成软件包的安装、更新、删除等操作。这种方式非常适合在服务器环境中进行远程管理
2.YUM源的提供方式
2.1配置本地源仓库
cd /etc/yum.repos.d/vim local.repo[local] # 仓库类别name=local # 仓库名称baseurl=file:///mnt # 指定 URL 访问路径为光盘挂载目录enabled=1 # 开启此 yum 源,此为默认项,可省略gpgcheck=0 # 不验证软件包的签名mount /dev/sr0 /mnt # 把光盘挂载到 /mnt 目录下(前提虚拟机是光盘挂载)清理 yum 缓存并更新yum clean all && yum makecache检查yum repolist
2.2配置ftp源
主要是思路服务器配置:(1 )安装 vsftpd 服务端软件(2 )创建并制作 yum 远程 ftp 站点的源(3 )启动 ftp 服务rpm -qa|grep vsftpdyum -y install vsftpdmkdir /var/ftp/centos7 # 创建挂盘挂载目录mount /dev/sr0 /mnt # 镜像挂载cp -rf /mnt/* /var/ftp/centos7/ &mkdir /var/ftp/other # 创建目录 repodata 数据文件cd /var/ftp/other/createrepo -g /mnt/repodata/repomd.xml ./ # 工具建立仓库数据文件systemctl start vsftpd
客户端配置:(1 )创建远程 yum 源的配置文件(2 ) yum 安装软件验证结果客户端配置:vim /etc/yum.repos.d/centos7.repo[root@client yum.repos.d]# cat centos7.repo[centos7] # 仓库类别name=centos7 # 仓库名称 ( 说明 )baseurl=ftp://172.16.58.10/centos7 #URL 访问路径enabled=1 # 启用此软件仓库gpgcheck=1 # 验证软件包的签名gpgkey=ftp://172.16.58.10/centos/RPM-GPG-KEY-CentOS-7 #GPG 公钥文件的位置[other]name=centos7baseurl=ftp://172.16.58.10/otherenabled=1 # 启用此软件仓库gpgcheck=0 # 验证软件包的签名
2.3配置http服务源
我们需要安装 http 服务,所以我们需要先搭建一个本地源# 首先创建一个文件用来挂载镜像yum -y install httpdmkdir /var/www/html/centos7 # 创建镜像目录mount /dev/sr0 /mnt # 镜像挂载cp -rf /mnt/* /var/www/htmlcentos7/ & # 拷贝镜像文件mkdir /var/www/html/other # 创建目录 repodata 数据文件生成 YUM 源索引:进入软件包所在目录,使用 createrepo 命令生成 YUM 源所需的索引文件:createrepo /var/www/html/centos7这将在 /var/www/html/centos7 目录下生成一个名为 repodata 的子目录,里面包含有关软件包的索引信息[root@client yum.repos.d]# cat centos7.repo[centos7]name=centos7 # 我们 yum 源命名baseurl=http://172.16.58.10/centos7# 是服务器设置中最重要的部分,只有设置正确,才能 从上面获取软件enabled=1 # 启用 yum 源, 0 为不启用, 1 为启用gpgcheck=1 # 检查 GPG-KEY , 0 为不检查, 1 为检查gpgkey=http://192.168.10.22/centos7/RPM-GPG-KEY-CentOS-7[other]name=otherbaseurl=http://172.16.58.10/otherenabled=1gpgcheck=0下面 3 个命令按顺序执行一遍yum clean all # 清除 yum 缓存yum makecache # 缓存本地 yum 源中的软件包信息yum repolist # 查看源软件包正常情况就是执行 yum repolist 以后有我们定义的 http 源名称,且有相应的数量,如果数量为 0 ,则哪个步骤出问题了
这里是接着上面ftp做的,所以只要移动文件就行
3.YUM命令
yum 常用的操作命令:yum -y install 软件名 # 安装、升级软件包, “-y” 选项表示自动确认yum -y remove 软件名 # 卸载软件包,可自动解决其依赖关系yum -y update 软件名 # 升级软件包yum list # 查询软件包列表yum list installed # 查询系统中已安装的软件包yum list available # 查询仓库中尚未安装的软件包yum list updates # 查询可以升级版本的软件包案列搜索 RPM 包(两种方法)yum search vimyum list|grep "vim"yum info 软件名 # 查询软件包的描述信息yum search [all] 关键词 # 根据某个关键词来查找相关的软件包yum search all httpdyum whatprovides 命令 # 查询命令属于哪个软件包yum whatprovides netstat下载 RPM 包而不安装# yum install 包名 -y --downloadonly# yum reinstall -y bash --downloadonly # 下载已安装过的 rpm 包# yum install 包名 -y --downloadonly --downloaddir=/tmp/ # 下载 RPM 包到指定目录yum history 查看历史记录来找到它所依赖的包,然后删除,如:yum history list # 列出最近的历史yum history info id # 列出某次的详细信息,yum history undo id # 撤销某次更改yum history help # 查看帮助yum history redo # 加入序号重新执行序号里的操作
二、NFS共享存储服务
1.NFS概述
NFS 是 Network File System 的缩写及网络文件系统。 NFS 主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录NFS ( Network File System 网络文件服务)NFS是一种基于TCP/IP传输的网络文件系统协议 ,最初由 Sun 公司开发。通过使用 NFS 协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源
1.1NFS功能与特点
1.分布式文件系统:
NFS允许将远程服务器上的文件系统挂载(mount)到本地系统,使得远程文件就像本地文件一样可以访问和操作。这种方式使得多个计算机可以共享文件,而无需将文件复制到每台计算机上
2.透明性:用户和应用程序可以通过标准的文件操作(如读取、写入、创建和删除文件)来访问远程文件系统,而无需了解文件存储的物理位置或网络细节。这种透明性使得对用户来说,远程文件操作和本地文件操作几乎没有区别
3.性能优化:NFS提供了多种方式来优化文件访问性能,包括客户端缓存、预读取(read-ahead)和写延迟
(write-behind)等技术,以尽可能地减少网络开销和提高响应速度
4.安全性:NFS可以通过设置访问控制列表(ACLs)和基于主机名/IP地址的权限来确保文件系统的安全访问。此外,NFS V4还引入了更强的安全机制,如Kerberos认证和数据加密
5.可扩展性:NFS支持多种网络环境和拓扑结构,可以在局域网(LAN)、广域网(WAN)甚至互联网上运行。它能够适应不同规模和复杂度的网络架构
1.2NAS存储
NFS主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录。 NFS 也是 NAS 存储设备必然支持的一种协议NAS 存储:NFS 服务的实现依赖于 RPC ( Remote Process Call ,远端过程调用)机制,以完成远程到本地的映射过程。在CentOS 7 系统中,需要安装 nfs-utils 、 rpcbind 软件包来提供 NFS 共享服务,前者用于 NFS共享发布和访问,后者用于RPC 支持手动加载 NFS 共享服务时,应该 先启动rpcbind,再启动nfsNFS端口号:2049RPC端口号:111
2.NFS原理
1 、假如访问的是 NFS 客户端,先调用不同的函数(例如 Read() 函数,读功能、 Write() 函数,写功能、 Create()函数,创建功能、 Remove() 函数、删除功能、 Rename() 函数,重命名功能)对数据进行处理2 、调用完函数后,首先 NFS 客户端会建立 TCP 连接,通过 TCP/IP 的方式传递给 NFS 服务端,连上远端的服务器3 、接着 NFS 服务端接收到请求后, NFS 服务器会做 3 步系列操作(环环相扣,先映射端口,然后验证是否能登录服务器,最后验证文件使用权限)如下:首先,调用portmap 进程进行端口映射接着,调用 Rpc.nfsd 进程来验证 NFS 客户端是否拥有对应的权限连接 NFS 服务端最后,调用 Rpc.mount 进程来验证客户端是否拥有对应的文件使用权限4 、 Portmap 进程实现用户映射和压缩5 、最后 NFS 服务端会将对应请求的函数转换为本地能识别的命令,传递至内核,由内核驱动硬件
通俗的来理解:
1.挂载文件系统:
#想象你有一台计算机A,它要访问另一台计算机B上的文件。在NFS中,你可以通过挂载(mount)的方式将计算机B的某个文件夹或整个文件系统,连接到计算机A上
#挂载后,计算机 A 就能像访问自己硬盘上的文件一样,访问计算机B上挂载的文件或文件夹
2.透明的文件访问:
#一旦挂载完成,计算机A上的用户和应用程序可以直接访问挂载的文件系统中的文件。他们不需要知道文件实际存储在哪里,也不需要关心网络传输的具体细节
#例如,如果你在计算机A上使用文本编辑器打开了一个文件,而这个文件实际上是存储在计算机B上的,你可以像编辑本地文件一样修改并保存这个文件
3.通信协议:
#NFS使用了一套协议来管理计算机A和B之间的通信。这些协议负责传输文件数据,管理文件的读取和写入操作,以及处理可能发生的网络错误或中断
4.性能和安全性:
#NFS设计用于高效的文件访问,通常可以优化数据传输速度和响应时间。同时,它也支持一些安全机制,如访问控制列表(ACLs)和加密,以保护数据不被未经授权的人访问或篡改总之,NFS让远程文件访问变得简单和透明,使得用户和应用程序可以轻松地利用网络访问和管理分布在不同计算机上的文件
客户端发起查看file信息的指令(ls file)给内核,内核通过NFS模块得知此文件并不是本地文件系统中的文件,而是在远程NFS主机上的一个文件
客户端主机的内核通过RPC协议把查看file信息的指令(系统调用)封装成rpc请求通过TCP的111端口发送给NFS服务端主机的portmapper
NFS 服务端主机的 portmapper ( RPC 服务进程)告诉客户端说 NFS 服务端的 mountd 服务在某某端口上,你去找它验证。因为mountd 在提供服务时必须要向 portmapper 注册一个端口号,所以 portmapper 是知道其工作于哪个端口的客户端得知服务端的 mountd 进程端口号后,通过已知的服务端 mountd 端口号请求验证mountd 收到验证请求后验证发起请求的客户端是否在允许访问此 NFS 文件系统的客户端列表中,在则允许访问(发放一个令牌,持令牌去找nfsd ),否则拒绝访问验证通过后客户端持 mountd 发放的令牌去找服务端的 nfsd 进程,请求查看某文件服务端的 nfsd 进程发起本地系统调用,向内核请求查看客户端要查看的文件的信息服务端的内核执行 nfsd 请求的系统调用,并将结果返回给 nfsd 服务
三、NFS文件共享系统实验
配置思路:1 、安装 nfs 和 rpcbind 软件2 、修改配置文件设置共享3 、创建共享目录4 、开启服务5 、客户端验证共享目录可访问
rpm -q rpcbind nfs-utils
yum install -y nfs-utils rpcbindvim /etc/exports #NFS 的配置文件为 /etc/exports ,文件内容默认为空(无任何共享)/opt/web 192.168.10.0/24 (rw,sync,no_root_squash)常用选项:rw: 表示允许读写ro: 表示为只读sync:表示同步写入到内存与硬盘中no_root_squash:表示当客户机以 root 身份访问时赋予本地 root 权限(默认是root_squash),如果不加那么客户端无法在里面编辑或写入文件,因为默认以 nfsnobody 的权限root_squash:表示客户机用 root 用户访问该共享目录时,将 root 用户映射成匿名用户其它常用选项:all_squash: 所有访问用户都映射为匿名用户或用户组async: 将数据先保存在内存缓冲区中,必要时才写入磁盘,速度快但会丢失数据subtree_check (默认):若输出目录是一个子目录,则 nfs 服务器将检查其父目录的权限no_subtree_check: 即使输出目录是一个子目录, nfs 服务器也不检查其父目录的权限,这样可以提高效率
systemctl start rpcbind //需要先启动rpc服务,因为nfs要向rpc注册端口
systemctl start nfssystemctl enable rpcbindsystemctl enable nfs[root@server~]# netstat -anpu | grep rpcudp 0 0 0.0.0.0:111 0.0.0.0:*24525/rpcbind[root@server~]# rpcinfo -p localhost # 查看 nfs 向 rpc 注册的端口信息program vers proto port service100000 4 tcp 111 portmapper100000 3 tcp 111 portmapper100000 2 tcp 111 portmapper100000 4 udp 111 portmapper100000 3 udp 111 portmapper100000 2 udp 111 portmapper100024 1 udp 55627 status……[root@server~]# exportfs -v # 验证结果/web172.16.58.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)exportfs -r # 刷新结果[root@server~]# showmount -e localhost # 验证共享Export list for localhost:/web 172.16.58.0/24
切换到客户端:[root@client ~]# rpm -qa nfs-utils rpcbind[root@client ~]# yum install -y nfs-utils rpcbind[root@client ~]# showmount -e 172.16.58.10 # 客户端验证共享Export list for 172.16.58.10:/opt/web 172.16.58.0/24
[root@client ~]# yum -y install httpd[root@client ~]# mount -t nfs 172.16.58.10:/opt/web /var/www/html#将共享目录挂载到网页目录[root@client ~]# systemctl start httpd #启动 web 服
[root@client ~]# echo "wm shi da shuai ge" > /var/www/html/index.html#客户端修改主页文件[root@server~]# cat index.html#服务器端会同步wm shi da shuai ge同理可得,服务端写入或修改内容,客户端也会同步
修改/etc/fstab 实现自动挂载:172.16.58.10:/opt/web /var/www/html nfs defaults,_netdev 0 0defaults,_netdev 说明这是一个网络设备注意: NFS 客户端与服务器端的耦合度是非常高的,如果客户端正在挂载使用,服务器端 NFS 服务突然间停掉了,那么在客户端就会出现执行 df -h 命令卡死的现象。这个时候使用 umount 命令是无法直接卸载的,需要加上 -lf 才能卸载,-l 表示解除正在繁忙的文件系统, -f 表示强制[root@client~]# systemctl stop nfs //服务器端模拟nfs挂掉[root@client ~]# umount /var/www/html //客户端卸载时会卡住^C[root@client ~]# umount -lf /var/www/html //加 lf 参数成功卸载其他 nfs 文件:/var/lib/nfs/etab 记录 NFS 分享出来的目录的完整权限设定值/var/lib/nfs/xtab 记录曾经登录过的客户端信
四、tcpdump
1.概述
Tcpdump是一个非常强大的命令行网络抓包工具,它可以在Unix/Linux系统上捕获网络数据包,并将其以文本形式输出到标准输出或文件中。它提供了对网络流量进行详细分析的能力,对于网络管理员、安全专家和开发人员来说是一种非常有用的工具
tcpdump option proto dir type
option:选项proto:协议dir:数据的方向【src 172.16.58.10只抓取源地址是58.10】【dst 172.16.58.20只抓取目标地址是58.20】type:抓取的数据类型
2.过滤规则
2.1基于IP地址/网段过滤
#host选项 #dst 选项 目的地址 #src 选项 源地址 #net 选项
2.2基于端口过滤
port 端口号tcpdump port 80tcpdump -i ens33 port 80 or port 22tcpdump -i ens33 src port 80 or port 22tcpdump -i ens33 dst port 80 or port 22tcpdump -i ens33 portrange 80-8080tcpdump -i ens33 src portrange 80-8080tcpdump -i ens33 dst portrange 80-8080
2.3基于协议
protocal协议种类: ip arp icmp tcp udp应用层协议不可以直接抓取
3.常见参数
选项 | 功能 |
-i |
指定监听网络监听端口
|
-w |
将捕获信息保存到文件中,且不分析核打印在屏幕上
|
-r |
读取上面存储的文件
|
-n |
不把
ip
转换成域名,直接显示
ip
|
-nn |
直接显示
ip
和端口号
|
-t |
在每行的输出中,不显示时间
|
-tt |
输出一个时间戳
时间戳
(timestamp),
通常是一个字符序列
,
唯一地标识某一刻的时间
|
-ttt |
每行之间的时间间隔
|
-tttt |
详细日期
|
-v |
产生详细的输出
|
-c |
指定收取数据包的数量
|
-C |
需要与
w
配合使用,
指定单个文件的大小
百万字节
|
-Q |
过滤数据包的方向
in out inout
|
-q |
简洁的输出
|
-D |
显示所有可用的列表
|
-s |
指定数据包的大小
|