计算机网络 day8 动态路由 - NAT - SNAT实验 - VMware的网卡的3种模式

目录

动态路由:IGP 和 EGP

参考网课:4.6.1 路由选择协议概述_哔哩哔哩_bilibili

​编辑

IGP(Interior Gateway Protocol)内部网关协议:

EGP(Interior Gateway Protocol)外部网关协议:

BGP 边界网关协议(Border Gateway Protocol)

实验:

NAT:网络地址转换

NAT 有以下几种常见的应用方式:

SNAT

SNAT策略的原理

未使用SNAT策略时的情况

在网关中使用SNAT策略以后

五元组:源IP地址、目的IP地址、源端口、目的端口、传输协议

SNAT实验:

实验环境:

SNAT网络规划拓扑图:

1、给linux网关服务器的2块网卡配置IP地址

2、给局域网内的客户机的网卡也配置IP地址

3、在linux网关服务器上配置SNAT策略的脚本 

4、测试效果,如果能通过client机器上ping通百度的话,说明SNAT实验成功了

VMware的网卡的3种模式

详细请参考:(114条消息) 计算机网络 SNAT/DNAT 部署(三种VMware网卡模式)_snat部署_Claylpf的博客-CSDN博客

桥接模式,仅主机模式,NAT模式

1、桥接模式(bridge)

2、仅主机模式(host-only) 

3、NAT模式

总网络规划图


动态路由:IGP 和 EGP

参考网课:4.6.1 路由选择协议概述_哔哩哔哩_bilibili

IGP(Interior Gateway Protocol)内部网关协议:

它是一种用于在自治系统(AS)内部进行路由选择的协议。

常见的 IGP 包括以下几种:

RIP:一种距离矢量路由选择协议,基于跳数来评估路径的优劣。--》只是适合规模比较小的网络

OSPF:一种链路状态路由选择协议,通过交换链路状态信息(带宽、网速、时延)来计算最短路径。--》适合大型的网络

IS-IS:一种链路状态路由选择协议,类似于 OSPF,但使用不同的路由选择算法。

EIGRP:一种距离矢量和链路状态相结合的路由选择协议,由思科开发。

EGP(Interior Gateway Protocol)外部网关协议:

指的是用于自治系统(AS)之间进行路由选择的协议。(EGP 主要用于互联网中不同自治系统之间的路由交换。)

最早的 EGP 协议是在互联网刚起步时使用的,但现在已经被较先进的 BGP(Border Gateway Protocol,边界网关协议)所取代。BGP 是当前广泛使用的用于自治系统间的路由选择的协议。

BGP 边界网关协议(Border Gateway Protocol)

BGP 通过在不同的自治系统之间交换路由信息,帮助网络管理员决定数据包从源节点到目标节点的最佳路径。它考虑到网络拓扑、自治系统之间的政策和策略,以及其他因素来进行路由选择。BGP 具有高度的可扩展性和灵活性,使得互联网能够连接大量的自治系统并实现全球性的路由。

实验:

NAT:网络地址转换

它主要用于在私有网络和公共网络之间进行 IP 地址的映射转换。

NAT 的主要功能是将私有网络内部使用的私有 IP 地址与公共网络之间的公共 IP 地址相互转换。私有 IP 地址在内部网络中使用,而公共 IP 地址则用于外部网络(例如互联网)之间的通信。

NAT 有以下几种常见的应用方式:

  1. 静态 NAT(SNAT):将私有 IP 地址映射为一个固定的公共 IP 地址,用于单一的一对一映射。
  2. 动态 NAT(DNAT):将私有 IP 地址映射为可用的公共 IP 地址池中的一个地址,根据需要动态选择不同的地址进行转换。
  3. PAT(Port Address Translation):在动态 NAT 的基础上,还利用端口号进行转换,使多个内部主机可以通过单个公共 IP 地址进行访问互联网。

它将什么地址转换为什么地址?

        ip地址:公网、私网

        公网IP  《---》私网IP

解决了什么核心地址?

        公网IP(IPv4)不足的问题

SNAT

它解决了局域网上网的问题

将私有 IP 地址映射为一个固定的公共 IP 地址,用于单一的一对一映射。

SNAT策略的典型应用环境

局域网主机共享单个公网IP地址接入Internet

SNAT策略的原理

源地址转换,Source Network Address Translation

修改数据包的源IP地址

未使用SNAT策略时的情况

在网关中使用SNAT策略以后

linux内核里有一个NAT映射表会自动进行转换,回来的时候

五元组:源IP地址、目的IP地址、源端口、目的端口、传输协议

SNAT实验:

实验环境:

        准备2台集群:一台做局域网里的客户机(1个网卡),一台做做网关服务器(路由器)

        所有的虚拟机的网卡模式选择桥接模式(客户机可以选择仅主机模式)

hostonly 仅主机模式

假设你使用的linux网关服务器的网卡ens33配置的是仅主机模式(hostonly),IP为(192.168.50.1),那么如果你的Windows机器上的VMnet1配置的IP地址(192.168.50.10)也是同网段的,那么你的linux网关服务器能和Windows的网关服务器通信了,但是可能出现只有Windows机器能ping通linux机器,但是linux机器不能ping通Windows机器的问题,出现的原因是你的Windows机器开启了防火墙,把双方的防火墙都关了就可以互相通信了(不建议去实验),

最后就是你的linux客户机如何跟linux网关服务器进行通信了,这需要把你的linux网关服务器的其中一个网卡设置为仅主模式(hostonly),如下图所示,你需要把linux网关服务器的网卡ens36配置为仅主模式(hostonly),IP地址为(192.168.50.100),这样才能使双方通信,之后的步骤就按照SNAT的实验流程即可。

桥接:  暂时理解为虚拟机和真实机器连接到同一个交换机(在相同vlan)
hostonly 仅主机模式: 你的虚拟机只是和你的真实机器通信,不能跟别人的真实机器或者虚拟机通信,避免ip地址冲突

桥接模式:

SNAT网络规划拓扑图:

1、给linux网关服务器的2块网卡配置IP地址

[root@nginx-lb1 ~]# ip add     查看ip地址,获得2块网卡的名字:  ens33和ens36 (我已经配置好了两块网卡的IP地址和网关了)
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:90:56:0d brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.77/24 brd 192.168.2.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe90:560d/64 scope link 
       valid_lft forever preferred_lft forever
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:90:56:17 brd ff:ff:ff:ff:ff:ff
    inet 192.168.80.100/24 brd 192.168.80.255 scope global noprefixroute ens36
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe90:5617/64 scope link 
       valid_lft forever preferred_lft forever
[root@nginx-lb1 ~]# 

配置IP地址步骤
[root@sc-server ~]# cd  /etc/sysconfig/network-scripts/
[root@sc-server network-scripts]# 
复制原来的ens33的网卡配置文件生成ens36的网卡配置文件

[root@sc-server network-scripts]# cp ifcfg-ens33   ifcfg-ens36    因为前面新添加的网卡的名字是ens36,所以我们使用ens36的名字

[root@sc-server network-scripts]# ls
ifcfg-ens33  ifdown-ippp    ifdown-sit       ifup-bnep  ifup-plusb   ifup-TeamPort
ifcfg-ens36  ifdown-ipv6    ifdown-Team      ifup-eth   ifup-post    ifup-tunnel
ifcfg-lo     ifdown-isdn    ifdown-TeamPort  ifup-ippp  ifup-ppp     ifup-wireless
ifdown       ifdown-post    ifdown-tunnel    ifup-ipv6  ifup-routes  init.ipv6-global
ifdown-bnep  ifdown-ppp     ifup             ifup-isdn  ifup-sit     network-functions
ifdown-eth   ifdown-routes  ifup-aliases     ifup-plip  ifup-Team    network-functions-ipv6
[root@sc-server network-scripts]# 
配置wan口的网卡ens36的ip,注意:WAN口里配置网关和dns,注意网卡类型为桥接模式
[root@sc-server network-scripts]# vim ifcfg-ens33
BOOTPROTO="none"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.2.77
PREFIX=24
GATEWAY=192.168.2.1
DNS1=114.114.114.114
[root@sc-server network-scripts]#
配置LAN口的网卡ens36的ip,注意:LAN口里不配置网关和dns,注意网卡类型为仅主机模式(hostonly)或者桥接模式
[root@sc-server network-scripts]# vim ifcfg-ens36
BOOTPROTO="none"
NAME="ens36"
DEVICE="ens36"
ONBOOT="yes"
IPADDR=192.168.80.100
PREFIX=24
[root@sc-server network-scripts]# service network restart
Restarting network (via systemctl):                        [  确定  ]
[root@nginx-lb1 ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:90:56:0d brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.77/24 brd 192.168.2.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe90:560d/64 scope link 
       valid_lft forever preferred_lft forever
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:90:56:17 brd ff:ff:ff:ff:ff:ff
    inet 192.168.80.100/24 brd 192.168.80.255 scope global noprefixroute ens36
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe90:5617/64 scope link 
       valid_lft forever preferred_lft forever
[root@nginx-lb1 ~]# 

2、给局域网内的客户机的网卡也配置IP地址

[root@sc-client ~]# cd  /etc/sysconfig/network-scripts/
[root@sc-client network-scripts]# 
[root@sc-client network-scripts]# vim ifcfg-ens33
BOOTPROTO="none"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.80.1
PREFIX=24
GATEWAY=192.168.80.100
DNS1=114.114.114.114

[root@sc-server network-scripts]# service network restart
Restarting network (via systemctl):                        [  确定  ]
[root@sc-server network-scripts]#

[root@claylpf network-scripts]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:ca:33:25 brd ff:ff:ff:ff:ff:ff
    inet 192.168.80.1/24 brd 192.168.80.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:feca:3325/64 scope link 
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:f6:8a:f5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:f6:8a:f5 brd ff:ff:ff:ff:ff:ff
[root@claylpf network-scripts]# 


如果真实机器想和虚拟机(client)ssh远程连接
使用vmnet1网卡配置ip地址为192.168.50.2(网关服务器的ens36网卡配置的是仅主机模式host-only)

3、在linux网关服务器上配置SNAT策略的脚本 

[root@nginx-lb1 nat]# cat snat.sh 
#!/bin/bash

#开启路由功能
echo 1 > /proc/sys/net/ipv4/ip_forward

#清除防火墙规则
iptables -F
iptables -F -t nat

#添加SNAT策略的防火墙规则
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j SNAT --to-source 192.168.2.77

[root@nginx-lb1 nat]# 

 代码解释:

iptables是一个防火墙工具,可以给linux内核传递网络参数,上面的功能是告诉linux内核开启SNAT功能。
-t nat  在nat相关的表里
-A POSTROUTING  在POSTROUTING位置追加一条规则 --》数据从网络离开的位置  append 
-s 192.168.1.0/24  指定源ip地址所在的网段  source
-o eth0 从eth0接口出去 output  
-j SNAT  执行SNAT策略,修改ip包里的源ip地址
--to-source 218.29.30.31 将ip包里的源ip地址修改为218.29.30.31 

查看iptables配置后的效果: 

[root@nginx-lb1 network-scripts]# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       all  --  192.168.80.0/24      anywhere             to:192.168.2.77
[root@nginx-lb1 network-scripts]# 

4、测试效果,如果能通过client机器上ping通百度的话,说明SNAT实验成功了

nat的次数越多,网络的速度就会越慢,时延就会越长

VMware的网卡的3种模式

详细请参考:(114条消息) 计算机网络 SNAT/DNAT 部署(三种VMware网卡模式)_snat部署_Claylpf的博客-CSDN博客

桥接模式,仅主机模式,NAT模式

1、桥接模式(bridge)

vmnet0 对应的桥接模式

1.桥接模式: bridge   直接连接到物理网络,其实就是虚拟机和真实机器在同一个局域网里,利用真实机器的网卡连接到真实的交换机上或者路由器上
                    虚拟机和真实机器在同一个网段,地位是平等的

            物理网络:就是真实的网络

wlan:  代表无线网络   wireless  LAN   

network adapter :网络适配器(网卡)

2、仅主机模式(host-only) 

2.仅主机模式: hostonly
    vmnet1网卡  对应host only模式
    虚拟机只能和真实机器通信,处于一个封闭的网络里 --》vlan里

    dhcp服务器给仅主机模式的虚拟机分配ip地址的时候,没有告诉虚拟机网关的ip,没有配置网关,导致虚拟机不能进行跨网段通信,只能和真实机器通信。

3、NAT模式

3.NAT模式:
    vmnet8网卡  对应nat模式,用来和虚拟机的网卡模式是nat的机器通信,连接在同一个局域网里
    用于共享主机的ip地址,所有的虚拟机使用真实机器的ip地址联网
        SNAT
    不同的vlan --》不同vlan对应不同的网段 --》做了隔离的

    192.168.*.1  -->真实机器的vmnet8网卡使用
    192.168.*.2  -->给vmware 模拟出来的路由器的LAN口使用,作为网关使用

vmnet1和vmnet8 配置ip地址,注意不要配置成相同网段的ip地址了,不然会导致有2条相同的直连路由,导致通信异常 

路由器里一个接口就是一个网段,不要配置相同的网段

windows和linux系统里,一个接口可以配置多个ip地址,多个接口可以配置相同网段,会产生多条直连路由,会导致数据在转发的时候出错。

总网络规划图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/40401.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用模板创建【vite+vue3+ts】项目出现 “找不到模块‘vue‘或其相应的类型声明” 的解决方案

问题描述 项目前台需要使用Vue3Ts来写一个H5应用&#xff0c;然后我用模板创建 npm create vitelatest vue3-vant-mobile -- --template vue-ts创建完后进入HelloWorld.vue&#xff0c;两眼一黑 解决办法一 npm i --save-dev types/node然后在tsconfig.json的"compi…

软件测试银行项目面试过程

今天参加了一场比较正式的面试&#xff0c;汇丰银行的视频面试。在这里把面试的流程记录一下&#xff0c;结果还不确定&#xff0c;但是面试也是自我学习和成长的过程&#xff0c;所以记录下来大家也可以互相探讨一下。 请你做一下自我介绍&#xff1f;&#xff08;汇丰要求英…

Kind | Kubernetes in Docker 把k8s装进docker!

有点像杰克船长的黑珍珠 目录 零、说明 一、安装 安装 Docker 安装 kubectl 安装 kind 二、创建/切换/删除集群 创建 切换 删除 将镜像加载到 kind 群集中 零、说明 官网&#xff1a;kind Kind&#xff1a; Kubernetes in Docker 的简称。kind 是一个使用 Docker 容…

TortoiseGit 入门指南11:还原与重置

Git 就像个时光机器&#xff0c;能让我们还原到任何提交。 还原未提交的更改 假如我们在查看一个干净的代码仓库&#xff0c;干净意味着工作区中的文件保持着最后一次提交的状态&#xff0c;没有修改。在查看的过程中&#xff0c;我们有意或无意的修改了工作区中的文件&#…

MySQL数据库(五)

目录 一、数据库的约束 1.1 约束类型 1.1.1 null约束 1.1.2unique约束 1.1.3default默认值约束 1.1.4primary key主键约束 1.1.5foreign key外键约束 二、内容重点总结 一、数据库的约束 1.1 约束类型 not null - 指示某列不能存储 null值。unique - 保证某列的每行必须有唯一…

blender 叶片制作

圆润叶片 效果展示 shift a 新建矩形&#xff0c;s y 延 y 轴方向压扁&#xff0c;ctrl r 循环切割&#xff0c;滚动滚轮&#xff0c;延 y 轴方向切两条循环线&#xff0c;框选点&#xff0c;s 缩放&#xff0c;调整到叶片造型&#xff0c;添加细分修改器&#xff1b;给叶片…

opencv-14 图像加密和解密

在OpenCV中&#xff0c;图像加密和解密是通过对图像像素进行一系列的变换和操作来实现的 通过按位异或运算可以实现图像的加密和解密。 通过对原始图像与密钥图像进行按位异或&#xff0c;可以实现加密&#xff1b;将加密后的图像与密钥图像再次进行按位异或&#xff0c;可以实…

CodeGeex论文阅读

《CodeGeeX: A Pre-Trained Model for Code Generation with Multilingual Evaluations on HumanEval-X》 论文地址&#xff1a;https://arxiv.org/pdf/2303.17568.pdf 代码地址&#xff1a;https://github.com/THUDM/CodeGe 一、简介 CodeGeeX&#xff0c;是一个具有130亿…

FL Studio Producer Edition v21.0.3.3517 for Mac中文版解锁版下载

水果音乐编辑软件FL Studio Producer Edition v21.0.3.3517 for Mac中文版解锁版下载是兔八哥爱分享搜集到的Mac Os系统上一款功能齐全的音乐编曲工具&#xff0c;可以为需要创作高品质音乐曲目的专业和业余艺术家提供多轨录音&#xff0c;排序和混音。 借助FL Studio 21的帮助…

vue+canvas图片裁切

vuecanvas图片裁切 头像的裁切、图片的一些处理…… vue&#xff1a;路由router、vuex状态管理 组件效果 组件代码&#xff1a; 实现思路 盒子即一张画布&#xff0c;把选择的图片放到画布中进行裁切&#xff0c;按照canvas的一些语法裁切一部分内容。 有一个固定大小的画布&am…

数组的递归筛选

数组递归筛选 根据一个值筛选出来通过 includes 递归 const options [{name: "ikun",options: [{name: "YAY11",},],},{name: "YAY",}, ];function findValue(orgOptions,val) {let newArr1 []orgOptions.forEach(item>{if(item.options…

【windows测试通过】关于Godot导入外部音频文件的问题

file.open(filepath, file.READ) var buffer file.get_buffer(file.get_len()) #put data into audiostreamsample var stream AudioStreamSample.new() stream.data buffer 代码给出&#xff0c;还没有测试过。(godot3.2测试未通过&#xff09; 在运行时轻松加载外部音频…

ROS:动态参数

目录 一、前言二、概念三、作用四、实际用例4.1需求4.2客户端4.2.1流程4.2.2新建功能包4.2.3添加.cfg文件4.2.4配置 CMakeLists.txt4.2.5编译 4.3服务端(C)4.3.1流程4.3.2vscode配置4.3.3服务器代码实现4.3.4编译配置文件4.3.5执行 4.4服务端(Python)4.4.1流程4.4.2vscode配置4…

Kakfa - 多副本架构

文章目录 基本架构Kafka 多副本架构概念优点缺点 图解多副本架构小结 基本架构 Kafka 多副本架构 概念 Kafka 是一个高性能、分布式的消息系统&#xff0c;被广泛应用于各种场景中。在 Kafka 中&#xff0c;多副本架构是保证数据可靠性的重要手段之一。 多副本架构指的是将同…

微信小程序中常见组件的使用

文章目录 微信小程序中常见组件的使用视图组件viewscroll-viewswipermovable-area 基础组件icontextrich-textprogress 表单组件buttoncheckbox、checkbox-grouplabelforminputpicker单列选择器多列选择器时间选择器&日期选择器&地区选择器 picker-viewradiosliderswit…

【protobuf】socket.io序列化和反序列化

1.背景 后台利用socket.io发送websocket消息&#xff0c;加密用到protobuf 2.反序列化时遇到问题 Traceback (most recent call last): File "D:/locust/Nigeria/test3.py", line 40, in <module> play.ParseFromString(decode_spin_str) google.proto…

Java将获取的参数,图片以及pdf文件放入到word文档指定位置

首先引入的依赖 <!-- poi库 --> <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.apache.poi</groupId&…

【hadoop】HDFS

HDFS 操作HDFSWeb Console 网页工具操作NameNode操作SecondaryNameNode 命令行Java API HDFS的原理解析数据上传的过程数据下载的过程 HDFS的高级特性回收站配额Quota名称配额空间配额 快照Snapshot安全模式 SafeMode权限管理&#xff1a;类似LinuxHDFS的集群 HDFS的底层原理&a…

UART串口通信协议

一、串行通信 串行通信分为两种方式&#xff1a;同步串行通信和异步串行通信。 同步串行通信需要通信双方在同一时钟的控制下&#xff0c;同步传输数据。 异步串行通信是指通信双方使用各自的时钟控制数据的发送和接收过程。 二、UART 通用异步收发传输器&#xff08;Unive…

基于SpringBoot + EasyExcel + Vue + Blob实现导出Excel文件的前后端完整过程

首先前端发起HTTP请求之后&#xff0c;后端返回一个Excel输出流&#xff0c;然后前端用Blob类型接收数据&#xff0c;并且解析响应头数据以及提取源文件名&#xff0c;最后用a标签完成下载。 一、后端代码 &#xff08;1&#xff09;导入阿里巴巴的EasyExcel依赖&#xff08;…
最新文章