目录
5. 总结IP地址 A, B, C, D 类,并解析IP地址的组成
6. 201.222.200.111/18计算主机数?子网掩码?说明计算方法
7. 当A(10.0.1.1/16)与B(10.0.2.2/24)通信,A如何判断是否在同一个网段?A和B能否通信?
8. 如何将10.0.0.0/8划分32个子网?求每个子网的掩码,主机数
9. 通过网络配置命令,让主机可以上网。 ip, netmask, gateway, dns,主机名。相关命令总结,最终可以通过这些配置让你的主机上网。
10. 解析/etc/sysconfig/network-scripts/ifcfg-eth0配置格式
1. 总结开放系统互联OSI模型,每层作用及对应的协议
OSI模型是一个通信协议参考模型,分为七个层次。每一层都提供了一组特定的功能,以实现网络通信。以下是每一层的作用及对应的协议:
物理层:负责传输原始的比特流,它定义了如何在物理媒介上传输数据。例如,传输介质可以是电缆、光纤或无线信号。物理层没有具体的协议。
数据链路层:在物理层之上建立逻辑连接,并将数据分成帧进行传输。数据链路层还处理错误检测和纠正,并控制访问共享介质。常见的协议有以太网(Ethernet)和无线局域网(Wi-Fi)。
网络层:负责管理不同设备之间的连接,转发分组或数据包到目标地址,并处理路由选择。最常用的协议是Internet协议(IP)。
传输层:负责端到端的传输控制,包括数据的分段、重组、流量控制和差错恢复等。最常用的协议是传输控制协议(TCP)和用户数据报协议(UDP)。
会话层:负责建立、管理和维护应用程序之间的会话。会话层协议包括Socket和NetBIOS等。
表示层:处理数据的编码、解码、加密和解密等,以确保数据能够正确地显示和传输。例如,JPEG和MPEG都是表示层协议。
应用层:提供特定的应用程序功能。例如,HTTP和FTP是Web浏览器和文件传输应用程序使用的应用层协议。
2. 调整动态端口范围为20000-60000
在Linux操作系统中,动态端口范围可以通过修改/proc/sys/net/ipv4/ip_local_port_range文件进行调整。
以下是将动态端口范围调整为20000-60000的步骤:
1). 使用root用户登录Linux操作系统查看原有配置
[root@Rocky8 ~]#cat /proc/sys/net/ipv4/ip_local_port_range
32768 60999
2). 打开终端窗口,输入以下命令以修改ip_local_port_range文件
[root@Rocky8 ~]#vim /etc/sysctl.conf
3). 在打开的文件中添加上面这一行,将端口号范围改为20000-60000
net.ipv4.ip_local_port_range = 20000 60000
4). 保存并关闭文件,然后运行以下命令以使更改生效
[root@Rocky8 ~]#sysctl -p
net.ipv4.ip_local_port_range = 20000 60000
5). 验证
[root@Rocky8 ~]#cat /proc/sys/net/ipv4/ip_local_port_range
20000 60000
这样就成功将Linux操作系统的动态端口范围调整为20000-60000。
3. 总结TCP包头结构,TCP三次握手,4次挥手
3.1 TCP包头结构
TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输层协议。在TCP通信中,每个数据包都有一定的格式,成为“TCP报文段”,其包头主要包括以下几个字段:
- 源端口号(16 bits):发送方端口号。
- 目的端口号(16 bits):接收方端口号。
- 序号(32 bits):TCP用来保证数据的有序性,每个TCP报文段都有一个序号,序号指的是TCP有效数据部分的第一个字节的编号。
- 确认号(32 bits):TCP对数据的确认机制,确认号指的是期望收到的下一个字节的序号。若发生丢包,则下一个报文段的序号仍是上一个还未被确认的序号。
- 数据偏移(4 bits):指的是TCP包头长度,以32位为单位计算,因此最大值为15,即最长TCP包头为60字节,不包括选项字段。
- 控制位(6 bits):主要包括ACK、SYN、FIN等等标志位,用于控制TCP传输过程中各种状态的转换。
- 窗口大小(16 bits):这个值用来告诉发送方还可以发送多少数据,避免了接收方处理不过来的现象。
- 校验和(16 bits):TCP使用校验和对报文段进行检错,以保证数据传输的可靠性。
- 紧急指针(16 bits):该字段用于表示紧急数据的末尾位置,仅当URG标志被置位时才有效果。
3.2 TCP三次握手
在TCP通信中,为了建立连接并保证数据传输的可靠性,需要进行三次握手。其过程如下:
- 第一次握手:客户端向服务端发送SYN包(同步请求),其中携带一个初始化序列号x。此时客户端进入SYN_SENT状态,等待服务端回复。
- 第二次握手:服务端接收到客户端的SYN包后,向客户端返回ACK包(确认包)和SYN包,其中ACK包用于确认客户端的SYN包已经被正确地接收,SYN包用于告诉客户端服务端也准备好了,并且服务端会在客户端初始化序列号基础上再加1作为自己的初始化序列号y。此时服务端进入SYN_RECEIVED状态。
- 第三次握手:客户端接收到服务端的SYNACK包后,向服务端回复ACK包,表示接收到了服务端的SYN包,并确认连接已经建立。这个ACK包不含任何数据,只是用于确认。客户端向服务端传递的ACK包中的确认序号应该是服务器的初始序号+1。此时客户端进入ESTABLISHED状态,表示TCP连接已经建立成功。
在三次握手中,第一次握手是客户端向服务端发起连接请求,第二次握手是服务端返回给客户端一个确认消息并表示自己也准备好了,第三次握手是客户端向服务端发送ACK包进行确认。这样就建立了一条TCP连接。
3.3 TCP四次挥手
在TCP通信中,当数据传输完成后,需要进行四次挥手来断开连接。其过程如下:
- 第一次挥手:客户端向服务端发送一个FIN包,表示客户端已经没有数据要发送了。客户端进入FIN_WAIT_1状态,等待服务端回复确认消息。
- 第二次挥手:服务端接收到客户端的FIN包后,向客户端发送一个ACK包,确认收到了关闭连接的请求。此时,服务端进入CLOSE_WAIT状态,等待自己的数据传输完成。
- 第三次挥手:当服务端的数据传输完成后,服务端向客户端发送一个FIN包,表示自己也准备关闭连接。服务端进入LAST_ACK状态。
- 第四次挥手:客户端收到服务端的FIN包后,向服务端发送一个ACK包,确认收到了关闭连接的请求。客户端进入TIME_WAIT状态,在这个状态下会等待一段时间(2MSL),确保服务端已经收到了自己的ACK包并且已经成功关闭连接。然后客户端关闭连接,服务端也关闭连接。
在四次挥手中,第一次和第二次挥手是用来告知服务端客户端的数据传输已经结束,并告诉服务端将要关闭连接。第三次挥手是服务端告知客户端自己的数据传输已经结束,并准备关闭连接。最后一次挥手是客户端向服务端确认关闭连接请求,并关闭自己的连接。这样双方就成功地关闭连接了。
4. 总结主机到主机的包传递过程
主机到主机的包传递过程可以分为以下几个步骤:
- 应用层封装数据:当一个应用程序要发送数据时,它首先将数据封装成应用层协议数据单元(PDU),比如HTTP报文或者FTP文件等。
- 传输层分段:传输层使用TCP或UDP协议将应用层数据分段并添加TCP或UDP头部信息,生成TCP/UDP数据报。 TCP会根据窗口大小、拥塞控制等情况进行流量控制和拥塞控制,保证数据传输的可靠性和效率。
- 网络层封装:网络层将TCP/UDP数据报添加IP头部信息,生成IP数据包。IP数据包包含源地址和目的地址,路由器就是根据这些地址来转发数据的。
- 数据链路层封装:数据链路层将IP数据包添加以太网帧头部和尾部信息,并生成以太网数据帧。以太网数据帧包含源MAC地址和目的MAC地址,交换机就是根据这些地址来转发数据的。
- 物理层传输:数据链路层将封装好的以太网数据帧发送到物理层,通过物理媒介(如电缆)进行传输。
- 接收端收到数据:接收端主机在物理层接收到数据后,将它逐层解封装,还原成应用层PDU,最终交给接收端应用程序处理。
在数据传输过程中,路由器和交换机扮演着重要的角色。路由器根据IP地址来判断数据包的目的地,并决定将其转发到哪个接口;交换机根据MAC地址来进行数据帧的转发,将数据帧发送到相应的接口。通过这些设备的协作,数据可以从源主机传输到目的主机。
5. 总结IP地址 A, B, C, D 类,并解析IP地址的组成
IP地址可以分为A、B、C、D四类,每个IP地址都由32位二进制数字组成,通常以“.”来分隔成4段十进制数。
- A类地址:A类地址的第一位固定为0,后面7位可用于网络地址,剩余24位用于主机地址。因此,A类地址有范围从1.0.0.0到126.0.0.0的所有地址。
- B类地址:B类地址的前两位固定为10,后面14位用于网络地址,剩余16位用于主机地址。因此,B类地址有范围从128.0.0.0到191.255.0.0的所有地址。
- C类地址:C类地址的前三位固定为110,后面21位用于网络地址,剩余8位用于主机地址。因此,C类地址有范围从192.0.0.0到223.255.255.0的所有地址。
- D类地址:D类地址的前四位固定为1110,后面28位用于多点广播地址。因此,D类地址有范围从224.0.0.0到239.255.255.255的所有地址。
IP地址的组成包括两部分,即网络地址和主机地址。网络地址用于标识属于哪个网络,而主机地址则用于在该网络上唯一标识一个主机。对于不同的IP地址类型,网络地址和主机地址所占的位数是不同的。其中,网络地址占用的位数越多,表示该IP地址可以支持的网络数量就越少;反之,则可以支持更多的网络。
6. 201.222.200.111/18计算主机数?子网掩码?说明计算方法
- IP地址是201.222.200.111,子网掩码长度为18位
- 主机位32-18=14
- 有2^14=16384个主机地址,可用地址16384-2=16382个
- 18位的子网掩码对应着255.255.192.0
- 我们需要将子网掩码转换为十进制表示法方便计算
7. 当A(10.0.1.1/16)与B(10.0.2.2/24)通信,A如何判断是否在同一个网段?A和B能否通信?
- A和B的IP地址都是10.0.x.x,但是它们的子网掩码不同。
- A的IP地址是10.0.1.1/16,表示A所在的网络的前16位二进制数是相同的,后面的16位是主机地址。
- 10.0.1.1与255.255.0.0转换为二进制做与运算
- A的网络地址为10.0.0.0
- B的IP地址是10.0.2.2/24,表示B所在的网络的前24位二进制数是相同的,后面的8位是主机地址。
- 10.0.2.2与255.255.255.0转换为二进制做与运算
- A的网络地址为10.0.2.0
- 当A要和B通信时,A需要判断B是否在同一个子网中
- 很明显,A和B的网络地址不同,因此它们不在同一个子网中。
- 因此,A无法直接与B通信,需要通过路由器等等网络设备来进行数据传输。
8. 如何将10.0.0.0/8划分32个子网?求每个子网的掩码,主机数
- 2^5=32 所以要想划分32个子网,网络位需要向主机位借5位,变成网络位
- 所以网络位8+5=13,主机位32-13=19
- 主机数2^19=524288,可用主机数524286
- 子网掩码255.248.0.0
- 注意,每个子网的第一个IP地址是网络地址,最后一个IP地址是广播地址,因此可用的主机地址数是2^19-2=524286个
9. 通过网络配置命令,让主机可以上网。 ip, netmask, gateway, dns,主机名。相关命令总结,最终可以通过这些配置让你的主机上网。
-
配置IP地址和子网掩码:
ifconfig eth0 192.168.1.2 netmask 255.255.255.0
-
配置网关:
route add default gw 192.168.0.2
-
配置DNS:
修改
/etc/resolv.conf
文件,添加以下内容:nameserver 8.8.8.8 nameserver 114.114.114.114
-
配置主机名:
[root@Rocky8 ~]#hostnamectl set-hostname admin [root@Rocky8 ~]#hostname admin
- 网卡生效
[root@Rocky8 ~]#nmcli connection reload
[root@Rocky8 ~]#nmcli connection up eth0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
完成以上步骤后,可以使用以下命令测试主机是否可以上网:
[root@Rocky8 ~]#ping www.baidu.com
PING www.a.shifen.com (180.101.50.242) 56(84) bytes of data.
64 bytes from 180.101.50.242 (180.101.50.242): icmp_seq=1 ttl=128 time=5.68 ms
64 bytes from 180.101.50.242 (180.101.50.242): icmp_seq=2 ttl=128 time=4.02 ms
如果能够收到响应,则说明主机已经成功上网了。
10. 解析/etc/sysconfig/network-scripts/ifcfg-eth0配置格式
文件/etc/sysconfig/network-scripts/ifcfg-eth0是用于配置Linux系统中网卡设备eth0的网络设置的文件,该文件的配置格式如下:
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4
ONBOOT=yes
详解:
- DEVICE:指定网络接口的名称,即eth0。
- BOOTPROTO:指定网络接口的启动协议。该参数的可选值有static、dhcp、bootp、none。在本例中,设为static,表示该网卡使用静态IP地址配置。
- IPADDR:指定网络接口的IP地址。
- NETMASK:指定网络接口的子网掩码。
- GATEWAY:指定网络接口的默认网关。
- DNS1和DNS2:指定DNS服务器的IP地址。可以指定多个DNS服务器,以DNS1、DNS2、DNS3等方式命名。
- ONBOOT:指定网络接口是否在系统启动时自动启用。设为yes表示自动启用。
11. 通过ifconfig命令结果找到ip地址
[root@Rocky8 ~]#ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.202 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::20c:29ff:fe9d:f85b prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:9d:f8:5b txqueuelen 1000 (Ethernet)
RX packets 23178 bytes 27490478 (26.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 10622 bytes 681680 (665.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@Rocky8 ~]#ifconfig eth0 |grep netmask
inet 192.168.0.202 netmask 255.255.255.0 broadcast 192.168.0.255
12. 总结系统安装之后的常用初始化步骤
12.1 配置网络
12.1.1 修改网卡名称
[root@localhost ~]# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/rl-swap rd.lvm.lv=rl/root rd.lvm.lv=rl/swap"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true
[root@localhost ~]# sed -ri '/GRUB_CMDLINE_LINUX=/s/(.*)"$/\1 net.ifnames=0"/' /etc/default/grub
[root@localhost ~]# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/rl-swap rd.lvm.lv=rl/root rd.lvm.lv=rl/swap net.ifnames=0"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true
[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
done
[root@localhost ~]# reboot
12.1.2 配置IP
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls
ifcfg-eth0
[root@localhost network-scripts]# vim ifcfg-eth0
[root@localhost network-scripts]# cat ifcfg-eth0
DEVICE=eth0
NAME=eth0
BOOTPROTO=static
IPADDR=192.168.0.201
PREFIX=24
GATEWAY=192.168.0.2
DNS1=223.6.6.6
DNS2=180.76.76.76
ONBOOT=yes
12.1.3 网卡配置文件生效
[root@localhost network-scripts]# nmcli connection reload
[root@localhost network-scripts]# nmcli connection up eth0
[root@localhost ~]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.201 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::20c:29ff:feae:58a1 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:ae:58:a1 txqueuelen 1000 (Ethernet)
RX packets 18663 bytes 26494955 (25.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6307 bytes 445841 (435.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
12.1.4 CentOS各版本网卡配置文件生效方法
#CentOS6
service network restart
#CentOS7
systemctl restart network
#CentOS8和rocky
nmcli connnection reload
nmcli connnettion up eth0
#通用(不建议)
reboot
12.1.5 验证网络
[root@localhost ~]# ping www.baidu.com
PING www.a.shifen.com (180.101.50.188) 56(84) bytes of data.
64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=1 ttl=128 time=3.93 ms
64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=2 ttl=128 time=3.96 ms
64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=3 ttl=128 time=3.40 ms
64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=4 ttl=128 time=3.36 ms
64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=5 ttl=128 time=3.33 ms
64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=6 ttl=128 time=3.72 ms
^C
--- www.a.shifen.com ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5010ms
rtt min/avg/max/mdev = 3.330/3.614/3.962/0.277 ms
12.2 设置主机名
[root@localhost ~]# hostnamectl set-hostname Rocky8
[root@localhost ~]# logout
[root@Rocky8 ~]#
12.3 设置hosts映射
[root@Rocky8 ~]# echo "192.168.0.201 Rocky8" >> /etc/hosts
[root@Rocky8 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.201 Rocky8
12.4 关闭防火墙
[root@Rocky8 ~]# systemctl disable --now firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
#相当于
systemctl stop firewalld
systemctl status firewalld
systemctl disable firewalld
[root@Rocky8 ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: ena>
Active: inactive (dead)
Docs: man:firewalld(1)
Apr 08 09:53:24 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall da>
Apr 08 09:53:24 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall dae>
Apr 08 09:53:24 localhost.localdomain firewalld[1008]: WARNING: AllowZoneDrifting is enabl>
Apr 08 10:17:46 Rocky9 systemd[1]: Stopping firewalld - dynamic firewall daemon...
Apr 08 10:17:47 Rocky9 systemd[1]: firewalld.service: Succeeded.
Apr 08 10:17:47 Rocky9 systemd[1]: Stopped firewalld - dynamic firewall daemon.
lines 1-11/11 (END)
12.5 关闭selinux
[root@Rocky8 ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
[root@Rocky8 ~]# sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config
[root@Rocky8 ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
12.6 设置支持光盘(/misc/cd对应就是光盘内容)
[root@Rocky8 /]# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
[root@Rocky8 /]# yum -y install autofs
[root@Rocky8 /]# systemctl enable --now autofs
Created symlink /etc/systemd/system/multi-user.target.wants/autofs.service → /usr/lib/systemd/system/autofs.service.
[root@Rocky8 /]# ls
bin dev home lib64 misc net proc run srv tmp var
boot etc lib media mnt opt root sbin sys usr
[root@Rocky8 ~]# ls /misc/cd
BaseOS EFI images isolinux LICENSE media.repo Minimal TRANS.TBL
12.7 配置仓库(系统源,EPEL源等等)
[root@Rocky8 ~]# cd /etc/yum.repos.d/
[root@Rocky8 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@Rocky8 yum.repos.d]# mkdir backup
[root@Rocky8 yum.repos.d]# mv *.repo backup/
[root@Rocky8 yum.repos.d]# ls
backup
[root@Rocky8 yum.repos.d]# vim rocky.repo
[root@Rocky8 yum.repos.d]# cat rocky.repo
[BaseOS]
name=Rocky$releasever - BaseOS
baseurl=file:///misc/cd/BaseOS
https://mirrors.aliyun.com/rockylinux/9/BaseOS/x86_64/os/
https://mirrors.cloud.tencent.com/rocky/9/BaseOS/x86_64/os/
https://mirrors.nju.edu.cn/rocky/9/BaseOS/x86_64/os/
gpgcheck=0
[AppStream]
name=Rocky$releasever - AppStream
baseurl=file:///misc/cd/AppStream
https://mirrors.aliyun.com/rockylinux/9/AppStream/x86_64/os/
https://mirrors.cloud.tencent.com/rocky/9/AppStream/x86_64/os/
https://mirrors.nju.edu.cn/rocky/9/AppStream/x86_64/os/
gpgcheck=0
[epel]
name=Rocky$releasever - epel
baseurl=https://mirrors.nju.edu.cn/epel/$releasever/Everything/$basearch/
https://mirrors.cloud.tencent.com/epel/$releasever/Everything/$basearch/
https://mirrors.aliyun.com/epel/$releasever/Everything/$basearch/
gpgcheck=0
enabled=1
[extras]
name=Rocky$releasever - extras
baseurl=https://mirrors.cloud.tencent.com/rocky/$releasever/extras/$basearch/os/
https://mirrors.nju.edu.cn/rocky/$releasever/extras/$basearch/os/
https://mirrors.aliyun.com/rockylinux/$releasever/extras/$basearch/os/
gpgcheck=0
enabled=1
12.8 最小化安装系统建议安装常用软件
[root@Rocky8 ~]#yum -y install autofs vim-enhanced tcpdump autofs chrony lrzsz tree telnet ftp lftp redhat-lsb-core bash-completion net-tools postfix wget bzip2 zip unzip xz lsof mlocate man-pages rsync
12.9 扩展设置(可设可不设)
12.9.1 命令提示符
PS1="\[\e[1;5;41;33m\][\u@\h \W]\\$\[\e[0m\]"
PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$"
12.9.2 历史配置文件设置
export HISTSIZE=1000
export HISTFILESIZE=2000
export HISTTIMEFORMAT=" %F %T "
export HISTCONTROL=ignorespace
if [ "$HISTCONTROL" = "ignorespace" ] ; then
export HISTCONTROL=ignoreboth
else
export HISTCONTROL=ignoredups
fi