阅读基础知识1

  一 网络

1. 三次握手四次挥手

三次握手:为了建立长链接进行交互即建立一个会话,使用 http/https 协议
① 客户端产生初始化序列号 Seq=x ,向服务端发送建立连接的请求报文,将 SYN=1 同步序列号;
② 服务端接收建立连接的请求之后,产生初始化序号 Seq=y ,并发送一个确认包( Ack=x+1) ,向客户端发送 建立连接的请求(SYN=1 ),确认客户端的数据 (ACK=1)

③ 客户端收到服务端的回复(Ack=y+1,包含收到请求,确认信号),ACK=1,确认客户端的数据,三次握手成功

四次挥手:是一个断开连接释放服务器资源的过程
① 发送断开连接( FIN=1 )请求给服务端 , 断开连接确认( ACK=1 ),第一次挥手;

② 服务端接收到断开连接的请求,表示知道了,第二次挥手;

③ 然后确认(ACK=1)请求断开服务器(FIN=1),第三次挥手;

④ 最终确认断开连接请求(ACK=1),第四次挥手

1.1 如果已经建立了连接,但是客户端突然出现故障了怎么办?

TCP 还设有一个保活计时器,显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2 小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75 秒钟发送一次。若一连发送 10 个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接.

1.2 为什么连接的时候是三次握手,关闭的时候却是四次握手?

因为当 Server 端收到 Client 端的 SYN 连接请求报文后,可以直接发送 SYN+ACK 报文。其中 ACK 报文是用来应答的,SYN 报文是用来同步的。但是关闭连接时,当 Server 端收到 FIN 报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个 ACK 报文,告诉 Client 端, " 你发的 FIN 报文我收到了 " 。只有等到我 Server 端所有的报文都发送完了,我才能发送FIN 报文,因此不能一起发送。故需要四步握手。

1.3 为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?

这是因为:虽然双方都同意关闭连接了,而且握手的 4 个报文也都协调和发送完毕,按理可以直接回到 CLOSED状态(就好比从SYN_SEND 状态到 ESTABLISH 状态那样);但是因为我们必须要假想网络是不可靠的,你无法保证你最后发送的ACK 报文会一定被对方收到,因此对方处于 LAST_ACK 状态下的 SOCKET 可能会因为超时未收到ACK 报文,而重发 FIN 报文,所以这个 TIME_WAIT 状态的作用就是用来重发可能丢失的 ACK 报文。

1.4 为什么不能用两次握手进行连接?

答: 3 次握手完成两个重要的功能,既要双方做好发送数据的准备工作 ( 双方都知道彼此已准备好 ) ,也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。
现在把三次握手改成仅需要两次握手,死锁是可能发生的。作为例子,考虑计算机 S C 之间的通信,假定 C S发送一个连接请求分组,S 收到了这个分组,并发送了确认应答分组。按照两次握手的协定, S 认为连接已经成功地建立了,可以开始发送数据分组。可是,C S 的应答分组在传输中被丢失的情况下,将不知道 S 是否已准备好,不知道S 建立什么样的序列号, C 甚至怀疑 S 是否收到自己的连接请求分组。在这种情况下, C 认为连接还未建立成功,将忽略S 发来的任何数据分 组,只等待连接确认应答分组。而 S 在发出的分组超时后,重复发送同样的分组。这样就形成了死锁。

1.5 谁可以中断连接?客户端还是服务端还是都可以?

都可以中断连接
其实在最后一 步客户端收到服务端的 ACK 之后实际上是不会立马关闭连接的,它进入了 TIME_ WAIT 状态,为什么不立即关闭?
为了这种情况 : B A 发送 FIN = 1 的释放连接请求 , 但这个报文丢失了, A 没有接到不会发送确认信息, B超时会重传, 这时 A WAIT _TIME 还能够接收到这个请求 , 这时再回复一个确认就行了。 (A 收到 FIN = 1 的请求后WAIT _TIME 会重新记时 ) 另外服务器 B 存在一个保活状态, 即如果 A 突然故障死机了,那 B 那边的连接资源什么时候能释放呢? 就是保活时间到了后, B 会发送探测信息,以决定是否释放连接。

1.6 TCPUDP的区别

TCP: 可靠的,面向连接的传输层协议。主要它有三次握手,四次断开,窗口滑动,数据分段,数据重组,数据重传机制保证数据的可靠性;更注重长链接状态
虽然 tcp 比较容易丢包,但是 tcp 有校验和机制,校验数据的完整性,就能可以一边丢一边捡起来;这里丢包就代表延迟性,再重新发送的情况就是感官上的延迟;常用场景:web
UDP :不可靠的,面向无连接的传输层协议。它没有什么机制保证数据可靠性,当数据量非常庞大时可以通过此协议来保证数据的高效低延时;只管发送,相较于tcp 而言没有校验功能,也没有指针位,核心报文就是源端口号和目标端口号,不会经过三次握手四次挥手的过程,也不会去校验是否传输完整;常用场景:qq ,微信等

2. OSPF六类LSA与链路状态数据库

OSPF 使用 LSA (链路状态通告)来在网络中的路由器之间交换网络拓扑信息

2.1 Type-1 LSARouter LSA

又称:LSA1或者type-1 LSA,每一台运行OSPF的设备都会产生LSA-1;
传播范围:只能在本区域传播,不能跨越ABR
宣告者:每个OSPF路由器
内容:直连接口的网段信息和cost,即路由和拓扑信息
查看方法:dis ospf lsdb router 1.1.1.1
Link-id为Router-id,ADV为通告者
注意,在LSA-1中看不到掩码,掩码信息需要在LSA-2中查看

2.2 Type-2 LSA Network LSA

只在多路访问MA网络中存在
传播范围:只能在本区传播,不能跨越ABR
宣告者:DR(通告一共有多少台路由器运行)
内容:描述有多少成员以及掩码信息,直连接口的网段信息和cost值
查看方法:dis ospf lsdb network
1 2 类小结:
借助一个区域内所泛洪的 Type-1LSA Type2 ,该区域中的所有路由器能够还原出区域的完整拓扑,并在此基础上计算出到达区域内各个网段的最佳、无环路由

2.3 Type-3LSA Summary LSA

汇总LSA,可通过操作拦截
传播范围:整个OSPF域
通告者:ABR(本区域边界路由器,可能发生改变)
内容:域间路由,LSA-3穿越多个ABR时,通告者改变;数据汇总到area0中,归纳汇总的作用
查看方法:dis ospf lsdb summary

2.4 Type-4 LSASummary ASB LSA

告诉其他区域ASBR所在的位置,根据LSA-5而来
传播范围:除ASBR所在区域外的整个OSPF区域
宣告者:ABR(穿越多个ABR时改变)
内容:ASBR的Router-id
查询方法:dis ospf lsdb asbr

2.5 Type-5 LSALSA-5 External LSA

外部LSA,描述外部信息,不属于任何一个区域
传播范围:整个OSPF域;
宣告者:ASBR(只有引入了外部路由并且重分发动作执行后才会成为ASBR,通告在穿过多个区域时一直不改
变);
内容:外部路由,在路由表中标记为“O-ASE”;
查询方法:dis ospf lsdb ase
LSA-4和LSA-5通常是一起出现的,LSA-5讲述的是外部路由,而LSA-4则是说ASBR的位置,所以是先有
LSA-5再有LSA-4

2.6 Type-7 LSALSA-7 AS External LSA

与LSA-5只是称呼的不同,都是关于域外路由的
传播范围:整个NSSA区域;
宣告者:ASBR(穿过多个区域时一直不改变);
内容:外部路由,会出现在NSSA区域,不允许进入到其他Area,
查询方法:dis ospf lsdb nssa
NSSA  ABR 在收到 Type-7 LSA 后,负责将其转换成 Type-5 LSA ,然后注入到 Area0 中,进而传播到整个 OSPF域。
Type-5 LSA Type-7 LSA 都有两种度量值 Type1 Typ2 ,将外部路由引入 OSPF 是,如果为指定该外部路由的度量值类型,则缺省为Type2 ,且路由的外部 cost 缺省为 1

3. stp是什么作用,怎么操作

STP 的作用:
    STP 通过阻塞端口来消除环路,并能够实现链路备份的目的
STP 的操作
1. 选举一个根桥
        比较交换机的桥ID ,越小越优先
        桥ID 8 个字节, 2 个字节的优先级 +6 个字节的 MAC 地址
2. 每个非根交换机选举一个根端口(去往根网桥最近的端口)
        先比去往根网桥的cost 越小越优先
        再比上联交换机的桥ID ,越小越优先
        再比上联端口的端口ID ,越小越优先
3. 每个段选举一个指定端口(根交换机上所有端口都是指定端口)
        先比cost
        再比所在交换机的桥ID
        再比端口ID
4. 阻塞非根、非指定端口

4. 一般什么场景使用链路聚合

在业务压力过大时,会进行调试使用
核心层,汇聚层,接入层
最低层的用户端是 pc
直接跟二层相连是接入层 - 交换机
二层上面的是汇聚层 - 路由
对外有核心层,作为网关对外的

5. 简述贵公司的PVUVIP,流量等资源大小?

PV :页面浏览量,用户每次对网站中的网页访问均被记录一个 PV 。用户对同一页免得多次访问,访问量累计。
UV :是指通过互联网访问 、浏览这个网页的自然人。 0-24 内相同客户端只被计算一次。
IP :独立 IP 指访问站点的 IP 次数
日访问量 100 万,小时点击量 4-5 万,最高 QPS 1000 左右, UV 量是 20-30 万, IP 量为 55

6. PXEDHCP工作原理

1 、客户端向 dhcp 服务器发送广播,请求 ip 地址
2 dhcp 服务器响应客户端请求,分配地址池中的可用地址给客户端
3 dhcp 服务器提供 tftp 服务器的地址,引导客户端去 tftp 服务器取得系统所需的引导文件
4 、客户端需要系统启动的内核文件和驱动文件
5、 当操作系统安装之后需要一些软件包,客户端向 ftp 服务器请求(寻找软件包)
租期到达 50% 跟服务器联系更新租约,客户机给服务器发送 request 包,要求更新租约
若服务器没有相应时,租期到达 87.5% 的天数时会再次联系服务器更新租约
若服务器没有相应时,租期到达 100% ,释放然后重新 discover

7. 二层三层转发原理

层:数据链路层:建立逻辑连接、进行硬件地址寻址、差错校验等功能;比如数据传输排序功能,硬件地址,就是mac 地址
三层:网络层 :进行逻辑地址寻址,实现不同网络之间的路径选择;逻辑地址寻址,即 IP 地址
协议: IP ICMP IGMP,ARP,RARP 和路由协议, RIP OSPF GBP IS-ISVRRP
物理寻址 mac 地址,逻辑地址 ip ,基于 ip 和端口的转发
还有一些路由协议
封装和解封装的过程

8. 物理交换机可以做什么?

控制服务器的网络接入,实现网络隔离,流量监控,Qos配置,流量优化等

9. 网络通信五元组

源端口、源地址、协议号、目的端口、目的地址

10. 网络故障排查简单思路

查看网络是否正常,一般先确保以下设置是否正确
首先查看物理层问题,例如网线是否连接正确
查看本机配置,如 ip 地址和子网掩码是否设置正确 ( ifconfig ),默认网关是否设置正确 (route) ,域名服务器是否设置正确
然后要确认网卡本身是否能正常工作?利用 ping 工具可以确认这点。输入 ping 127.0.0.1 ,然后看是否能正常ping 通?这里的 127.0.0.1 被称为主机的回环接口,是 TCP/IP 协议栈正常工作的前提。如果 ping 不通,一般可以证实为本机TCP/IP 协议栈有问题,自然就无法连接网络了。不过,出现这种现象的概率比较低。
要确认网卡是否出现了物理或驱动故障,使用 ping 本机 IP 地址的方式,如果能 ping 通则说明本地设备和驱动都正常。
要确认是否能 ping 通同网段的其他主机。这一步主要是确认二层网络设备(比如交换机或者 HUB )工作是否正常。如果ping 不通往往说明二层网络上出现了问题,可能涉及交换机的端口工作模式, vlan 划分等因素
要确认是否能 ping 通网关 ip 。如果数据包能正常到达网关,则说明主机和本地网络都工作正常。
确认是否能 ping 通公网上的 iP ,如果可以则说明本地的路由设置正确,否则就要确认路由设备是否做了正确的nat或路由设置。
确认是否能 ping 通公网上的某个域名,如果能 ping 通则说明 DNS 部分设置正确。
工作中主要遇到的情况多是ip地址冲突或mac地址发生冲突了,一般还是多借助wireshark抓包查看。通过查看arp包所回应的mac地址是否是正确的设备地址以检测是否是ip地址发生冲突;过滤物理mac地址,查看是否存在不同ip的情况以检测是否mac地址发生冲突。

二 Linux 

1. 简述Raid0、Raid1、Raid5Raid10的区别

RAID:redundant array of independent disks, 独立冗余磁盘阵列
磁盘阵列是由很多块独立的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上
RAID 提升存储性能(硬盘的读写效率),提供数据备份技术;按照不同方式组合形成一个硬盘组
LVM 只是提高磁盘管理的灵活性,并不能提升硬盘的读写效率和提供数据备份技术

1.1 RAID的作用(为什么要用RAIDRAID的场景)

提高存储性能
实现冗余
目前大中型企业都在使用的技术, RAID+LVM 结合使用

1.2 RAID1001的区别

RAID10: 是先做镜像再作条带化,是对虚拟磁盘实现镜像
RAID01 :是先做条带化再作镜像,本质是对物理磁盘实现镜像;先保证写的速度,再保证读的速度

1.3 简述RAID5RAID1RAID0的优势与使用场景?

RAID5, 可损失一块盘 , 数据安全保障程度比 RAID1 低而磁空间利用率要比 raid1 RAID5 可以理解为是 RAID 和RAID1的折中方案 , 适合对性能和余都有一定要求 , 又都不是十分高的情况。 mysql 的主从库都可以 , 存储也可以, 普通的服务器为了减少维护成本 , 又保持一定余和读性能都可以做 RAID5
RAID1, 通过硬盘数据镜像实现数据的冗余 , 保护数据安全 , 在两块盘上产生互为备份的数据 , 当原始数据繁忙时, 可直接从镜像备份中读取数据 , 因此 RAID1 可以提升读取性能。 RAID1 是硬盘中单位成本最高的 , 但提供了很高的数据安全性和可用性, 当一个硬盘失效时 , 系统可以自动切换到镜像硬盘上读 / , 并且不需要重组失效的数据。
RAID0, 无任何冗余 , 1 块盘 , 整个 RAID 就不能用了。适用于大规模并发读写 , 但对数据安全性要求不高的情况, mysql slave( 数据块从库 ), 集群的节点 RS( 服务员 )

2. linux系统中最小存储单元

raid chunk 512k
PE 4M
扇区 512b( 字节 )
Block 4k

3. linux多种命令查询

查看磁盘空间
df -h: 磁盘空间
df -i: inode空间
系统负载分担
cat /proc/loadavg
top | head -1
当前系统正在使用的swap分区情况
swapon -s
swapon
cat /proc/swaps:可以理解为swapon -s;其实调用的/proc/swap 这个文件查看当前所有系统启用的
查看内核的版本(2种方式)
cat /proc/version:查看内核的版本
uname -r:操作系统的发行号
查询硬件平台
uname -m:硬件平台
uname -a:用于显示系统信息
查看linux系统的路由表方式
netstat  -r
route
重新获取某项服务
systemctl restart dhcpd/named
rndc reload
查看系统当前所有服务
netstat -anp

rndc reload 是用于BIND DNS服务器(Berkeley Internet Name Domain)的一个命令,它属于 rndc(Remote Name Daemon Control)工具的一部分。rndc 提供了对DNS服务器的远程或本地控制接口。

当你执行 rndc reload 命令时,它会重新加载BIND配置文件(通常为named.conf和相关的区域文件),而无需停止并重启整个DNS服务。这样可以在不中断服务的情况下应用新的配置更改,是一种非常实用且快速的更新DNS配置的方式。

注意:要使用 rndc 命令,你需要先正确配置 rndc.key 文件以实现安全通信,并在 named.conf 中设置相应的 controls 部分来引用这个密钥文件。只有在完成这些基本配置后,你才能成功执行 rndc reload 等命令操作DNS服务器。

4. Linux开机的顺序

第一步:上电自检:硬件自检
当你按下电源按键后计算机硬件会读取 BIOS UEFI BIOS 来加载硬件信息及进行硬件系统的自我测试,根据BIOS设置来取得第一个可启动的设备;台式机嘟的长鸣声表示自检失败,坏了;底层是汇编语言BIOS:全称应该是 ROM BIOS ,基本的输入输出系统,在主板上的 rom 芯片内,很小的一个程序;记录在CMDS芯片上, RAM 随机存储器
第二步: MBR 引导
读取并执行第一个扇区 MBR 的启动引导程序(可以是 grub2 ,也可以是 spfdisk );系统会主动去读第一个可启动的设备(BIOS 设定),此时就可以读入启动引导程序了,启动引导程序可以指定使用哪个内核;这时控制权给MBR ,即 boot loader 主导权寻找内核
第一个扇区有 512 字节的 MBR ;以下三个一共 512 字节
、存放 boot loader (系统启动引导程序), 446 字节;
boot loader 主要作用:
寻找内核和加载内核:一个硬盘第一个扇区是 MBR MBR 内有 boot loader ,想要访问 windows ,这时是需要boot loader去访问 window 自己的 loader ,由 window 自己的 loader 寻找和加载内核
可以提供用户的选项,即 GRUB 菜单,开机页面选择用户进入系统
、记录在分区表里面, 64 字节, 4 个分区,一个分区 16 个字节
、是一个 16 进制的字段, 2 字节; 55AA 或者 AA55
第三步: GRUB 菜单
寻找内核,系统控制权递给 grup 以后,将会显示提供用于选择,并根据选项加载 linux 内核文件; MBR 找到程序之后,BIOS 就结束了,开始 grub2 Centos 7 GRUB 2
主要使用的是 grup2 ,配置文件是 grup.cfg ,在操作系统中最好先备份
第四步:加载内核( kernel
从本地硬盘加载内核,此时控制权在内核;
检测内核(动态加载内核模块: modules :存放加载硬件驱动程序)并找到内核;
找到内核之后 boot loader 加载内核时的同时产生 initramfs :虚拟文件系统,需要通过 initramfs 挂载伪 根并加载驱动程序;
驱动程序存在之后 initramfs 消失,此时系统挂载真正的根和文件系统安装驱动程序
modules :在 /lib 内核下
init 进程初始化:是 Centos6 系统的,是一个个运行服务,且个别服务有依赖性
目前使用的是 Centos 7 systemd systemd LINUX 操作系统的一种 init 软件,优势是可以并行运行服务
第五步: systemd 进程
启动了第一个程序, systemd ,进程号 PID=1 ;路径: /lib/systemd/systemd
、硬件是内核管, systemd 启动之后为用户启用一个可以软件环境
、后面的服务由 systemd 负责(三个单元 sysint multi user getty ):
对系统进行初始化 sysint :用户名,网络基本设置,网络格式
进入命令行模式: multi-user ,开始执行系统自启动的服务
getty 单元给用户提供登录环境,进入系统登录页面
、最后通过 graphical 启动图形界面

5. Centos6 和 Centos7 的区别

Centos6 自带的服务是 service ,网卡是 eth0 标识
Centos7 自带的服务是 service systemctl ,网卡是 ens33 标识
en 标识 ethernet
s :热插拔网卡; USB 之类的扩展槽索引号
33 :是网卡的编号
lo 代表:本地回环, ip 地址: 127.0.0.1 ,即 localhost ;子网掩码: 255.0.0.0

6. 硬链接和软链接的区别

硬链接
相当于备份,可以用不同的文件名访问同样的内容
对文件内容进行修改,会影响到原文件;但是,删除一个文件名,不影响另一个文件名的访问
硬链接的 inode 号一样
软链接
指向原始文件所在的路径,又称为符号链接
对文件内容进行修改,会影响到原文件;
文件 A 和文件 B inode 号码虽然不一样,但是文件 A 的内容是文件 B 的路径。

7. PID有哪些状态,五大状态

1 、运行状态 / 正在运行状态
2 、可中断睡眠状态:暂时无工作状态,等到被唤醒
3 、不可中断睡眠状态:工作状态时,不可被打扰的状态
4 、僵尸进程 : 将死状态,进程存在又无法结束;这时需要找问题源头
5 、停止状态 / 暂停状态:
6 、已死 /dead 状态(此状态仅做了解)
两个异常的进程:僵尸进程和孤儿进程
僵尸进程:子进程完成工作之后,父进程无法接收子进程的信息;对系统是有害的,一直占用资源;解决办法:找到父进程,结束父进程,就变成孤儿进程;
孤儿进程:子进程完成工作之后,找不到父进程接收子进程的信息,系统会让进程号 PID=1 ,即 systemd 接收信息

8. 你平时对系统会怎么优化(五大负载)

8.1 cpu 使用率

(查看进程,占比大的进程是否可以优化): vmstat sar iostat top
负载优化: top uptime w
sar -u 1 3 :查看 cpu 的使用情况,间隔 1s ,监测 3
–u: 输出 cpu 使用情况和统计信息

8.2 内存 优化

free vmstat

8.3 磁盘优化

RAID :提升存储性能(硬盘的读写效率),提供数据备份技术;按照不同方式组合形成一个硬盘组
LVM :只是提高磁盘管理的灵活性,并不能提升硬盘的读写效率和提供数据备份技术磁盘水位: fdisk df -hT
raid(独立冗余磁盘阵列 )
raid 和硬 raid
RAID 在硬件层面上通过阵列卡实现 RAID 功能;实现步骤:在服务器上面插入磁盘阵列卡,阵列卡上面插入磁盘,开机-- 配置 RAID-- 安装系统; RAID 卡有自己的处理器 CPU
RAID 在系统上用  mdadm  工具去创建和管理
总结:软 RAID 依存于 OS ,硬 RAID 独立于 OS
raid 的分类和优势,最小由几块磁盘组成

8.4 I/O优化

( 命令需要 yum 安装,系统内无自带 ) iotop iostat
yum install sysstat
yum install iotop

8.5 网络优化

系统: ifconfig ip tcpdump natstat
优化端口范围
查询系统可分配的端口号: cat /proc/sys/net/ipv4/ip_local_port_range
更改配置文件: vim /etc/sysctl.conf
添加: net.ipv4.ip_local_port_range = 32768 60999
内核优化:文件打开数优化、 tcp 参数优化
打开文件数 临时: ulimit–n 65535 永久: vim /etc/security/limits.conf

8.6 cpu报警超90%应该怎么办

1. 首先使用 top 命令去定位 cpu 占比最高的进程
2. 其次使用 “lsof -p 进程号 查询占比高的进程号所占用的进程内容,若是异常进程直接 kill 杀死,若是正常服务进程占比高的,一方面要考虑是否受到攻击了,比如说挖矿,挖矿就是会隐藏在一个文件里面去占用你的cpu ,比如  mysql  里面也会以  MYI  的文件格式存在;另一方面可以看下是否服务进程需要优化,比如说 nginx 进程占比较高,那就要看是否需要优化 nginx
nginx优化网页访问速度:
:在可以重启的状态下,为避免同一客户端长时间占用连接,造成资源浪费,可在 http 段设置相应的连接超时参数 keepalive_timeout ,实现控制连接访问时间
:当 Nginx 将网页数据返回给客户端后,可针对静态网页设置缓存时间,通过在配置文件内的 http 段内的 server 段内添加  location ,更改字段 expires 1d 来实现;避免重复请求,加快了访问速度
:在高并发场景,需要启动更多的 nginx 进程以保证快速响应,避免造成阻塞;配置 worker_processes 开启多进程
:可在配置文件中加入相应的压缩功能参数对压缩性能进行优化,以节约网站带宽,提升用户的访问体验
:若 nginx PHP 解析功能实现是交给 FPM 处理的,为了提高 PHP 的处理速度,要根据服务器的内存与服务负载进行FPM 模块参数调整;比如增加 dynamic( 动态 ) 的方式产生 fpm 进程
nginx服务器本身安全性的优化
:在生产环境中,需要隐藏 Ngnx 的版本号,以避免安全漏洞的泄漏 ; 可以通过 http 端内的添加
server_tokens off 来关闭显示版本号,或者通过修改源码
:需要有用户与组的支持,用以实现对网站文件读取时进行访问控制;这里有两种方法进行配置
第一种:通过编译 nginx 时指定用户与组,即修改 ./configure 后面指定用户与组的参数
第二种:修改配置文件指定用户与组
:为了方便掌握 Nginx 运行状态需要进行日志分割;通过编写脚本来实现。
:设置防盗链,为了防止别人直接从你网站引用图片等链接,消耗了你的资源和网络流量

9. 一台 Linux 系统初始化环境后需要做一些什么安全工作

1 、添加普通用户登陆,禁止 root 用户登陆,更改 SSH 端口号:
修改 SSH 端口不一定绝对哈。当然,如果要暴露在外网,建议改下。
2 、服务器使用密钥登陆,禁止密码登陆。
3 、开启防火墙,关闭 SElinux ,根据业务需求设置相应的防火墙规则。
4 、装 fail2ban 这种防止 SSH 暴力破击的软件。
5 、设置只允许公司办公网出口 IP 能登陆服务器 ( 看公司实际需要 )
也可以安装 VPN 等软件,只允许连接 VPN 到服务器上。
6 、修改历史命令记录的条数为 10 条。
7 、只允许有需要的服务器可以访问外网,其它全部禁止。
8 、做好软件层面的防护。
   8.1 设置 nginx_waf 模块防止 SQL 注入。
   8.2 Web 服务使用 www 用户启动,更改网站目录的所有者和所属组为 www

10. Linux系统中常用的十条命令

检测系统整体的负载、承受能力 :top uptime w
cpu cpu 、内存、 pid pid 状态 ):vmstat sar iostat top
内存: free vmstat ;比如: free -m
磁盘水位: fdisk df -hT
I/O ( 命令需要安装,系统内无自带 ) iotop iostat
系统: ifconfig ip tcpdump
查询 pid 号: ps
查询文件大小: du -sh
挂载 :mount
lvm 内的命令: pvcreate lvcreate
raid 命令: mdadm
查询用户登录的身份: who w who am i
常用的复制命令: mv cp scp echo cat dd
查询服务端口: netstat lsof
ulimit uname -r grep systemctl watch

10.1 lsof -p 进程号

参数详解

COMMAND:进程的名称
PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
TYPE:文件类型,如DIR、REG等
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称
FD列中的文件描述符:
cwd值:表示应用程序的当前工作目录,这是该应用程序启动的目录,除非它本身对这个目录进行更改,txt类
型的文件是程序代码,如应用程序二进制文件本身或共享库,如上列表中显示的/sbin/init程序。其次数值
表示应用程序的文件描述符,这是打开该文件时返回的一个整数。如上的最后一行文件/dev/initctl,其文
件描述符为 10。
U:表示该文件被打开并处于读取/写入模式,而不是只读 ? 或只写 (w) 模式。同时还有大写 的W 表示该应
用程序具有对整个文件的写锁。该文件描述符用于确保每次只能打开一个应用程序实例。初始打开每个应用程
序时,都具有三个文件描述符,从0到2,分别表示标准输入、输出和错误流。所以大多数应用程序所打开的文
件的FD都是从3开始。
Type列:
文件和目录分别称为REG和DIR。
CHR表示字符;(fopen,打开文件)
BLK表示块设备;
UNIX、FIFO和IPv4,分别表示UNIX 域套接字、先进先出(FIFO)队列和网际协议(IP)套接字。
FIFO表示先进先出;(popen,pipe)
inet表示网际协议(IP)套接字tcp/udp;(socket)
netlink表示netlink

10.2 磁盘要满了怎么办

首先 df -hT--->  找到哪款磁盘 90%
找到对应的目录 du ---> 查看哪个目录、文件占用的空间最大,考虑是否删除 / 先备份再删除
rm -rf 指定删除一些冗余的文件 释放磁盘的空间
若批量删除的内容百万级超大时,可以使用  raync -avz --delete /opt
       --delete :删除目标位置有的而源目标没有的文件
最后还要 kill -9 大的文件进程号,即可

10.3 写文件的时候得到文件系统已满错误信息,但df显示还有剩余空间。

在磁盘建立文件是需要两个条件( 1 )磁盘空间 ( 2 inode ; df 显示有剩余空间那就是 indoe 分配完了,导致报此错误信息 ;可以删除一些不用的文件来释放indoe

10.4 在一台配置较低的Linux服务器(内存、硬盘比较小)的/data分区内创建文件时,系统提示磁盘空间不足,用df -h命令查看了一下磁盘使用情况,发现/data分区只使用了66%,还有12G的剩余空间,按理说不会出现这种问题。 后来用df -i查看了一下/data分区的索引节点(inode),发现已经用满 (IUsed=100%),导致系统无法创建新目录和文件。

查找原因
/data/cache  目录中存在数量非常多的小字节缓存文件,占用的 Block 不多,但是占用了大量的 inode
解决方案
1 、删除 /data/cache 目录中的部分文件,释放出 /data 分区的一部分 inode
2 、用软连接将空闲分区 /opt 中的 newcache 目录连接到 /data/cache ,使用 /opt 分区的 inode 来缓
/data 分区 inode 不足的问题:
ln -s /opt/newcache /data/cache
用删除inode的方式删除文件
find -inum 391866 -exec rm {} \;

10.5 tcpdump:什么参数,使用的场景

tcpdump -i ens33 -nnX port 21 (ftp 为什么不安全 )
tcpdump :是 linux 系统的抓包工具,默认安装
        -i:监听
        -nn:ip及端口号直接以数字显示,而非主机名与服务名称
        -X :可以列出十六进位 (hex) 以及 ASCII 的封包内容,对于监听封包內容很有用

10.6 实时查看日志的命令

tail -f
journalctl -f

10.7 IO问题排查思路及工具

1 、磁盘性能指标
指标 1 IOPS=r/s+w/s ,即每秒读写次数;
指标 2 : 吞吐量 =rkB/s+wkB/s ,即每秒读写数据量;
指标 3 : 使用率,是指磁盘忙处理 I/O 请求的百分比。过高的使用率(比如超过 80% )通常意味着磁盘 I/O 存在性能瓶颈;
指标 4 : 响应时间,是指从发出 I/O 请求到收到响应的间隔时间;
2 IO 问题排查思路
首先,查看系统 IO 情况,确认 IO 异常指标;( top/iostat
其次,查看各进程 IO 使用情况,确认导致指标异常的进程;( iotop/pidstat
最后,分析进程的 IO 行为(文件、磁盘读写),确认问题根源;( strace + ioprofile/lsof ​​​​​​​
3 、使用 iostat 命令查看系统 IO 情况
await IO 请求平均响应时间(队列排队时间 +IO 处理时间),一般系统 I/O 响应时间应该低于 5ms ,如
果大于 10ms 就比较大了;
svctm IO 请求平均处理时间,不包含等待时间;
%util :磁盘繁忙程度。 例如,如果统计间隔 1 秒,该设备有 0.8 秒在处理 I/O ,而 0.2 秒闲置,那么该
设备的 %util = 0.8/1 = 80%
avgqu-sz IO 请求的平均队列长度;
r/s + w/s 即为 IOPS
r MB/s + w MB/s 即为吞吐量;
r_await/w_await :读 / 写请求处理完成时间,等待时间 + 处理时间
4 iotop/pidstat  命令可以查看系统中每个进程 IO 使用情况
5 、分析进程 IO 行为
ioprofile  可以统计出某个进程对每个文件的读写情况,本质上是 lsof + strace 。对于 Java 应用,还可以使用jstack 等命令工具查看线程行为

11. linux 常用工具大全

Yum 仓库、编辑器: vim 编辑器、 gcc 语言编译器 wireshark 抓包工具、 gcc 编译器、 workstation 工作站:服务器的终端机

12. 如何存取文件

存储

存储最小单位是扇区,每个扇区包含 512 字节,按照扇区的顺序存储
写:分区 - 格式化 - 挂载 - 对应挂载点创建数据;格式化就是给系统创建一个文件系统( ext4 xfs 等),在文件系统的基础上才可以写数据,文件系统最小单元是块(block ),写在扇区实际是写在 block 上面;

读取

为了提升读取速度,连续八个扇区组成一个 block ,即 4k
一个文件有一个 inode ,一个 inode 128 字节或者 256 字节; inode 用于存储文件元信息,元信息包含:属主/ 属组文件信息,创建 / 更改时间,何时创建软 / 硬链接;等外在信息, inode 指向 block inode 相当于索引,寻找真正的存储硬盘,内容不再inode

13. pstop有什么不同

ps -au:占用的资源是从进程启动开始,计算的平均占用资源,比如cpu

top:实时占用的资源。

load average
load average: 0.09, 0.12, 0.19 系统平均负载 ,统计最近 1,5,15 分钟的系统平均负载。(每 5 分钟检查 一次,按特定算法计算)
Tasks 进程相关信息
Tasks: 287 total 进程总数
2 running 正在运行的进程数
285 sleeping 睡眠的进程数
0 stopped 停止的进程数
0 zombie 僵尸进程数
CPU 信息(当有多个 CPU 时,这些内容可能会超过两行)
1.5 us :用户空间所占 CPU 百分比
0.9 sy :内核空间占用 CPU 百分比
0.0 ni :用户进程空间内改变过优先级的进程占用 CPU 百分比
97.5 id :空闲 CPU 百分比
0.2 wa :等待输入输出的 CPU 时间百分比
0.0 hi :硬件 CPU 中断占用百分比
0.0 si :软中断占用百分比
0.0 st :虚拟机占用百分比
内存信息(第四行与第五行的信息与 free 命令类似)
8053444 total 物理内存总量
7779224 used 已使用的内存总量
274220 free 空闲的内存总量 free+used=total
359212 buffers 用作内核缓存的内存量
swap 信息
8265724 total :交换分区总量
33840 used :已使用的交换分区总量
8231884 free :空闲交换区总量
4358088 cached Mem :缓冲的交换区总量,内存中的内容被换出到交换区,然后又被换入到内存,但是使用过的交换区没有被覆盖,交换区的这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。

14. linux proc目录详解

/proc 是一种伪文件系统(也即虚拟文件系统), 存在内核当中,存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态

15. linux文件系统:inodeblockinode存储了哪些东西,目录名,文件名存在哪里

inode 用来存储文件属性信息,其中包括了文件大小,文件的归属者,文件的归属组,权限,类型,修 改时间,以及指向文件实体数据(block )的指针
        文件的字节数。
        文件拥有者的User ID
        文件的Group ID
        文件的读、写、执行权限。
        文件的时间戳,共有三个:ctime inode 上一次变动的时间, mtime 指文件内容上一次变动的时间,atime 指文件上一次打开的时间。
        链接数,即有多少文件名指向这个inode
        文件数据block 的位置。
block 中存储的就是文件的实际数据,比如说,照片,视频,音频等等,但是有一点需要注意!就是
inode 当中不包含文件名!一个文件的文件名,存储在上级目录的 block 中!

16. 运行 ifconfig -a 的时候提示 command not found ,会是什么原因,应该怎么办?

查看环境变量是否配置或配置是否正确, where is ifconfig 来查看所在路径
查看命令是否安装, yum install ifconfig 是否安装

17. 假设一个目录下面有多个访问日志文件,如何统计特IP在特定时的访问次数。

分析:查看访问日志文件并且用 grep 过滤特定 ip 日志追加到一个文件 (a.log), 在查看 a.log sed 打印特定的时间,最后用wc -l 统计;可写成脚本。

18. 什么是swap,它有什么用途

swap是交换分区虚拟内存,作用是物理内存不够用时,当用户提交程序,然后产生进程,在机器上运行。机器会判断当前物理内存是否还有空闲允许进程调入内存运行,如果有那么则直接调入内存进行运行;如果没有,那么会根据优先级选择一个进程挂起,把该进程交换到swap中等待,然后把新的进程调入到内存中运行。根据这种换入和换出,实现了内存的循环利用,让用户感觉不到内存的限制。

19. 列出常见的内网网段。

私有地址范围
10.0.0.0~10.255.255.255
172.16.0.0~172.31.255.255
192.168.0.0~192.168.255.255

20. HTTPHTTPS的区别是什么

如何在一台服务器上同时部署 http://www.163.com http://game.163.com 两个站点。如何进一步给这台服务器上的两个站点添加https 支持。
HTTPS HTTP 的区别主要如下:
1 https 协议需要到 ca 申请证书,一般免费证书较少,因而需要一定费用。
2 http 是超文本传输协议,信息是明文传输, https 则是具有安全性的 ssl 加密传输协议。
3 http https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80 ,后者是 443
4 http 的连接很简单,是无状态的; HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比http 协议安全。
nginx 来定义两个 resver 站点 ,https 支持要配置 ca 证书,配置是对 443 端口和 80 端口进行监听, 443 端 口要启用ssl 。监听 443 端口的 server 配置可以仿照上面 ca 认证页面的 nginx 配置示例进行配置。再通过 rewrite 方式把所有 http 请求也转成了 https 请求。

21. netstatss有什么区别

netstat 是遍历 /proc 下面每个 PID 目录, ss 直接读 /proc/net 下面的统计信息。所以 ss 执行的时候消耗资源以及消耗的时间都比netstat 少很多。

22. Linux系统优化有什么

1、登录系统 : 不使用 root 登录,通过 sudo 授权管理,使用普通用户登录。
2 、时间同步:定时自动更新服务器时间。
3 、配置 yum 更新源,从国内更新下载安装 rpm 包。
4 、关闭 selinux iptables iptables 工作场景如有 wan ip ,一般要打开,高并发除外)
5 、精简开机启动服务( crond sshd network rsyslog
6 Linux 内核参数优化 /etc/sysctl.conf ,执行 sysct -p 生效。
7 、锁定关键系统文件( chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow
/etc/inittab 处理以上内容后,把 chatter 改名,就更安全了。)

23. 常见的centosredhat故障怎么处理?

不好用,查笔记

1 、忘记 linux root 密码
GRUB 菜单限制
第一种方法:
忘记 root 密码时,这时重启虚拟机系统,并在 GRUB2 启动屏显时,按下 e 键进入救援模式需要先输入密码才可以更改密码;若不设置重置密码可直接更改,安全性变低
更改 grub 密码
grub2-setpassword :设置 grub 密码,这时是需要密码才可以更改root 密码,更改之后 ctrl+x ,退出当前界面 grub2 菜单进入系统
第二种方法:
生成秘钥:给密码加密,增加密码难度
使用 grub2-mkpasswd-pbkdf2 生成秘钥
2 grub.conf 丢失和解决办法
删除 /bootr/grub/gub.conf 文件
删除后重新启动查看出现的问题
可以看出系统是 无法从硬盘启动了
解决办法
一种是在无 Live-CD 光盘时解决,具体操作如下:
系统重启后,进入 grub 模式
首先查看 /boot 分区所在的位置,系统内核,第三行是临时系统镜像文件所在的位置,然后 boot 重启。
启动起来后进入 /boot/grub 目录下编辑 grub.conf 文件:
编辑 grub.conf 的内容如下:
配置启动菜单项,等待时间,菜单名称, root 启动文件的位置 启动时的系统内核位置及名称,内核镜像的位置及名称
编辑完后这错误也就彻底的解决了。

24. 怀疑一块网卡有问题的时候,如何检测?

将其安装在一台能正常上网的机器上,看其指示灯是否闪烁 , 正常接入状态下指示灯应为红色或者绿色,然后用ping 命令检测是否能 ping 通网络上的主机 , 若通则正常,若网卡驱动安装无误而 ping 命令不通 , 则可以断定网卡坏掉。

25. Linux系统用户数

/etc/security/limits.conf
# 当前用户最大登录数
# max number of logins for this user
* soft maxlogins 100
* hard maxlogins 100
# 系统最大登录用户数
# max number of logins on the system
* soft maxsyslogins 100
* hard maxsyslogins 100
未完,接下文...
  • 29
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值