1、RAID相关
总结RAID 0, 1, 5, 10, 01的工作原理。总结各自的利用率,冗余性,性能,至少几个硬盘实现。
1.1、RAID 0(条带化)
工作原理:RAID 0将数据分割成多个块(条带),并将这些块写入阵列中的多个磁盘上。这是一种没有数据冗余的RAID级别,仅用于提高性能。
利用率:100%。所有磁盘空间都可用于存储数据。
冗余性:无。如果一个磁盘发生故障,所有数据都会丢失。
性能:通常比单个磁盘快,因为数据读写可以同时发生在多个磁盘上。
所需硬盘数:至少两个。
1.2、RAID 1(镜像)
工作原理:RAID 1通过创建数据的完整镜像来提高数据冗余性。每个写操作都会同时写入两个(或多个)磁盘。
利用率:50%。因为只有一半的空间用于存储实际数据,另一半则用于镜像。
冗余性:高。如果一个磁盘发生故障,可以从另一个磁盘中恢复数据。
性能:通常与单个磁盘相似或稍慢,因为每个写操作都需要写入多个磁盘。
所需硬盘数:至少两个。
1.3、RAID 5
工作原理:RAID 5通过在所有磁盘上分布数据和奇偶校验信息来实现冗余。奇偶校验数据用于在磁盘故障时恢复数据。
利用率:(N-1)/N,其中N是磁盘数。因为每个磁盘都包含一部分数据和一部分奇偶校验信息。
冗余性:中。可以容忍单个磁盘故障,并从其他磁盘中恢复数据。
性能:读操作通常很快,因为数据可以并行地从多个磁盘中读取。写操作可能稍慢,因为需要更新奇偶校验信息。
所需硬盘数:至少三个。
1.4、RAID 10
工作原理:RAID 10是RAID 1和RAID 0的组合。它首先创建数据的镜像对(RAID 1),然后再对这些镜像对进行条带化(RAID 0)。
利用率:50%。与RAID 1相同,因为只有一半的空间用于存储实际数据。
冗余性:高。与RAID 1相似,可以容忍镜像对中的一个磁盘故障。
性能:通常比RAID 1快,因为数据读写可以并行发生在多个磁盘对上。
所需硬盘数:至少四个,并且磁盘数必须是偶数。
1.5、RAID 0+1
工作原理:RAID 0+1先对数据进行条带化(RAID 0),然后再对整个条带化数组进行镜像(RAID 1)。
利用率:50%。与RAID 1和RAID 10相同。
冗余性:高。与RAID 1和RAID 10相似,可以容忍镜像中的一个条带化数组故障。
性能:通常与RAID 10相似,但具体取决于实现方式。
所需硬盘数:至少四个,并且磁盘数必须是偶数。
2、LVM磁盘扩容及缩容
2. 完成对LVM磁盘扩容及缩容示例。
2.1、LVM磁盘扩容示例
1、添加新的物理卷
pvcreate /dev/sdb
2、将新的物理卷添加到卷组中
vgextend myvg /dev/sdb
3、扩展逻辑卷
sudo lvextend -L +10G /dev/myvg/mylv
4、调整文件系统大小
resize2fs /dev/myvg/mylv
2.2、LVM磁盘缩容示例
1、调整文件系统大小
resize2fs /dev/myvg/mylv 50G # 假设你想将文件系统大小调整为50G
2、缩小逻辑卷
lvresize -L 50G /dev/myvg/mylv
3、从卷组中移除物理卷
物理卷上没有任何数据
确保物理卷上没有分配任何逻辑扩展块:
pvmove /dev/sdb
卷组中移除物理卷:
vgreduce myvg /dev/sdb
删除物理卷:
pvremove /dev/sdb
3、程序包管理器
3. 总结程序包管理器有哪些,以及包中包含什么内容的文件,尝试这些文件如何获取命令获取? yum/dnf/apt总结程序包获取途径,以及rpm, yum, apt命令选项示例。
3.1、RPM (Red Hat Package Manager)
主要用于Red Hat系列发行版(如CentOS、Fedora等)。
包文件通常以
.rpm
结尾。包含二进制程序、库、配置文件、文档等。
获取命令:通常从发行版的官方仓库或第三方仓库下载
.rpm
文件,然后使用rpm
命令安装。命令选项示例:
- 安装:
rpm -ivh package.rpm
- 卸载:
rpm -e package
- 查询:
rpm -q package
3.2、YUM (Yellowdog Updater Modified)
是RPM的前端工具,主要用于自动处理依赖关系。
通过仓库(repositories)获取软件包,这些仓库可以是本地的或远程的。
获取途径:配置仓库后,使用
yum
命令从仓库中获取和安装软件包。命令选项示例:
- 安装:
yum install package
- 升级:
yum update package
- 搜索:
yum search keyword
- 清理缓存:
yum clean all
3.3、DNF (Daemon-less package manager for Fedora)
是Fedora及一些其他发行版的默认包管理器,旨在作为YUM的替代品。
提供了更快的依赖解析和更好的性能。
使用方式与YUM相似,但具有一些额外的功能和改进。
命令选项示例:与YUM类似,但可能有一些额外的选项或功能。
3.4、APT (Advanced Package Tool)
主要用于Debian系列发行版(如Ubuntu、Debian等)。
通过仓库获取软件包,支持自动解决依赖关系。
获取途径:配置仓库后,使用
apt
或apt-get
命令从仓库中获取和安装软件包。包文件通常存储在
/var/cache/apt/archives/
目录下。命令选项示例:
- 安装:
apt install package
或apt-get install package
- 升级:
apt upgrade package
或apt-get upgrade package
- 搜索:
apt search keyword
或apt-cache search keyword
- 清理缓存:
apt clean
或apt-get clean
3.5、程序包获取途径
YUM/DNF:通过配置仓库地址,使用
yum
或dnf
命令从远程仓库下载和安装软件包。APT:同样通过配置仓库地址,使用
apt
或apt-get
命令从远程仓库下载和安装软件包。RPM:可以直接从官方网站或第三方源下载
.rpm
文件,然后使用rpm
命令安装。
4、yum/dnf工作原理
4. 简要总结yum/dnf工作原理。并搭建私有yum仓库(base, epel源)给另一个虚拟机使用。
4.1、yum/dnf工作原理
YUM/DNF 工作原理
YUM (Yellowdog Updater Modified) 和 DNF (Daemon-less package manager for Fedora) 都是用于管理RPM包的工具,它们的主要工作原理如下:
1、仓库配置:YUM/DNF 首先读取配置文件(通常在
/etc/yum.repos.d/
目录下),这些配置文件定义了可用的软件仓库。每个仓库都有一个唯一的ID,以及一个或多个用于获取软件包的基础URL。2、解析依赖:当用户请求安装一个软件包时,YUM/DNF 会检查该软件包及其所有依赖项是否已安装。如果某些依赖项未安装,它们将自动添加到安装列表中。
3、下载软件包:YUM/DNF 根据仓库配置信息,从指定的URL下载所需的软件包和依赖项。
4、安装软件包:使用RPM工具,YUM/DNF 安装下载的软件包。RPM负责解压、复制文件到适当的位置,并运行任何必要的安装脚本。
5、数据库更新:安装完成后,YUM/DNF 更新其本地数据库,记录已安装的软件包及其版本,以便将来的操作(如升级或删除)能基于最新的信息。
6、清理缓存:用户可以选择清理下载的软件包缓存,以节省磁盘空间。
4.2、搭建私有yum仓库(base, epel源)给另一个虚拟机使用
服务端:
1、创建仓库目录
2、复制软件包:
将所需的RPM软件包复制到相应的仓库目录中。
3、生成仓库元数据
在每个仓库目录下运行
createrepo
命令生成元数据。createrepo /var/yumrepo/base
4、配置HTTP服务
安装并配置一个HTTP服务器(如Apache或Nginx),以便客户端可以通过HTTP访问仓库。
确保HTTP服务器配置正确,并且仓库目录对客户端可见。
客户端
1、配置客户端YUM仓库
/etc/yum.repos.d/myrepo.repo
[mybase]
name=My Base Repository
baseurl=http://yumrepo-server/base
enabled=1
gpgcheck=0
[myepel]
name=My EPEL Repository
baseurl=http://yumrepo-server/epel
enabled=1
gpgcheck=02、在客户端使用私有仓库
使用
yum
或dnf
命令从私有仓库安装软件包
5、安装常用初始化步骤
5. 总结系统安装之后的常用初始化步骤。rocky/ubuntu
rocky
#关闭SELinux
sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config#关闭防火墙
systemctl disable --now firewalld#支持光盘,/misc/cd对应就是光盘内容
yum -y install autofs
systemctl enable --now autofs
#配置yum 仓库
系统源,EPEL源#修改网卡名称
[root@rocky8 ~]#sed -ri '/GRUB_CMDLINE_LINUX=/s#(.*)"$#\1 net.ifnames=0"#' /etc/default/grub
[root@rocky8 ~]#grub2-mkconfig -o /boot/grub2/grub.cfg
[root@rocky8 ~]#reboot#最小化安装系统后,建议安装常用软件
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 rsyncUbuntu开启root远程登录功能
#sudo -i
#passwd root
#sed -i '/PermitRootLogin/c PermitRootLogin yes' /etc/ssh/sshd_config
#systemctl restart sshd
6、httpd一键安装脚本
6. 解读一键安装httpd脚本,并自行实现一个一键安装脚本,要求
1)基于位置变量传递版本号
2)基于独立函数进行初始化步骤,禁用防火墙,安装开发依赖包。
3)基于独立函数进行下载包,解压包。
4)基于独立函数进行编译,安装包。
5)基于独立函数完成链接包。
6)启动服务,并输出自定义的语句,安装xxx服务
7、OSI模型相关
7. 总结开放系统互联OSI模型,每层作用及对应的协议。
物理层 (Physical Layer):
- 作用:负责传输数据的物理媒介,如电缆、光纤、无线电波等,以及信号的编码、解码和传输速率等物理特性。
- 对应协议:没有具体的协议,但涉及电气、机械和功能特性方面的标准,如RS-232、Ethernet物理层标准IEEE 802.3等。
数据链路层 (Data Link Layer):
- 作用:提供相邻节点间可靠的数据传输,包括帧的封装、错误检测、流控等。
- 对应协议:Ethernet (IEEE 802.3), Wi-Fi (IEEE 802.11), Point-to-Point Protocol (PPP), HDLC, SDLC等。
网络层 (Network Layer):
- 作用:负责网络中的寻址和路由选择,决定数据包在网络中的传输路径。
- 对应协议:Internet Protocol (IP), Internet Control Message Protocol (ICMP), Address Resolution Protocol (ARP), Routing Information Protocol (RIP), Open Shortest Path First (OSPF)等。
传输层 (Transport Layer):
- 作用:建立端到端的可靠或不可靠的数据传输服务,包括错误恢复、流量控制、多路复用等。
- 对应协议:Transmission Control Protocol (TCP), User Datagram Protocol (UDP)等。
会话层 (Session Layer):
- 作用:建立、管理和终止会话,协调不同应用进程之间的对话过程。
- 对应协议:在实际应用中,许多会话层功能往往合并到传输层或者应用层实现,例如NetBIOS Session Service、SQL-SQLNET等。
表示层 (Presentation Layer):
- 作用:处理数据的表示格式,包括数据加密、压缩、字符编码等,确保不同系统间的透明数据传输。
- 对应协议:ASCII, Unicode, JPEG, MPEG等编码标准,SSL/TLS用于加密传输。
应用层 (Application Layer):
- 作用:直接与应用程序交互,定义各种应用服务和接口,实现用户所需的各种网络服务功能。
- 对应协议:HTTP (Hypertext Transfer Protocol), FTP (File Transfer Protocol), SMTP (Simple Mail Transfer Protocol), Telnet, SSH (Secure Shell), DNS (Domain Name System)等。
8、动态端口调整
8. 调整动态端口范围为20000-60000
查看当前的动态端口范围:
cat /proc/sys/net/ipv4/ip_local_port_range
修改动态端口范围为20000-60000:
sudo sysctl -w net.ipv4.ip_local_port_range="20000 60000"
这个修改将在当前系统会话中生效,但重启后设置会恢复原样。要永久保存这个设置,你需要编辑系统启动时加载的配置文件,如
/etc/sysctl.conf
,并在其中添加如下一行:net.ipv4.ip_local_port_range = 20000 60000
然后,为了让修改后的配置立即生效,并在下次启动时自动加载,执行:
sysctl -p
9、TCP相关
9. 总结TCP包头结构,TCP三次握手,4次挥手。
9.1、TCP包头结构
TCP(传输控制协议)的包头通常包含以下字段(按字节顺序排列):
- 源端口号(Source Port):16位,标识发送端应用程序的端口号。
- 目的端口号(Destination Port):16位,标识接收端应用程序的端口号。
- 序列号(Sequence Number):32位,用于对发送的字节流进行编号,以便接收端能够按序组装数据。
- 确认号(Acknowledgment Number):32位,表示接收端期望从发送端接收的下一个字节的序列号。
- 数据偏移(Data Offset):4位,表示TCP头部长度,以32位字(4字节)为单位。
- 保留(Reserved):6位,通常设置为0。
- 控制位(Control Bits):6位,包含多个标志位,如:
- URG(紧急指针有效)
- ACK(确认)
- PSH(推送)
- RST(重置)
- SYN(同步)
- FIN(结束)
- 窗口大小(Window Size):16位,表示接收端愿意接收的数据的字节数。
- 校验和(Checksum):16位,用于校验TCP头部和数据的完整性。
- 紧急指针(Urgent Pointer):16位,当URG标志位为1时,该字段有效,表示紧急数据的位置。
- 选项(Options):可变长度,最多包含40字节的附加信息。
- 填充(Padding):用于确保TCP头部是32位的整数倍。
9.2、TCP三次握手
TCP三次握手是TCP协议建立连接的过程,包括以下三个步骤:
- SYN(同步)请求:客户端发送一个SYN报文段,并包含其初始序列号。该报文段请求与服务器建立连接。
- SYN+ACK(同步+确认)响应:服务器收到SYN报文段后,发送一个SYN+ACK报文段作为响应。这个报文段包含服务器的初始序列号,以及对客户端SYN报文段的确认(通过确认号实现)。
- ACK(确认)响应:客户端收到SYN+ACK报文段后,发送一个ACK报文段作为响应。这个报文段的序列号等于客户端的初始序列号加1,确认号等于服务器的初始序列号加1。至此,连接建立完成。
9.3、TCP四次挥手
TCP四次挥手是TCP协议断开连接的过程,包括以下四个步骤:
- FIN(结束)请求:客户端发送一个FIN报文段,并包含其当前的序列号。该报文段表示客户端没有更多的数据要发送,希望断开连接。
- ACK(确认)响应:服务器收到FIN报文段后,发送一个ACK报文段作为响应。这个报文段的序列号等于服务器的当前序列号,确认号等于客户端的序列号加1。此时,客户端进入FIN_WAIT2状态,等待服务器关闭连接。
- FIN(结束)请求:服务器在发送完其所有数据后,也发送一个FIN报文段给客户端。这个报文段包含服务器的当前序列号。
- ACK(确认)响应:客户端收到服务器的FIN报文段后,发送一个ACK报文段作为响应。这个报文段的序列号等于客户端的当前序列号,确认号等于服务器的序列号加1。至此,连接断开完成。服务器进入LAST_ACK状态,等待一小段时间以确保客户端收到ACK报文段,然后关闭连接。客户端在发送完ACK报文段后,直接关闭连接。
10、主机到主机的包传递过程
10. 总结主机到主机的包传递过程。
主机到主机的包传递过程涉及多个层次和网络组件的交互。以下是该过程的一个基本总结:
应用层数据封装
传输层封装(TCP/UDP)
网络层封装(IP)
ARP(地址解析协议)过程
数据链路层封装
交换机转发
路由器转发
多次封装和解封装
目的主机接收
错误检测和重传
11、IP地址组成
11. 总结IP地址 A, B, C, D 类,并解析IP地址的组成
IP地址被分为A、B、C、D四个类别,它们是根据第一个字节中的最高位来确定的。这些类别的划分有助于管理和分配IP地址,以及确定网络的大小和范围。以下是关于这四个类别的总结:
A类IP地址:
- 地址范围:从1.0.0.0到126.0.0.0(注意,127.x.x.x是保留地址,用于回环测试)。
- 组成:A类IP地址由1个字节的网络地址和3个字节的主机地址组成。网络地址的最高位必须是“0”。
- 子网掩码:默认的子网掩码为255.0.0.0。
- 容量:可用的A类网络有126个(除去0.x.x.x和127.x.x.x)。每个网络可以容纳约一亿多个主机(2^24-2个)。
- 应用:A类地址通常分配给规模特别大的网络使用,如大型公司或组织。
B类IP地址:
- 地址范围:从128.0.0.0到191.255.255.255。
- 组成:B类IP地址由2个字节的网络地址和2个字节的主机地址组成。网络地址的最高两位必须是“10”。
- 子网掩码:默认的子网掩码为255.255.0.0。
- 容量:可用的B类网络数量少于A类,但每个网络可以容纳更多的主机(约65,000个)。
- 应用:B类地址通常分配给中等规模的网络,如学校、大型企业等。
C类IP地址:
- 地址范围:从192.0.0.0到223.255.255.255。
- 组成:C类IP地址由3个字节的网络地址和1个字节的主机地址组成。网络地址的最高三位必须是“110”。
- 子网掩码:默认的子网掩码为255.255.255.0。
- 容量:C类地址数量最多,但每个网络可以容纳的主机数量较少(约254个)。
- 应用:C类地址通常分配给小型网络,如家庭网络、小型企业等。
D类IP地址:
- 地址范围:从224.0.0.0到239.255.255.255。
- 组成:D类地址不用于标识网络或主机,而是用于多播(Multicast)通信。多播是一种允许一个或多个发送者(但不是所有发送者)发送单个数据包到多个接收者的技术。
- 应用:D类地址通常用于网络会议、视频直播等需要多播通信的场景。
12、201.222.200.111/18计算主机数?子网掩码?说明计算方法。
12. 201.222.200.111/18计算主机数?子网掩码?说明计算方法。
计算子网掩码
- 确定网络部分位数:在这个例子中,网络部分有18位。
- 创建子网掩码:一个标准的32位IP地址被分为网络部分和主机部分。既然网络部分有18位,那么子网掩码的前18位就是1(表示网络部分),后14位就是0(表示主机部分)。
- 转换为点分十进制:将32位的子网掩码转换为点分十进制形式。前18位是1,可以表示为
11111111.11000000.00000000.00000000
。转换为点分十进制就是255.192.0.0
。计算主机数
- 确定主机部分位数:一个32位的IP地址减去网络部分的18位,剩下14位用于主机部分。
- 计算主机数:由于每个位可以是0或1,所以主机数就是2的14次方。但是,我们要减去两个地址:网络地址(所有主机位都是0)和广播地址(所有主机位都是1)。因此,主机数 = 2^14 - 2 = 16,382。
详细说明计算方法
- CIDR表示法:CIDR表示法/18告诉我们网络地址的前18位是固定的,而后14位可以用于主机地址。
- 子网掩码:子网掩码用于区分IP地址中的网络部分和主机部分。在这个例子中,前18位是网络部分,所以子网掩码的前18位是1,后14位是0。转换为点分十进制就是
255.192.0.0
。- 主机数:由于有14位用于主机部分,我们可以计算出可能的主机数。但是,需要减去网络地址和广播地址,因为它们不是有效的主机地址。所以,主机数 = 2^14 - 2 = 16,382。
13、
13. 当A(10.0.1.1/16)与B(10.0.2.2/24)通信,A如何判断是否在同一个网段?A和B能否通信?
确定子网掩码:
- A的子网掩码为/16,即255.255.0.0(因为前16位是网络部分)。
- B的子网掩码为/24,即255.255.255.0(因为前24位是网络部分)。
计算网络地址:
- A的网络地址是10.0.0.0(将IP地址10.0.1.1与子网掩码255.255.0.0进行AND操作)。
- B的网络地址是10.0.2.0(将IP地址10.0.2.2与子网掩码255.255.255.0进行AND操作)。
比较网络地址:
- A和B的网络地址不同(10.0.0.0与10.0.2.0),因此它们不在同一个网段。
确定是否能通信:
- 由于A和B不在同一个网段,并且没有提到任何路由设备(如路由器)来转发这些数据包,因此默认情况下A和B不能直接通信。但是,如果它们之间存在正确配置的路由设备,并且路由表允许这些数据包从一个网络转发到另一个网络,那么A和B仍然可以通信。
综上所述,A(10.0.1.1/16)和B(10.0.2.2/24)不在同一个网段,并且默认情况下它们不能通信。但是,通过正确配置的路由设备,它们仍然可以相互通信。
14、
14. 如何将10.0.0.0/8划分32个子网?
求每个子网的掩码,主机数。
要将CIDR块
10.0.0.0/8
划分为32个子网,我们需要增加额外的位数来区分这些子网。由于10.0.0.0/8
表示有一个8位的网络前缀,我们已经有足够的空间来划分出更多的子网。具体地,因为 2^5=32 ,所以我们需要借用5位主机位来划分子网,这将使得子网掩码变成/13
(原来的8位加上新增的5位)。因此,新的子网掩码将是
255.248.0.0
,这是因为前13位为1,其余位为0(即11111111.11111000.00000000.00000000
)。接下来,计算每个子网的主机数。原本的A类地址有24位主机位(因为网络前缀占了8位,总共32位IP地址减去网络前缀),现在我们借用5位来划分子网,剩余的主机位为 24−5=19 位。所以,每个子网理论上可以有的主机数为 2^19 - 2=524286(减2是因为每个子网的第一个地址是网络地址,最后一个地址是广播地址,都不能分配给主机)。
总结:
- 每个子网的掩码:
255.248.0.0
或者/13
- 每个子网的主机数:524,286(理论上,实际可用主机数为524,284)
15、
15. 通过网络配置命令,让主机可以上网。 ip, netmask, gateway, dns,主机名。相关命令总结,最终可以通过这些配置让你的主机上网。
配置IP地址和子网掩码
ip addr add 10.0.0.100/24 dev eth0 # eth0是网卡接口
或使用 `sudo` 权限编辑网络配置文件,例如对于基于Systemd的系统(如Ubuntu 18.04及以上版本),编辑 `/etc/netplan/00-installer-config.yaml`。
- 添加或修改如下配置:
yaml
network:
version: 2
renderer: NetworkManager
ethernets:
enp0s3: # 请替换为您的实际网络接口名称
addresses: [192.168.1.100/24] # IP和子网掩码
gateway4: 192.168.1.1 # 默认网关
- 应用配置并重启网络服务:`sudo netplan apply`配置DNS
DNS配置通常在
/etc/resolv.conf
文件中进行。你可以使用文本编辑器(如nano
、vi
或gedit
)来编辑此文件。、vi
/etc/resolv.conf
nameserver 8.8.8.8 nameserver 8.8.4.4
主机名
sudo hostnamectl set-hostname myhostname
hostname myhostname
16、解析/etc/sysconfig/network-scripts/ifcfg-eth0配置格式。
16. 解析/etc/sysconfig/network-scripts/ifcfg-eth0配置格式。
`/etc/sysconfig/network-scripts/ifcfg-eth0` 是 Linux 系统中用于配置第一个以太网接口(eth0)的配置文件。这个文件包含了网络接口的各种静态配置信息,允许系统管理员手动设定IP地址、子网掩码、网关、DNS等网络参数。下面是一些常见的配置项及其含义:
- **DEVICE**: 设备名,对应于物理网络接口,例如 `eth0` 表示第一个以太网接口。
- **HWADDR**: 物理地址(MAC地址),例如 `00:0c:29:4c:e5:23`。
- **TYPE**: 接口类型,通常为 `Ethernet`,表示这是一个以太网接口。
- **ONBOOT**: 控制接口是否在系统启动时激活。如果设为 `yes`,则系统启动时会自动激活该接口;设为 `no` 则不会自动激活。
- **IPADDR**: 静态分配给接口的IP地址,例如 `172.16.12.244`。
- **NETMASK**: 子网掩码,用于定义本地网络的大小,例如 `255.255.255.0`。
- **NETWORK**: 网络地址,通常由IP地址和子网掩码计算得出,但也可以手动指定,例如 `172.16.12.0`。
- **BROADCAST**: 广播地址,用于向网络中的所有主机发送数据包,通常由IP地址和子网掩码自动计算,例如 `172.16.12.255`。
- **GATEWAY**: 默认网关地址,指定了数据包在前往不同网络时需要经过的第一个路由器的IP地址,例如 `172.16.12.1`。
- **DNS1**, **DNS2**: 首选和备选DNS服务器的IP地址,用于域名解析,例如 `8.8.8.8` 和 `8.8.4.4`(Google的公共DNS服务器)。
- **BOOTPROTO**: 接口使用的协议来获取IP地址。可能的值包括 `static`(静态分配)、`dhcp`(动态获取)等。
这些配置项通过简单的键值对形式写入文件中,每一行一个配置项,通常格式为 `配置项=值`。例如:
```plaintext
DEVICE=eth0
HWADDR=00:0c:29:4c:e5:23
TYPE=Ethernet
ONBOOT=yes
IPADDR=172.16.12.244
NETMASK=255.255.255.0
GATEWAY=172.16.12.1
DNS1=8.8.8.8
DNS2=8.8.4.4
```修改这个文件之后,通常需要重启网络服务(如使用 `systemctl restart network` 或 `systemctl restart networking` 命令)或重启系统使更改生效。
17. 基于配置文件或命令完成bond0配置
在Linux系统中,`bond0` 代表一个网络接口绑定(Bonding)设备,它允许将两个或更多物理网络接口(如eth0和eth1)组合成一个逻辑接口,以此来提高网络连接的可用性和带宽。配置Bonding通常涉及修改或创建一个名为 `ifcfg-bond0` 的配置文件。以下是基于 `/etc/sysconfig/network-scripts/ifcfg-bond0` 配置文件来设置Bonding的一个示例,以及相关命令的简要说明。
### 配置文件示例
假设我们希望配置一个模式为 `mode=4`(平衡负载,LACP协议)的Bonding设备,以下是一个基本的配置示例:
```plaintext
# /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
TYPE=Bond
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# Bonding配置
BONDING_MASTER=yes
BONDING_OPTS="mode=4 miimon=100 downdelay=200 updelay=200 xmit_hash_policy=layer3+4 lacp_rate=1"
```- `DEVICE`: 定义了Bond设备的名称。
- `BOOTPROTO`, `ONBOOT`, `USERCTL` 设置了启动时自动激活、不允许非root用户控制等属性。
- `TYPE=Bond` 指定这是一个Bond设备。
- `IPADDR`, `NETMASK`, `GATEWAY`, `DNS1`, `DNS2` 分别设置了IP地址、子网掩码、默认网关和DNS服务器地址。
- `BONDING_MASTER=yes` 标记此接口为主控接口。
- `BONDING_OPTS` 包含了Bonding的具体配置,这里设置了模式为4(LACP)、链路监测间隔为100ms、上下行延迟以及传输哈希策略等。### 配置物理接口
除了配置 `bond0` 外,还需要配置参与Bonding的物理接口(如eth0和eth1),通常需要关闭它们的IP配置,并将其作为Bond的slave设备。示例如下:
#### eth0 示例配置
```plaintext
# /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
```#### eth1 示例配置
```plaintext
# /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
```### 应用配置
完成配置文件的编辑后,需要重启网络服务或相关接口使配置生效。在Systemd管理的系统中,可以使用以下命令:
```bash
sudo systemctl restart network
# 或者对于某些系统
sudo systemctl restart networking
```或者,如果你只想重启特定接口,可以使用:
```bash
sudo ifdown eth0 && sudo ifdown eth1 && sudo ifup bond0
```确保按照你的具体系统和服务管理方式来执行正确的命令。完成后,你可以使用 `ip addr show bond0` 或 `ifconfig bond0` 来验证Bonding设备是否配置成功并已正确获取IP地址。
18. 通过ifconfig命令结果找到ip地址.
$ ifconfig eth0 | grep 'inet ' | awk '{print $2}' | cut -d/ -f1
19. 使用脚本判断 你主机所在网络内在线的主机IP有哪些? ping通则在线。
#!/bin/bash
# 设置要扫描的网段和子网掩码
NETWORK="192.168.1" SUBNET_MASK="255.255.255.0"
# 从.1开始,假设.0是网关或保留地址
START_IP="${NETWORK}.1"
END_IP="${NETWORK}.254"
# 提取网络部分的最后一段(用于生成IP范围)
NETWORK_PART=$(echo $NETWORK | awk -F. '{print $NF}')
# 使用ping来测试每个IP
for (( i=$NETWORK_PART; i<=254; i++ ))
do
IP="${NETWORK}.${i}"
# 使用ping命令,并只发送一个请求,等待1秒超时
ping -c 1 -W 1 $IP &> /dev/null
if [ $? -eq 0 ];
then echo "$IP is online"
fi
done