临沂供电公司网站,摄影网站的设计,做网站建设工资高吗,格尔木市建设局网站一 网络
1. 三次握手四次挥手 三次握手#xff1a;为了建立长链接进行交互即建立一个会话#xff0c;使用 http/https 协议 ① 客户端产生初始化序列号 Seqx #xff0c;向服务端发送建立连接的请求报文#xff0c;将 SYN1 同步序列号#xff1b; ② 服务端接收建立连接… 一 网络
1. 三次握手四次挥手 三次握手为了建立长链接进行交互即建立一个会话使用 http/https 协议 ① 客户端产生初始化序列号 Seqx 向服务端发送建立连接的请求报文将 SYN1 同步序列号 ② 服务端接收建立连接的请求之后产生初始化序号 Seqy 并发送一个确认包 Ackx1) 向客户端发送 建立连接的请求SYN1 确认客户端的数据 (ACK1) ③ 客户端收到服务端的回复Acky1包含收到请求确认信号ACK1确认客户端的数据三次握手成功 四次挥手是一个断开连接释放服务器资源的过程 ① 发送断开连接 FIN1 请求给服务端 , 断开连接确认 ACK1 第一次挥手 ② 服务端接收到断开连接的请求表示知道了第二次挥手
③ 然后确认ACK1请求断开服务器FIN1第三次挥手
④ 最终确认断开连接请求ACK1第四次挥手 1.1 如果已经建立了连接但是客户端突然出现故障了怎么办 TCP 还设有一个保活计时器显然客户端如果出现故障服务器不能一直等下去白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器时间通常是设置为2 小时若两小时还没有收到客户端的任何数据服务器就会发送一个探测报文段以后每隔75 秒钟发送一次。若一连发送 10 个探测报文仍然没反应服务器就认为客户端出了故障接着就关闭连接. 1.2 为什么连接的时候是三次握手关闭的时候却是四次握手 因为当 Server 端收到 Client 端的 SYN 连接请求报文后可以直接发送 SYNACK 报文。其中 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 TCP和UDP的区别 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-idADV为通告者
注意在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. 简述贵公司的PV、UV、IP流量等资源大小 PV 页面浏览量用户每次对网站中的网页访问均被记录一个 PV 。用户对同一页免得多次访问访问量累计。 UV 是指通过互联网访问 、浏览这个网页的自然人。 0-24 内相同客户端只被计算一次。 IP 独立 IP 指访问站点的 IP 次数 日访问量 100 万小时点击量 4-5 万最高 QPS 1000 左右 UV 量是 20-30 万 IP 量为 55 万 6. PXE内DHCP工作原理 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、Raid5、Raid10的区别 RAID:redundant array of independent disks, 独立冗余磁盘阵列 磁盘阵列是由很多块独立的磁盘组合成一个容量巨大的磁盘组利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术将数据切割成许多区段分别存放在各个硬盘上 RAID 提升存储性能硬盘的读写效率提供数据备份技术按照不同方式组合形成一个硬盘组 LVM 只是提高磁盘管理的灵活性并不能提升硬盘的读写效率和提供数据备份技术 1.1 RAID的作用为什么要用RAIDRAID的场景) 提高存储性能 实现冗余 目前大中型企业都在使用的技术 RAIDLVM 结合使用 1.2 RAID10和01的区别 RAID10: 是先做镜像再作条带化是对虚拟磁盘实现镜像 RAID01 是先做条带化再作镜像本质是对物理磁盘实现镜像先保证写的速度再保证读的速度 1.3 简述RAID5、RAID1、RAID0的优势与使用场景? 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的一个命令它属于 rndcRemote 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 进程号 PID1 路径 /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 状态此状态仅做了解 两个异常的进程僵尸进程和孤儿进程 僵尸进程子进程完成工作之后父进程无法接收子进程的信息对系统是有害的一直占用资源解决办法找到父进程结束父进程就变成孤儿进程 孤儿进程子进程完成工作之后找不到父进程接收子进程的信息系统会让进程号 PID1 即 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表示先进先出popenpipe
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)发现已经用满 (IUsed100%)导致系统无法创建新目录和文件。 查找原因 /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 IOPSr/sw/s 即每秒读写次数 指标 2 吞吐量 rkB/swkB/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. ps和top有什么不同 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 空闲的内存总量 freeusedtotal 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. HTTP与HTTPS的区别是什么 如何在一台服务器上同时部署 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 协议是由 SSLHTTP 协议构建的可进行加密传输、身份认证的网络协议比http 协议安全。 用 nginx 来定义两个 resver 站点 ,https 支持要配置 ca 证书配置是对 443 端口和 80 端口进行监听 443 端 口要启用ssl 。监听 443 端口的 server 配置可以仿照上面 ca 认证页面的 nginx 配置示例进行配置。再通过 rewrite 方式把所有 http 请求也转成了 https 请求。 21. netstat和ss有什么区别 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. 常见的centos和redhat故障怎么处理 不好用查笔记 1 、忘记 linux root 密码 GRUB 菜单限制 第一种方法 忘记 root 密码时这时重启虚拟机系统并在 GRUB2 启动屏显时按下 e 键进入救援模式需要先输入密码才可以更改密码若不设置重置密码可直接更改安全性变低 更改 grub 密码 grub2-setpassword 设置 grub 密码这时是需要密码才可以更改root 密码更改之后 ctrlx 退出当前界面 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 未完接下文...