当前位置: 首页 > news >正文

Linux云计算 |【第二阶段】NETWORK-DAY4

主要内容:

NAT 原理与配置(私有IP地址、静态NAT转换、Easy IP)、VRRP解析(主路由器、备份路由器、虚拟路由器、优先级)

一、NAT概述

NAT 网络地址转换(Network Address Translation)是一种网络技术,用于将私有IP地址转换为公共IP地址,以便在互联网上进行通信。NAT的主要目的是解决IPv4地址短缺问题,并提供一定程度的网络安全。

主要功能:

  • 地址转换:NAT将内部网络的私有IP地址转换为公共IP地址,使内部网络设备能够与外部网络(如互联网)进行通信。
  • 安全性:NAT隐藏内部网络的IP地址,提供一定程度的网络安全,防止外部网络直接访问内部设备。
  • 节省IP地址:NAT允许多个设备共享一个或少数几个公共IP地址,从而节省宝贵的IPv4地址资源。

NAT类型:

  1. 静态NAT:

    • 一对一的地址转换,将一个私有IP地址映射到一个公共IP地址。
    • 适用于需要外部网络直接访问的设备,如Web服务器。
  2. 动态NAT:

    • 将私有IP地址池中的地址动态映射到公共IP地址池中的地址。
    • 适用于内部网络设备不需要固定公共IP地址的情况。
  3. PAT(端口地址转换):

    • 也称为NAT Overload,允许多个私有IP地址共享一个公共IP地址,通过不同的端口号进行区分。
    • 最常见的NAT类型,适用于大多数家庭和小型企业网络。

补充:私有IP地址分类

私有IP地址是指在互联网上不可路由的IP地址,主要用于内部网络(如家庭、企业网络)中。这些地址不会在互联网上路由,因此可以被多个组织重复使用,从而节省了宝贵的IPv4地址资源。私有IP地址分为三类,分别对应于不同的网络规模。

  1. A类私有IP地址:

    • 地址范围: 10.0.0.0 到 10.255.255.255
    • 子网掩码: 255.0.0.0 或 /8
    • 适用场景: 适用于大型网络,可以容纳多达16,777,216个主机。
  2. B类私有IP地址:

    • 地址范围: 172.16.0.0 到 172.31.255.255
    • 子网掩码: 255.240.0.0 或 /12
    • 适用场景: 适用于中型网络,可以容纳多达1,048,576个主机。
  3. C类私有IP地址:

    • 地址范围: 192.168.0.0 到 192.168.255.255
    • 子网掩码: 255.255.0.0 或 /16
    • 适用场景: 适用于小型网络,可以容纳多达65,536个主机。

1、NAT的工作过程

静态转换(Static NAT)和 Easy IP 是网络地址转换(NAT)的两种常见实现方式,它们在配置和应用场景上有所不同。

① 静态转换(Static NAT)

静态转换提供一对一的地址转换,将一个私有IP地址映射到一个公共IP地址。这种方式适用于需要外部网络直接访问的设备

② Easy IP

Easy IP 是一种简化的PAT(端口地址转换)配置方式,通常用于小型网络环境中。它允许内部网络中的多个设备共享一个公共IP地址,通过不同的端口号进行区分。

1.1 静态NAT 配置

静态转换是指将内部网络的私有地址转换为公有地址时,IP地址的对应关系是确定的,静态转换是一对一的转转换,是双向通信;

  • 格式:nat static global 公网转换地址 inside 私网转换地址

案例:

1.配置PC地址与掩码

  • PC1:192.168.2.1 24 192.168.2.254
  • PC2:192.168.2.2 24 192.168.2.254
  • PC3:100.0.0.10 8    //模拟公网地址

2.路由器配置端口IP

[Huawei] interface GigabitEthernet 0/0/0
[Huawei-GigabitEthernet0/0/0] ip address 192.168.2.254 24
[Huawei] interface GigabitEthernet 0/0/1
[Huawei-GigabitEthernet0/0/1] ip address 100.0.0.1 8

3.配置静态NAT转换(路由器出外网接口)

[Huawei-GigabitEthernet0/0/1] nat static global 100.0.0.2 inside 192.168.2.1  //使用静态NAT技术,将内部的192.168.2.1转化为外部的公网地址100.0.0.2
[Huawei-GigabitEthernet0/0/1] nat static global 100.0.0.3 inside 192.168.2.2  //使用静态NAT技术,将内部的192.168.2.2转化为外部的公网地址100.0.0.3

4.查看当前接口的配置信息

[Huawei-GigabitEthernet0/0/1] display this

5.验证NAT转换(双向)

① 使用私网主机地址,Ping公网主机地址

② 使用公网主机地址,Ping私网主机地址

注意:使用公网主机地址Ping私网主机地址时,不能直接使用私网主机地址做Ping测试,必须使用转换的公网地址访问私网地址;

1.2 Easy IP 配置

Easy IP允许将多个内部地址映射到网关出接口,多对一转换,是单向通信(临时端口);

格式:nat outbound ACL规则

案例:

配置EasyIP,让所有的内部地址仅仅利用唯一的一个公网地址100.0.0.1访问外网

1.配置PC地址与掩码

  • PC1:192.168.2.1 24 192.168.2.254
  • PC2:192.168.2.2 24 192.168.2.254
  • PC3:100.0.0.10 8    //模拟公网地址

2.路由器配置端口IP

[Huawei] interface GigabitEthernet 0/0/0
[Huawei-GigabitEthernet0/0/0] ip address 192.168.2.254 24
[Huawei] interface GigabitEthernet 0/0/1
[Huawei-GigabitEthernet0/0/1] ip address 100.0.0.1 8

3.配置NAT-Easy IP转换(路由器出外网接口)

[Huawei] acl 2000
[Huawei-acl-basic-2000] rule permit source any    //ACL规则允许所有
[Huawei-acl-basic-2000] quit
[Huawei] interface GigabitEthernet 0/0/1
[Huawei-GigabitEthernet0/0/1] nat outbound 2000    //NAT出口应用ACL2000
[Huawei-GigabitEthernet0/0/1] display this

4.验证NAT-EasyIP转换(单向-通过产生的临时端口访问),公网主机无法访问私网

二、VRRP概述

  • 单网关的场景分析(缺陷):当网关路由器出现故障时,本网段内以该设备为网关的主机都不能与Internet进行通信;
  • 多网关存在的问题:网关间IP地址冲突,主机会频繁切换网络出口;

虚拟路由器冗余协议(VRRP)是一种网络协议,用于提高网络的可靠性和冗余性。VRRP允许多个路由器在同一个网络中协同工作,形成一个虚拟路由器,提供单一的网关IP地址。这样,即使某个物理路由器发生故障,网络中的设备仍然可以通过虚拟路由器继续通信,从而实现高可用性。

VRRP的主要特点:

虚拟路由器

  • VRRP将多个物理路由器组合成一个虚拟路由器,提供单一的网关IP地址。
  • 虚拟路由器由一个主路由器(Master)和多个备份路由器(Backup)组成。

高可用性

  • 主路由器负责处理所有流量,当主路由器发生故障时,备份路由器会自动接管,确保网络的连续性。
  • 通过心跳机制(Hello消息)监测主路由器的健康状态。

负载均衡

  • 在某些配置中,VRRP可以实现负载均衡,将流量分布到多个路由器上。

优先级机制

  • 每个路由器都有一个优先级值,优先级最高的路由器成为主路由器。
  • 优先级值可以手动配置,也可以根据路由器的性能自动调整。

安全性

  • VRRP支持认证机制,防止未经授权的路由器加入虚拟路由器。

VRRP的工作原理:

① 初始状态:

  • 所有参与VRRP的路由器都处于备份状态(Backup)。

选举主路由器

  • 根据优先级和IP地址,选举优先级最高且IP地址最大的路由器作为主路由器

② 主路由器工作:

  • 主路由器定期发送VRRP通告消息(Hello消息),告知其他路由器其健康状态。
  • 主路由器负责处理所有流量。

③ 故障检测和切换:

  • 备份路由器在一定时间内没有收到主路由器的Hello消息,则认为主路由器发生故障。
  • 备份路由器根据优先级和IP地址重新选举新的主路由器。

④ 恢复和重新选举:

  • 故障的主路由器如果恢复,它会重新加入虚拟路由器,并处于初始状态,再根据优先级和IP地址重新选举主路由器。

1、VRRP虚拟路由冗余协议

VRRP协议通过将多个物理路由器组合成一个虚拟路由器,提供单一的网关IP地址,从而提高网络的可靠性和冗余性。通过优先级机制和心跳检测,VRRP协议能够自动检测和处理路由器故障,确保网络的高可用性。正确配置和管理VRRP协议,可以显著提高网络的稳定性和性能。


VRRP组成员角色:

  1. 主路由器(Master):

    • 负责处理所有流量。
    • 定期发送VRRP通告消息(Hello消息),告知其他路由器其健康状态。
    • 如果主路由器发生故障,备份路由器会自动接管成为新的主路由器。
  2. 备份路由器(Backup):

    • 在主路由器正常工作时,处于待命状态。
    • 监测主路由器的健康状态,如果主路由器发生故障,备份路由器会根据优先级和IP地址重新选举新的主路由器。
  3. 虚拟路由器(Virtual Router):

    • 由一个主路由器和多个备份路由器组成。
    • 提供单一的网关IP地址,确保网络的连续性和高可用性。

在路由器或三层交换机进口

  • 格式:vrrp vrid X virtual-ip 虚拟路由器地址     //配置VRRP,vrid组号要与同VLAN的主机相同(为一个组),指定虚拟路由器地址
  • 格式:vrrp vrid X priority       //配置VRRP优先级,默认100

案例:

1.配置2台三层交换机、路由器的主机名及虚拟接口地址

SW1三层交换机

[Huawei] sysname sw1     //修改主机名
[sw1] interface vlanif 1     //配置VLAN1的虚接口
[sw1-Vlanif] ip address 192.168.1.252 24
[sw1] vlan 2
[sw1] interface vlanif 2    //配置VLAN2的虚接口
[sw1-Vlanif] ip address 192.168.2.2 24
[sw1] interface GigabitEthernet 0/0/1
[sw1-GigabitEthernet0/0/1] port link-type access
[sw1-GigabitEthernet0/0/1] port default vlan 2

SW2三层交换机

[Huawei] sysname sw2     //修改主机名
[sw2] interface vlanif 1     //配置VLAN1的虚接口
[sw2-Vlanif] ip address 192.168.1.253 24
[sw2] vlan 2
[sw2] interface vlanif 2     //配置VLAN2的虚接口
[sw2-Vlanif] ip address 192.168.3.2 24
[sw2] interface GigabitEthernet 0/0/1
[sw2-GigabitEthernet0/0/1] port link-type access
[sw2-GigabitEthernet0/0/1] port default vlan 2

AR1路由器

[Huawei] sysname ar1     //修改主机名
[ar1] interface GigabitEthernet 0/0/0
[ar1-GigabitEthernet0/0/0] ip address 192.168.2.1 24
[ar1] interface GigabitEthernet 0/0/1
[ar1-GigabitEthernet0/0/0] ip address 192.168.3.1 24
[ar1] interface GigabitEthernet 0/0/2
[ar1-GigabitEthernet0/0/0] ip address 192.168.4.254 24
[ar1] interface GigabitEthernet 0/0/2

2.配置OSPF动态路由

SW1三层交换机

[sw1] ospf
[sw1-ospf-1] area 0
[sw1-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
[sw1-ospf-1-area-0.0.0.0] network 192.168.2.0 0.0.0.255

SW2三层交换机

[sw2] ospf
[sw2-ospf-1] area 0
[sw2-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
[sw2-ospf-1-area-0.0.0.0] network 192.168.3.0 0.0.0.255

AR1路由器

[ar1] ospf
[ar1-ospf-1] area 0
[ar1-ospf-1-area-0.0.0.0] network 192.168.2.0 0.0.0.255
[ar1-ospf-1-area-0.0.0.0] network 192.168.3.0 0.0.0.255
[ar1-ospf-1-area-0.0.0.0] network 192.168.4.0 0.0.0.255

3.配置VRRP协议

SW1三层交换机

[sw1] interface vlanif 1     //进入VLAN1的虚接口
[sw1-Vlanif] vrrp vrid 1 virtual-ip 192.168.1.254   //指定VRID1和虚拟路由器地址
[sw1-Vlanif] display vrrp brief     //查看VRRP状态

SW2三层交换机

[sw2] interface vlanif 1     //进入VLAN1的虚接口
[sw2-Vlanif] vrrp vrid 1 virtual-ip 192.168.1.254   //指定VRID1和虚拟路由器地址
[sw2 -Vlanif] display vrrp brief      //查看VRRP状态

4.测试VRRP

将Master路由器网线断开连接,查看Backup路由器,Backup路由器已变成主路由器

将原Master路由器网线恢复连接,查看原Master路由器状态

5.配置VRRP的优先级

[sw1] interface vlanif 1     //进入VLAN1的虚接口
[sw1-Vlanif] vrrp vrid 1 priority 150
[sw1-Vlanif] display vrrp brief

 补充:设置优先级后,数值最大的升为主Master服务器;

 

小结:

本篇章节为【第二阶段】NETWORK-DAY4 的学习笔记,这篇笔记可以初步了解到 NAT 原理与配置(私有IP地址、静态NAT转换、Easy IP)、VRRP解析(主路由器、备份路由器、虚拟路由器、优先级)。除此之外推荐参考相关学习网址:

  • https://support.huawei.com/enterprise/zh/doc/EDOC1000069491/c5b1cf87
  • VRRP原理与配置-CSDN博客

Tip:毕竟两个人的智慧大于一个人的智慧,如果你不理解本章节的内容或需要相关笔记、视频,可私信小安,请不要害羞和回避,可以向他人请教,花点时间直到你真正的理解

相关文章:

Linux云计算 |【第二阶段】NETWORK-DAY4

主要内容: NAT 原理与配置(私有IP地址、静态NAT转换、Easy IP)、VRRP解析(主路由器、备份路由器、虚拟路由器、优先级) 一、NAT概述 NAT 网络地址转换(Network Address Translation)是一种网络…...

amazon linux使用密码登录或者root登陆

1. 首先要把创建root密码,如果原来的密码不记得了,可以直接用 sudo passwd -d root 删除原来的密码 然后创建root密码 sudo passwd root 2. 修改 sshd_config 文件 vim /etc/ssh/sshd_config 允许使用密码登录 PasswordAuthentication yes 允许root…...

集智书童 | CNN 与 Transformer 的强强联合:AResNet-ViT在图像分析中的优势 !

本文来源公众号“集智书童”,仅用于学术分享,侵权删,干货满满。 原文链接:CNN 与 Transformer 的强强联合:AResNet-ViT在图像分析中的优势 ! 作者针对残差CNN分支的注意力引导设计进行了消融实验。同时&a…...

Ubuntu基础使用指南

Ubuntu基础使用指南 Ubuntu作为一款流行的开源操作系统,以其稳定性、安全性和易用性著称。无论是作为服务器操作系统还是桌面操作系统,Ubuntu都能满足用户的各种需求。下面,我们将从Ubuntu的基础使用开始,带你深入了解这个强大的…...

怎样才算精通 Excel?

最强AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频百万播放量https://aitools.jurilu.com/ 高赞回答很系统,但普通人这么学,没等精通先学废了! 4年前,我为了学数据分析&#…...

怎么学算法并找到工作

1.基础 找一本基础的内容看一遍 时间复杂度、空间复杂度计算方式数组、队列、栈、树、图结构十大排序算法 2.《hello算法》 动画图解算法 https://www.hello-algo.com/chapter_hello_algo/ 3.《剑指Offer》 一些面试的高频有年度的题解 里么的题很有特色,而…...

【实时建图】MapTR(1)------ 论文详解

作者们提出了一种有效构建高清地图的方法(MapTR),该地图为自动驾驶系统的规划提供丰富且精确的环境信息。这是一种结构化端到端变换器,用于高效在线矢量化地图构建。作者提出了一种统一的置换等价建模方法,即将地图元素建模为一个具有一组等价置换的点集,这准确地描述了地…...

通用Builder工具类

假设有一个Java实体类定义: public class Request {private String type;private String op;private PageInfo pageInfo;public static class PageInfo {private Integer pageNum;private Integer pageSize;}// 省略getter和setter... }在代码中创建这个对象&#…...

开源免费的海报设计器vue-fabric-editor

vue-fabric-editor 是一个基于 Vue.js 和 Fabric.js 的创新前端富文本编辑器,它将传统的文本输入体验与图形设计元素相结合,为用户提供了全新的内容创作方式。 以下是关于 vue-fabric-editor 的详细介绍: 一、技术特点 框架结合:…...

【学习笔记】Day 4 - Day 5

一、进度概述 1、新机环境配置 2、《地震勘探原理》第一章 3、对 “DL-FWI 研究方向展望” 组会的一些想法 二、详情 1、新机环境配置 配置新机环境着实耗了较多时间,导致理论进度推进较慢。 2、《地震勘探原理》第一章学习笔记 相关笔记在另一篇…...

MySQL数据分析进阶(十四)保护数据库

※食用指南:文章内容为‘CodeWithMosh’SQL进阶教程系列学习笔记,笔记整理比较粗糙,主要目的自存为主,记录完整的学习过程。(图片超级多,慎看!) 【中字】SQL进阶教程 | 史上最易懂S…...

排序算法之堆排序

title: 堆排序 date: 2024-7-23 15:48:25 0800 categories: 排序算法 tags:排序算法堆排序 description: 堆排序(Heap Sort)是一种基于堆的排序算法,具有较高的效率和稳定性。 math: true 堆排序 堆排序(Heap Sort)是…...

Python中的NLP宝库:探索顶级库与工具

标题:Python中的NLP宝库:探索顶级库与工具 Python,作为人工智能和机器学习任务中的关键编程语言,为自然语言处理(NLP)提供了丰富的库和工具。这些库不仅功能强大,而且大多数都是开源的&#xf…...

springboot + springcloud + Google pubsub+ firebase

1.pom依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-gcp-starter</artifactId><version>1.2.6.RELEASE</version></dependency><dependency><groupId>org.springframe…...

时序数据库TDengine和QuestDB对比

QuestDB和TDengine都是高性能的时序数据库&#xff08;Time Series Database, TSDB&#xff09;&#xff0c;但它们在设计、功能、适用场景以及性能表现上各有特色。 以下是对两者的详细对比&#xff1a; 一、设计与架构 QuestDB 是一个开源的高性能SQL时序数据库&#xff0…...

Neuralink的进展与马斯克的技术愿景——从脑机接口到AI融合的未来

引言 Neuralink&#xff0c;这个由埃隆马斯克&#xff08;Elon Musk&#xff09;创立的公司&#xff0c;一直是科技界的焦点。自从其发布以来&#xff0c;Neuralink的脑机接口技术便吸引了全球的目光。最近&#xff0c;马斯克再次向公众展示了Neuralink的突破性进展&#xff0…...

大数据技术——实战项目:广告数仓(第四部分)

目录 第7章 数据仓库环境准备 7.1 数据仓库运行环境 7.1.1 Hive环境搭建 7.1.2 Yarn环境配置 7.2 数据仓库开发环境 第8章 广告数仓ODS层 8.1 广告信息表 8.2 推广平台表 8.3 产品表 8.4 广告投放表 8.5 日志服务器列表 8.6 广告监测日志表 8.7 数据装载脚本 第7章…...

cmake+ninja交叉编译android下的静态库

文章目录 cmakeninja案例背景重新安装ninja编译通过 参考 想整理一个库的cmake工程&#xff0c;他用 cmakeninja 简单了解了一下&#xff0c;是可以不依赖Android studio编译的cmake的&#xff0c;搜到了一个cmakeninja&#xff0c;参考[1] 案例 参考[1]中的代码 背景 cm…...

Vue项目-Table添加Form表单校验

一、HTML <template><div class"taskInfo"><el-form:model"generateParams":rules"formRules"ref"formRef"class"taskInfoForm"label-width"100px"><ul class"taskInfoSearch"&g…...

【iOS】—— 事件传递链和响应者链总结

事件传递链和响应者链总结 1. 事件传递链&#xff1a;事件传递链&#xff1a;传递流程&#xff1a;总结第一响应者&#xff1a; 2. 响应者链响应者链传递流程总结响应者链流程 总结&#xff1a; 之前也学习过这个内容这次在复习的时候&#xff0c;就想着写一下总结&#xff1a;…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号&#xff08;第三种&#xff09;后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象&#xff1a; android studio报错&#xff1a; [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决&#xff1a; 不要动CMakeLists.…...