M43 第一阶段考试

时间:2023-03-09 19:42:37
M43 第一阶段考试

一。解答题

1、统计当前主机的TCP协议网络各种连接状态出现的次数

netstat -an | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
netstat -nat | sed -nr '/^tcp/p' | sed -nr 's/.* ([[:alpha:]]+).*/\1/p' |sort
|uniq -c
ss -tan |tail -n +2|cut -d" " -f1|sort| uniq -c

2、编译源码包过程介绍。采用源码包编译的方式安装软件包时,有哪些基本过程、各自的作用是什么?

tar 解包:解压、释放安装包内的文件
./configure 配置:针对当前系统环境指定安装目录、选择功能等设置。
make 编译:将源代码编译成二进制的可执行程序、库文件等数据。
make install:将编译好的程序文件、配置文档等复制到对应的安装目录。

3、 为什么说 TCP 协议比 UDP 协议通讯更可靠,并简述 TCP 三次握手和四次挥手的网络连接和断开过
程。

由于 TCP 协议是基于连接的,具备数据收发确认效验机制,因此他比 UDP 协议通信可靠。
三次握手:
- 第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client
进入SYN_SENT状态,等待Server确认。
- 第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK
都置为1 ack=J+1,随机产生一个值seq=K, 并将该数据包发送给Client以确认连接请
求,Server进入SYN_RCVD状态。
- 第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,
ack=K+1,并将该数据包发送给Server,Server 检查ack是否为K+1,ACK是否为1,如
果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server
之间可以开始传输数据了。
四次挥手:
- 第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1
状态。
- 第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个
FIN占用一个序号),Server进入CLOSE_WAIT状态。
- 第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状
态。
- 第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号
为收到序号+1,Server进入CLOSED状态,完成四次挥手

  

4、 请简述将一块 100G 新硬盘插入服务器, 创建EXT4的逻辑卷1G,并配置挂载到 /data/log/,使用一段时
间空间不足,扩容到2G

看最后

5, 如何配置linux系统的环境变量,如何配置Linux系统的指定用户的环境变量。

系统环境变量:/etc/profile /etc/bash.bashrc /etc/environment #配置系统变量影响所有人
用户环境变量:~/profile ~/.bashrc ~/.bash_profile #配置指定用户的环境变量
不会影响到其他用户

6、检测网络状态一般用哪些指令,请例举。并说明具体用途?(俩种以上)

连接测试命令ping
说明:ping命令是windows的自带命令,它基于ICMP协议。通过ping命令的返回信息,可以判断能否连接远
程主机,并且看到连接远程主机的延迟时间。
网络连接状态命令netstat
说明: netstat 是一-个TCP/IP监控命令,它可以显示本机的核心路由表、实际的网络连接、开启的端口列
表,以及统计IP、TCP、UDP、和ICMP协议相关的通信流量。
路由表管理命令route
说明:使用route命令可以显示和修改本地路由表。入侵远程主机后,可以使用route命令来修改该主机在内网
的数据包流向,以便侦听内网明文传输的信息,偷窃其他内网用户的网络密码。

7、写出在 CentOS7.6 操作系统上创建系统用户 apache 的命令,要求其用户 id 和组 id 为 799

[root@localhost ~]# groupadd apache -g 799
[root@localhost ~]#
[root@localhost ~]# useradd -r apache -u 799 -g 799
[root@localhost ~]#
[root@localhost ~]# id apache
uid=799(apache) gid=799(apache) groups=799(apache)

8、请简述一下硬链接和软连接的区别和各自的特点

1.本质:硬链接:是一个文件,软连接 :不是一个文件
2. 跨设备 硬链接:不支持,软连接:支持
3. inode : 硬链接:相同,软连接: 不同
4. 链接数 :硬链接:创建新的硬链接,链接数会增加,删除硬链接,链接数会减少,软连接:创建或删除,
连接数不会变化
5. 文件夹:硬链接:不支持,软连接:支持
6.相对路径: 硬链接,原始文件相对路径是相对当前工作目录的,软连接:原始文件的相对路径是相对与链
接文件的相对路径
7. 删除源文件:只是链接数减1,但是链接文件的访问不受影响,软链接:链接文件将无法访问
8. 文件类型,硬链接:和源文件相同,软连接:链接文件,和源文件无关
9.文件大小:硬链接:和源文件相同,软链接:源文件的路径的长度

9、请简述一下 IP 地址分类和各自的私网或特殊地址范围

参考答案:
ipv4地址分为5类,分别是
A: 0.0.0.0-127.255.255.255
其中 0.0.0.0 和 127.x.x.x 是本地回环地址
10.x.x.x 是私网地址
B: 128.0.0.0-191.255.255.255
其中172.16.x.x---172.31.x.x 是私网地址
C: 192.0.0.0-223.255.255.255
其中192.168.X.X 是私网地址
D: 224.0.0.0-239.255.255.255
该类地址不分网络地址和主机地址,第一个字节以“1110”开始,它是一个专门保留的地址。
该类地址主要用于多点广播Multicast之中作为多播组IP地址
E: 240.0.0.0-255.255.255.255,其中段255不可用
该类地址不分网络地址和主机地址,地址是以“1111”开始,他的第一字节的范围是240~255,为将来使
用保留

10、请使用文本处理命令打印出 /etc/init.d/functions 的所有函数名称

cat /etc/init.d/functions | sed -nr 's/\{$//p'
cat /etc/init.d/functions | grep "^[a-zA-Z_]\+() {" | cut -d "(" -f1
cat /etc/init.d/functions | grep "()" | sed -nr 's/(.*)\(.*/\1/p'
cat /etc/init.d/functions | grep "() {" | sed -nr "s/(.*)\(\) \{$/\1/p"
cat /etc/rc.d/init.d/functions | egrep '^(_|[a-z])+ ?\(\)'
cat /etc/init.d/functions | sed -nr 's#(.*)\(\) .*#\1#p'
cat /etc/init.d/functions | grep "()"|awk '{print $1}'
egrep "[_[:alpha:]]+\(\)" /etc/rc.d/init.d/functions
cat /etc/rc.d/init.d/functions | egrep '^(_|[a-z])+ ?\(\)'

11、请分别简述几种常见的 raid 模式,并简述一下他们各自的特点

RAID0: 是一种简单的、无数据校验的数据条带化技术,可将多个磁盘合并成一个使用,容量大,读写速度
快。
RAID1: 称为镜像,它将数据完全一致地分别写到工作磁盘和镜像磁盘,它的磁盘空间利用率为 50%
RAID5: 使用数据校验功能的,校验数据分布在阵列中的所有磁盘上,当有一块磁盘损坏时可以使用检验数
据恢复,恢复数据是磁盘比较慢,
日常使用频率较高的RAID模式,是 RAID0 和 RAID1 的折中方案
RAID01:先做镜像,然后内部再做条带,比RAID10有跟好的容错性能,磁盘空间利用率50%
RAID10:先做条带,然后内部再做镜像,磁盘空间利用率50%。比RAID10 风险高,当有一组RAID故障时,
数据丢失不可用。

12 , 创建网桥br0,配置IP为10.0.0.123/24,并将eth0,eth1加入网桥,持久保存上面配置

nmcli con add type bridge con-name br0 ifname br0
nmcli connection modify br0 ipv4.addresses 10.0.0.123/24 ipv4.method manual
nmcli con up br0
nmcli con add type bridge-slave con-name br0-port0 ifname eth0 master br0
nmcli con add type bridge-slave con-name br0-port1 ifname eth1 master br0
nmcli con up br0-port0
nmcli con up br0-port1

13 抓取从源地址为10.0.0.111主机访问目标主机10.0.0.222的80/tcp端口的流量?

tcpdump -i eth0 -nn src host 10.0.0.111 and dst host 10.0.0.222 and tcp port 80

14 主机202.192.33.160/28的子网掩码是什么,所在网段最多有多个主机?

子网掩码:255.255.255.240
所在网段最多有32-28=4,2^4-2=14

二。扩展题

1、写一个脚本,实现批量添加20个用户,用户名为:user1-20,密码为user后面跟着几个随机字符或数
字。

#!/bin/bash
for i in `seq 1 20`;do
useradd user$i
echo "user`echo $RANDOM |md5sum|head -c 6`"| passwd --stdin user$i &>
/dev/null
done

2、编写一键编译安装httpd的脚本

#!/bin/bash
#解决依赖
yum -y install wget gcc gcc+ pcre-devel apr-devel apr-util-devel
yum -y groupinstall "Development Tools"
#下载 apache 安装包
wget https://mirror.bit.edu.cn/apache/httpd/httpd-2.4.46.tar.gz
#解压安装包
tar -xvf httpd-2.4.46.tar.gz && cd httpd-2.4.46
#生成 makefiel
./configure --prefix=/app/httpd
#开始编译
make && make install
#启动 apache
/app/httpd/bin/apachectl
#通过过滤端口 80 已经打开
[09:57:18 root@a7 ~]#lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 32963 root 4u IPv6 43432 0t0 TCP *:http (LISTEN)
httpd 33015 daemon 4u IPv6 43432 0t0 TCP *:http (LISTEN)

3,数字答案为 1 到 100 的随机数,执行脚本后等待用户输入数字,若猜中则结束游戏,未猜中则返回答
案和所输入数字的大小关系,最多可以猜5次,5次均未猜中则结束游戏

[root@localhost ~]# cat guess.sh
#!/bin/bash
randomNum=`expr $RANDOM % 100`
echo $randomNum
for((i=1;i<=5;i++)){
read -p "please input a number: " myNum
if [ $myNum -ne $randomNum ];then
if [ $myNum -gt $randomNum ];then
echo "please input a smaller number"
else
echo "please input a bigger number"
fi
else
echo "you win the game , randomNumber is $randomNum"
exit
fi
}

4,如何实现主机之间跨路由跨网段通讯。实验:主机A <<----- router1-----router2------>>主机B
主机A:

172.18.0.111/16
GATEWAY:172.18.0.200

router1:
eth0:172.18.0.200/16
eth1:192.168.6.200/24
router2:
eth0:192.168.38.200/24
eth1:192.168.6.201/24
主机B:192.168.38.222/24
GATEWAY:192.168.38.100

主机A:设置为桥接
路由1:设置eth0为桥接,eth1设置为仅主机
路由2:设置eth0为桥接,eth1为NAT
主机B:设置为NAT
#1、 更改所有机器ip
主机A:更改eth0 ip为172.18.0.111/16 gateway:172.18.0.200
重启network服务
route -n 查看路由信息
router1:修改eth0 ip为172.18.0.200/16
eth1 ip为192.168.6.200/24
重启network服务
router2:修改eth0 ip为192.168.38.200/24
eth1 ip为192.168.6.201/24
重启network服务
主机B:更改eth0 ip为192.168.38.222/24 gateway:192.168.38.100
重启network服务
route -n 查看路由信息
相邻机器之间可以ping通表示配置没有问题
#2 配置路由
router1:添加网络路由 route add -net 192.168.38.0/24 gw 192.168.6.201 dev eth1
或 添加默认路由 route add default gw 192.168.6.201
route -n 查看路由信息
router2:添加网络路由 route add -net 172.18.0.0/16 gw 192.168.6.200 dev eth1
route -n 查看路由信息
#3 linux系统默认不会做转发报文,因此需要添加路由转发选项
cat /proc/sys/net/ipv4/ip_forward
默认为0表示禁用
router1:
echo > 1 /proc/sys/net/ipv4/ip_forward
router2:
echo > 1 /proc/sys/net/ipv4/ip_forward
主机B: ping 172.18.0.111 连通即可

5. 简述OSI协议和TCP/IP协议的对应分层功能及相关协议

M43 第一阶段考试

第四题答案

1.添加硬盘,模拟100G

M43 第一阶段考试

M43 第一阶段考试

2.查看是否成功添加磁盘

[root@master01 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 100G 0 part /
├─sda3 8:3 0 2G 0 part
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 50G 0 part /data
sdb 8:16 0 100G 0 disk #新添加的100G磁盘
sr0 11:0 1 4.3G 0 rom

3.实现逻辑卷

3.1 创建物理卷

1.#先安装相关工具
[root@master01 ~]# yum install -y lvm2
2.#创建物理卷
[root@master01 ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
3.#查看物理卷简要信息
[root@master01 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb lvm2 --- 100.00g 100.00g #可以看到物理卷为100G
[root@master01 ~]# pvdisplay /dev/sdb #查看物理卷详细信息
"/dev/sdb" is a new physical volume of "100.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb
VG Name
PV Size 100.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID Qa7eTs-fam8-8u2E-c8DG-oGUJ-4xPX-afpBbA

3.2 创建卷组

[root@master01 ~]# vgcreate -s 16M vg0 /dev/sdb
Volume group "vg0" successfully created
#-s 16M,指定pe大小为16M
[root@master01 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg0 1 0 0 wz--n- 99.98g 99.98g

3.3 创建逻辑卷

[root@master01 ~]# lvcreate -n mydata -L 1G vg0 #创建1G的逻辑卷
Logical volume "mydata" created.
[root@master01 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync
Convert
mydata vg0 -wi-a----- 1.00g

3.4 创建文件系统

[root@master01 ~]# mkfs.ext4 /dev/vg0/mydata
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

3.5 对逻辑卷进行挂载

#先创建挂载点
[root@master01 ~]# mkdir /data/log
[root@master01 ~]# mount /dev/vg0/mydata /data/log/
[root@master01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 100G 3.3G 97G 4% /
devtmpfs 900M 0 900M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 12M 899M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda5 50G 33M 50G 1% /data
/dev/sda1 1014M 138M 877M 14% /boot
tmpfs 182M 0 182M 0% /run/user/0
/dev/mapper/vg0-mydata 976M 2.6M 907M 1% /data/log #已经挂载

4.实现逻辑卷扩容

因为使用一段时间后,导致空间不足,所以要进行扩容,扩容到2G

1.#空间扩展
[root@master01 ~]# lvextend -L +1G /dev/vg0/mydata
Size of logical volume vg0/mydata changed from 1.00 GiB (64 extents) to 2.00
GiB (128 extents).
Logical volume vg0/mydata successfully resized.
[root@master01 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync
Convert
mydata vg0 -wi-ao---- 2.00g
2.#文件系统的扩展
[root@master01 ~]# resize2fs /dev/vg0/mydata
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg0/mydata is mounted on /data/log; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/vg0/mydata is now 524288 blocks long.

检测是否扩展成功

[root@master01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 100G 3.3G 97G 4% /
devtmpfs 900M 0 900M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 12M 899M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda5 50G 33M 50G 1% /data
/dev/sda1 1014M 138M 877M 14% /boot
tmpfs 182M 0 182M 0% /run/user/0
/dev/mapper/vg0-mydata 2.0G 3.0M 1.9G 1% /data/log #可以看到已经扩容到2G