linux的网卡绑定与源码安装nginx

1.RAID工作原理

RAID是一种数据存储技术,它通过组合多个物理磁盘来创建一个逻辑上的单一磁盘,从而提高数据的传输速度、可靠性和存储容量。
没有RAID的话问题,1.硬盘数据可能丢,会造成损失,单点故障。2.分区不能够扩容,影响业务。

RAID级别原理及特点优点缺点利用率
RAID 0条带化存储,数据分割并分散存储于多个磁盘数据传输速度快无数据冗余,任何一个磁盘损坏都会导致数据丢失100%
RAID 1镜像存储,数据同时写入两个或多个磁盘数据安全性高,冗余备份存储成本较高,磁盘空间利用率低50%
RAID 10结合RAID 1的镜像和RAID 0的条带化兼具数据冗余和传输速度存储成本较高,需要较多的磁盘N/2(N为磁盘数,至少4个磁盘)
RAID 01先进行RAID 0的条带化,再进行RAID 1的镜像数据传输速度快,部分数据冗余磁盘空间利用率低,存储成本较高N/2(N为磁盘数,至少4个磁盘)
RAID 5分布式存储和奇偶校验,数据块和校验信息分散存储于多个磁盘数据安全性与传输速度之间的平衡写入性能略低于RAID 0,磁盘空间利用率略低于RAID 1(N-1)/N(N为磁盘数,至少3个磁盘)

一般靠硬件进行RAID操作RAID卡

2.对LVM磁盘扩容及缩容

新添加两个硬盘并对其进行分区操作,不分区也可以。

fdisk /dev/sdb #对该sdb盘进行分区
fdisk /dev/sdc #对该sdc盘进行分区

请添加图片描述

1.创建PV
[root@centos8 ~]# pvcreate /dev/sd{b,c}{1,2}
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdb2" successfully created.
  Physical volume "/dev/sdc1" successfully created.
  Physical volume "/dev/sdc2" successfully created.
2.创建VG 
[root@centos8 ~]# vgcreate vg0 /dev/sdb{1,2}
 Volume group "vg0" successfully created
3.创建LV
[root@centos8 ~]# lvcreate -L 2G -n mylv vg0
4.给LV创建文件系统
[root@centos8 ~]# mkfs.ext4 /dev/vg0/mylv
5.挂载LV
[root@centos8 ~]# mount /dev/vg0/mylv /data
扩容LV
[root@centos8 ~]# lvextend -L +2G -r /dev/vg0/mylv
缩容LV
[root@centos8 ~]# lvreduce -L 2G -r /dev/vg0/mylv

3.程序包管理器

主流的程序包管理器为rpm和dpkg包管理器
包一般包括如下几个部分。
1.应用名称
2.版本号
3.平台支持的架构
yum:rpm包管理器的前端工具
dnf:fedora18+rpm包管理器前端管理工具,centos8版代替为yum
apt:deb包管理器前端工具
rpm用来管理包文件的

参数描述
-i安装
-v安装过程
-h安装进度条
q查询已安装的软件包信息
-l列出软件包中的文件列表

yum常见参数

参数描述
install安装指定的软件包或软件包组
update更新指定的软件包或软件包组,或全部更新
remove删除指定的软件包
info显示指定软件包的详细信息
list列出所有可安装的软件包或已安装的软件包
search查找指定的软件包
clean清除缓存,包括清理已下载的软件包和头文件
repolist显示已配置的软件仓库列表

4.yum/dnf工作原理,搭建私有yum仓库(base, epel源)

yum/dnf的关系:yum和dnf是用来解决包的依赖的工具,centos8以后支持使用dnf但是它也保留了yum。
yum/dnf工作原理:客户端发请求到服务器,先查元数据、查这个包是否有是否有依赖关系,先下载元数据,缓存到自己的客户端上。然后在到server上安装包和依赖包。但是元数据还是会在。但是包会进行删除。
私有仓库搭建,系统Centos8,服务端ip:10.76.0.200 客户端ip:10.76.0.182

服务端
[root@centos8 ~]vim yum_server.sh
#!/bin/bash
mount /dev/cdrom /mnt #挂载光盘
cat > /etc/yum.repos.d/Base.repo <<EOF
[AppStream]
name=AppStream
baseurl=file:///mnt/AppStream/
gpgcheck=0
enabled=1
[BaseOS]
name=Base
baseurl=file:///mnt/BaseOS/
gpgcheck=0
enabled=1
[epel]
name=epel
baseurl=https://mirrors.aliyun.com/epel/8/Everything/x86_64/
enabled=1
gpgcheck=0
EOF
yum clean all && yum makecache
yum install bash-completion tree psmisc wget net-tools vim nginx -y 
systemctl enable --now nginx #启动Nginx
#将光盘的里面的包拷到nginx安装的目录
cp -r /mnt/*  /usr/share/nginx/html/centos8
#拷贝epel的源到地址的nginx目录
yum reposync --repoid=epel --download-metadata -p /usr/share/nginx/html
wget -P /usr/share/nginx/html/epel	https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-8
[root@centos8 ~]chmod +x yum_server.sh
[root@centos8 ~]bash yum_server.sh
客户端
[root@centos8 ~]vim yum_client.sh
#!/bin/bash
cat > /etc/yum.repos.d/Base.repo <<EOF
[AppStream]
name=AppStream
baseurl=http://10.76.0.200/centos8/AppStream/
gpgcheck=0
enabled=1

[BaseOS]
name=BaseOS
baseurl=http://10.76.0.200/centos8/BaseOS
gpgcheck=0
enabled=1

[epel]
name=epel
baseurl=http://10.76.0.200/epel/
enabled=1
gpgcheck=0
EOF
yum clean all && yum makecache
yum install bash-completion tree psmisc wget net-tools vim -y 
[root@centos8 ~]chmod +x yum_client.sh
[root@centos8 ~]bash yum_client.sh

5.虚拟机安装系统之后的常用初始化步骤。

1.最下化安装。2.关闭防火墙。3.关闭SELINUX。4.配置yum源。5.安装常用软件。6.拍摄快照。

6.一键安装nginx1.20.2版本脚本

[root@centos8 ~]vim install_nginx.sh
#!/bin/bash
nginx_version=1.20.2
nginx_file=nginx-${nginx_version}.tar.gz
. /etc/os-release
if [[ $ID =~ rhel|rocky|centos ]];then
        systemctl disable --now firewalld
        yum install gcc make wget -y
elif [[ $ID =~ 'ubuntu' ]];then
        apt update
        apt install gcc make wget -y
else      
        echo "不支持此系统,退出!"
        exit
fi       
if [ ! -f ${nginx_file} ];then
        wget https://nginx.org/download/nginx-${nginx_version}.tar.gz #下载nginx
fi           
tar zxf ${nginx_file} -C /usr/local/src	#解压缩下载的nginx
cd /usr/local/src/nginx-${nginx_version} #进入下载的nginx目录
./configure --without-http_rewrite_module --without-http_gzip_module	#检查当前的环境是否满足要安装软件的依赖关系
make && make install  #编译&&安装
echo "this is my first website" >/usr/local/nginx/html/index.html #创建web站点到初始页面
/usr/local/nginx/sbin/nginx #启动nginx服务
echo "安装成功!,并启动服务"
echo "请访问:http://`hostname -I | cut -d ' ' -f1`"
[root@centos8 ~]chmod +x install_nginx.sh
[root@centos8 ~]bash install_nginx.sh

7.OSI参考模型与其对应的协议

  1. 物理层位于参考模型的最底层,为数据链路层实体提供建立、传输、释放所必需的物理连接,并且提供透明的比特流传输。
  2. 数据链路层将原始的传输线路变成一条逻辑的传输线路,实体间二进制信息块的正确传输,为网络层提供可靠的数据信息。数据链路层的单位为帧,具有流量控制功能。
    数据链路层的功能:链路的连接建立、拆除和分离。帧定界和帧同步、差错检测、恢复等等。
    数据链路层可以分为:逻辑链路控制(LLC)和介质访问控制两个子层(MAC)。其中LLC只会在IEEE 802.3格式的时候才会用到,而现在很少使用IEEE 802.3格式,取而代之的时以太帧格式,而使用以太帧格式则不会有LLC存在。
  3. 网络层:其主要的功能是提供路由选择,即选择到达目的主机的最优路径。
  4. 传输层:传输层利用实现可靠的端到端的数据传输能实现数据分段、传输、和组装,还提供差错控制和流量/拥塞控制等功能。
  5. 会话层:会话层允许不同机器上的用户之间建立会话。会话是指各种服务包括对话控制、令牌管理、同步功能等。
  6. 表示层的功能主要是:数据语法转换、语法表示、数据加密和解密、数据压缩和解压。
  7. 应用层:应用层向应用程序提供服务,这些服务按其向应用程序提供的特性分成组,并称为服务元素。应用层服务分为公共应用服务元素和特定应用元素服务
    在这里插入图片描述

8.调整动态端口范围为20000-60000

[root@centos8 ~]vim port_adjust.sh
#!/bin/bash
echo  net.ipv4.ip_local_port_range = 20000 60000 >> /etc/sysctl.conf
sysctl -p
echo "修改动态端口成功!"
cat /etc/sysctl.conf
[root@centos8 ~]
[root@centos8 ~]chmod +x port_adjust.sh
[root@centos8 ~]bash port_adjust.sh

9.TCP包头结构,TCP三次握手,4次挥手

TCP(传输控制协议)包头位于TCP数据段的前面,用于封装TCP协议需要的数据结构和信息。TCP包头的基本结构如下:
源端口号(Source Port):16位,标识发送端的应用程序端口号。
目的端口号(Destination Port):16位,标识接收端的应用程序端口号。
序列号(Sequence Number):32位,用于标识发送端发送的数据字节流的起始位置。在TCP连接中,每一字节数据都被分配一个序列号,便于接收端进行有序的数据接收和重组。
确认号(Acknowledgment Number):32位,用于标识接收端期望接收的下一个字节的序列号。这是TCP实现可靠传输的关键机制之一。
数据偏移量(Data Offset):4位,表示TCP包头长度,单位是4字节。由于TCP允许包头中有一些可选字段,这个字段用于标识TCP包头长度,以便在接收到数据时能够正确地解析包头和数据。
保留位(Reserved):6位,目前未使用,通常置为0。
控制位(Control Bits):6位,包括URG(紧急指针有效)、ACK(确认)、PSH(推送)、RST(重置)、SYN(同步)、FIN(结束)等标志位,用于控制TCP连接的状态和行为。
窗口大小(Window Size):16位,表示发送端允许接收端发送的数据量大小(以字节为单位),用于实现TCP的流量控制。
校验和(Checksum):16位,用于校验TCP包头和数据的完整性。
紧急指针(Urgent Pointer):16位,当URG标志位被设置时,这个字段指出紧急数据在TCP数据段中的位置。
选项(Options):长度可变,包含一些可选的TCP特性。
填充(Padding):用于确保TCP头部是4字节的整数倍。
在这里插入图片描述
TCP三次握手具体步骤如下:
SYN阶段:客户端向服务器发送一个SYN包(同步包),请求建立连接。SYN包中包含了客户端的初始序列号。
SYN+ACK阶段:服务器收到SYN包后,会向客户端发送一个SYN+ACK包(同步确认包)。这个包中包含了服务器的初始序列号和对客户端初始序列号的确认号(即客户端初始序列号加1)。
ACK阶段:客户端收到SYN+ACK包后,会向服务器发送一个ACK包(确认包)。这个包中包含了对服务器初始序列号的确认号(即服务器初始序列号加1)。至此,三次握手完成,TCP连接建立成功。
TCP四次挥手,具体步骤如下:
FIN阶段:当一方(假设为客户端)决定结束连接时,会向对方(假设为服务器)发送一个FIN包(结束包),包含自己当前的序列号。
ACK阶段:服务器收到FIN包后,会发送一个ACK包进行确认,确认号为客户端发送的FIN包的序列号加1。此时,客户端进入等待状态,服务器继续处理未发送完的数据。
第二次FIN阶段:当服务器也决定关闭连接时,会向客户端发送一个FIN包。
第二次ACK阶段:客户端收到服务器的FIN包后,会发送一个ACK包进行确认,确认号为服务器发送的FIN包的序列号加1。至此,四次挥手完成,TCP连接断开。
在四次挥手中,每一步都确保了数据的有序传输和确认,从而实现了TCP的可靠连接断开。

10.主机到主机的包传递过程

应用层数据处理:当主机A需要向主机B发送数据时,首先应用层将应用数据封装成应用层协议的数据格式。
传输层封装:应用层数据随后被传输层(通常是TCP或UDP)封装成传输层协议的数据包(例如TCP段或UDP数据报)。这包括添加源端口号、目的端口号、序列号、确认号等字段。
网络层封装:传输层数据包进一步被网络层封装成IP包。这涉及添加源IP地址、目的IP地址、生存时间(TTL)等字段。此时,主机A可能不知道主机B的MAC地址,因此需要使用ARP协议来获取。
ARP协议获取MAC地址:如果主机A不知道主机B的MAC地址,它会发送一个ARP请求广播到本地网络,请求主机B的MAC地址。
当主机B收到ARP请求时,它会响应并返回其MAC地址给主机A。这样,主机A就知道了主机B的MAC地址。
数据链路层封装:网络层的IP包被数据链路层封装成帧。这包括添加源MAC地址、目的MAC地址等字段。
物理层传输:封装好的数据帧通过物理层在网络介质(如以太网、光纤等)上进行传输。
路由器转发:如果主机A和主机B位于不同的网络段,那么数据帧需要通过路由器进行转发。路由器会根据其路由表来确定最佳的转发路径。
目的主机接收:当数据帧到达目的网络时,交换机或其他网络设备会根据目的MAC地址将数据帧转发给主机B。
逐层解封装:主机B接收到数据帧后,会逐层进行解封装,从数据链路层到传输层,再到应用层,最终还原出原始的应用数据。
应用层处理:最终,主机B的应用层接收到数据并进行相应的处理。

11.IP地址 A, B, C, D 类,IP地址的组成

IP地址是一个唯一标识,用于区分互联网上的每一个网络和每一台主机。IP地址由网络号和主机号组成,总共32位,通常表示为四个十进制数,每个数的范围从0到255,以点号分隔,例如210.21.196.6。这种表示法被称为“点分十进制表示法”。
IP地址分为A、B、C、D和E五类,其中A、B、C三类最为常见,而D类用于多播,E类保留为以后使用。以下是A、B、C、D四类IP地址的详细解析:
A类IP地址:A类地址的网络号占8位,且最前面一位为0,主机号占24位。地址范围从1.0.0.0到127.0.0.0。A类网络主要为大型网络设计,可用的A类网络有127个,每个网络能容纳的主机数高达16777214个。
B类IP地址:B类地址的网络号占16位,且最前面两位为10,主机号占16位。B类地址的数量较多,可用的B类网络有16382个,每个网络能容纳的主机数约为6万多个。
C类IP地址:C类地址的网络号占24位,且最前面三位为110,主机号占8位。C类地址的范围从192.0.0.0到223.255.255.255,其中192.0.0.0和223.255.255.0为保留IP,实际可用范围是从192.0.1.0到223.255.254.0。C类网络可达209万余个,每个网络能容纳的主机数为254个。
D类IP地址:D类地址的最前面四位为1110,专门用于多播(Multicast)。它不指向特定的网络或主机,而是用于向一组主机发送数据
在这里插入图片描述

12.(201.222.200.111/18计算主机数,子网掩码)。

子网掩码为:18位说明前面十八位相同因此其子网掩码的二进制数表示为:255.255.192.0
201.222.200.111转换成二进制数为:11001001.11011110.11001000.01100101
可用的地址范围为:201.222.192.1-201.222.255.254
因此其可用的的主机数为(255-192+1)*254=16256个

13.当A(10.0.1.1/16)与B(10.0.2.2/24)通信,A与B是否在同一个网段?A和B能否通信?

对于10.0.1.1/16:子网掩码/16表示前16位是网络部分,后16位是主机部分。二进制表示为:10.00000000.xxxxxxxx.xxxxxxxx,其中x表示可以是0或1。
对于10.0.2.2/24:子网掩码/24表示前24位是网络部分,后8位是主机部分。二进制表示为:10.00000000.00000010.xxxxxxxx。
比较两个IP地址的网络部分:
10.0.1.1/16的网络部分是10.0。
10.0.2.2/24的网络部分是10.0.2。
由于这两个网络部分是不同的,所以10.0.1.1/16和10.0.2.2/24属于不同的子网,它们之间不能直接通信。

14.将10.0.0.0/8划分32个子网

因为需要划分32个子网则网络位需要向主机位借位
2^5=32
所有网络位要想主机位借5位因此需要将掩码进行变长因此其划分的网段应该为10.0.0.0/13的子网。
因此32个网段为:
在这里插入图片描述
10.0.0.1-10.7.255.254=(7-0+1)*(255-0+1)*254=520192个可用主机
因此每个网段可用的主机数为520192个。

15./etc/sysconfig/network-scripts/ifcfg-eth0的配置说明

  TYPE=Ethernet		#描述接口的类型
  PROXY_METHOD=none	#指定代理方法
  BROWSER_ONLY=no	#通常与网络连接是否仅供浏览器使用有关
  BOOTPROTO=none	#指定接口在启动时使用的协议
  DEFROUTE=yes	#是否应被视为默认路由
  IPV4_FAILURE_FATAL=yes	#指定如果 IPv4 配置失败,是否应将此视为致命错误
  IPV6INIT=yes	#指定是否初始化 IPv6
  IPV6_AUTOCONF=yes	#指定是否使用自动配置(无状态地址自动配置 SLAAC)来获取 IPv6 地址
  IPV6_DEFROUTE=yes	#指定该接口是否应被视为 IPv6 默认路由
  IPV6_FAILURE_FATAL=no	#指定如果 IPv6 配置失败,是否应将此视为致命错误
  NAME=ens160	#网络接口的名称
  UUID=68056340-4cbd-4a7f-aed8-f36337e1d32a #网络接口的通用唯一标识符
  DEVICE=ens160	#网络接口的设备名
  ONBOOT=yes	#系统启动时是否激活该接口
  IPADDR=10.76.0.18	#IP地址
  PREFIX=24	#网络前缀
  GATEWAY=10.76.0.254	#网关
  DNS1=114.114.114.114	#DNS地址
  IPV6_PRIVACY=no #指定是否使用临时地址(隐私扩展)进行 IPv6 通信

16.完成网卡绑定bond0配置

[root@centos8 ~]vim net_bond.sh
#!/bin/bash #添加两块网卡进行网卡绑定操作
nmcli connection add type bond con-name bond0 ifname bond0 mode active-backup ipv4.method manual ipv4.addresses 10.76.0.182/24 ipv4.gateway 10.76.0.254 ipv4.dns 114.114.114.114 +ipv4.dns 8.8.8.8
nmcli connection add type bond-slave ifname `ip addr | grep ^2|tr -d ' '|cut -d : -f2` master bond0
nmcli connection add type bond-slave ifname `ip addr | grep ^3|tr -d ' '|cut -d : -f2` master bond0
nmcli connection up bond-slave-`ip addr | grep ^2|tr -d ' '|cut -d : -f2`
nmcli connection up bond-slave-`ip addr | grep ^3|tr -d ' '|cut -d : -f2`
nmcli connection up bond0
[root@centos8 ~]chmod +x net_bond.sh
[root@centos8 ~]bash net_bond.sh

17.通过ifconfig命令结果找到ip地址。

#!/bin/bash
yum install net-tools -y
ifconfig | grep inet|tr -s ' '|head -1|cut -d ' ' -f3

18.使用脚本所在网络内在线的主机IP有哪些,ping通则在线。

[root@centos8 ~]vim ping.sh
#!/bin/bash
IP_PREFIX='10.76.0'
for i in {1..254}
do
  ip="${IP_PREFIX}.${i}"
  ping -c 4 -W 1 "${ip}" &>/dev/null
  if [ $? -eq  0 ];then
          echo "${ip} is online"
  else
          echo "${ip} is not online"
  fi
done
[root@centos8 ~]chmod +x ping.sh
[root@centos8 ~]bash ping.sh
  • 37
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值