【博客679】LVS NAT模式与FULLNAT模式原理与配置差别

news2024/12/26 23:13:58

LVS NAT模式与FULLNAT模式原理与配置差别

注意:

LVS NAT模式是LVS原生的一种工作方式,而FULLNAT是在NAT模式下通过配置SNAT来
实现FULLNAT的,而且配合SNAT这部分是靠我们自己来实现的

1、LVS NAT模式原理与特点

在这里插入图片描述

在这里插入图片描述
NAT模式的数据包请求流程:

  • 1、当用户请求到达 Director Server,此时请求的数据报文会先到内核空间的 PREROUTING 链。 此时报文的源 IP 为 CIP,目标 IP 为 VIP
  • 2、PREROUTING 检查发现数据包的目标 IP 是本机,将数据包送至 INPUT 链
  • 3、IPVS 比对数据包请求的服务是否为集群服务,若是,修改数据包的目标 IP 地址为后端服务器 IP,然后将数据包发至 POSTROUTING 链。 此时报文的源 IP 为 CIP,目标 IP 为 RIP
  • 4、POSTROUTING 链通过选路,将数据包发送给 Real Server
  • 5、Real Server 比对发现目标为自己的 IP,开始构建响应报文发回给 Director Server。 此时报文的源 IP 为 RIP,目标 IP 为 CIP
  • 6、Director Server 在响应客户端前,此时会将源 IP 地址修改为自己的 VIP 地址,然后响应给客户端。 此时报文的源 IP 为 VIP,目标 IP 为 CIP

NAT模式特点:

  • RS 应该使用私有地址,RS 的网关必须指向 DIP
  • DIP 和 RIP 必须在同一个网段内
  • 请求和响应报文都需要经过 Director Server,高负载场景中,Director Server 易成为性能瓶颈
  • 支持端口映射
  • RS 可以使用任意操作系统

2、为什么需要LVS FULLNAT模式

LVS NAT模式下,一般需要设置RS 的网关必须指向 DS:
因为RS收到的包的源ip是client ip,如果不设置RS 的网关必须指向 DS,默认将包送回DS,再由DS回复给client的话,那么RS直接回给client就会有问题,因为client发出的时候目的ip是vip,不是RS的ip,那么此时client对RS直接回过来的包会回复RST来终止这个连接,因为在client看来,不认为这个包是自己发出去的请求包的回包

如果采用LVS NAT + MASQUERADE实现FULLNAT的话,则不会有这个问题,因为RS看到的ip是DS的ip,也就是DS对client和对RS实现了双边连接,从而达到FULLNAT目的。虽然NAT模式也是RS流量都回给DS的,但是得将RS的默认网关设置为DS,这样有两个问题:

  • 需要操作RS(有时候RS你没有权限操作,有可能是别人是server,你是LB提供方)
  • 如果一个RS同时是多个DS的后端,这时候你无法配置一个RS有多个默认网关,而且你无法区分流量要给哪个DS

因此如果你是LB的提供方,你提供vip和负载均衡能力的时候只能使用FULLNAT,从而实现对于client和RS都无感知!

3、LVS NAT配合MASQUERADE实现FULLNAT要注意的地方

1、需要开启两个内核特性:

  • net.ipv4.ip_forward
  • net.ipv4.vs.conntrack

2、需要添加MASQUERADE

iptables -t nat -A POSTROUTING -m ipvs --vaddr xxxx --vport xxxxx -j MASQUERADE

3、参数的作用参考之前的博文:

  • 【博客514】k8s中net.ipv4.ip_forward=1的意义
  • 【博客607】linux路由过程分析与net.ipv4.ip_forward参数
  • 【博客578】LVS NAT配合MASQUERADE实现FULLNAT的场景,及此场景下net.ipv4.vs.conntrack参数的重要作用

4、LVS NAT模式下为什么不需要开启net.ipv4.ip_forward和net.ipv4.vs.conntrack

原因是LVS NAT模式自己实现了一套连接跟踪机制,原理如下:

  • 【博客588】ipvs nat模式下独立于iptables与conntrack的连接跟踪表和NAT机制

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于matlab使用校准相机拍摄的两张图像中恢复相机运动并重建场景的3D结构(附源码)

一、前言 运动结构 (SfM) 是从一组 3-D 图像估计场景的 2-D 结构的过程。此示例演示如何从两个图像估计校准相机的姿势,将场景的三维结构重建为未知比例因子,然后通过检测已知大小的对象来恢复实际比例因子。 此示例演示如何从使…

如何开一家真人手办店?

从目前的情况来看,在3D建模这一个行业里,真人手办算是一个不错的风口,之前在圈子里刮起了一阵浪潮。手办大家都接触过,真人手办简单来说就是把以前手办的角色变成了真人,作为礼物和纪念品再合适不过。 许多人对这个新生…

【软件安装】Linux系统中安装Nginx服务器(Ubuntu系统)

这篇文章,主要介绍Linux系统中安装Nginx服务器(Ubuntu系统)。 目录 一、Linux安装Nginx 1.1、下载nginx安装包 (1)第一种方式 (2)第二种方式 1.2、上传nginx压缩包到Linux服务器 1.3、解压…

新项目搞完啦!!!

大家好,我是鱼皮。 经过了 7 场直播,总时长近 20 小时,我在 自己的编程导航 的第 5 个 全程直播开发 的项目 —— 智能 BI 项目,完结啦! 我在这里对该项目做一个简单的总结,希望让更多需要它的同学看到&am…

爬虫-爬取Bing词典单词相关数据

主要爬取的数据如图片中的红框所示: 爬取效果如下所示: 具体爬虫代码私我~

Seata 四种模式对比总结

一、前言 通过以下系列章节: docker-compose 实现Seata Server高可用部署 | Spring Cloud 51 Seata AT 模式理论学习、事务隔离及部分源码解析 | Spring Cloud 52 Spring Boot集成Seata利用AT模式分布式事务示例 | Spring Cloud 53 Seata XA 模式理论学习、使用…

uniapp中微信小程序不能编译style绑定方法的解决方案

uniapp中动态style问题 这是我的代码设置了根据传参显示不同字体颜色和不同背景色 这两个方法我都写在methods中 methods: {// // 添加不同背景颜色getBackColor(val) {let color "";switch (val[4]) {case 0:color background:${this.colors[0]};break;case 1:col…

Python中的for循环语句及其应用举例(等差数列求和、阶乘、寻找最大值)

Python中的for循环语句及其应用举例(等差数列求和、阶乘、寻找最大值) 在学习任何编程语言的时候,不熟悉判断选择结构和循环结构,就难以发挥计算机优秀的计算能力和提高学习工作效率。本文将重点讲解Python中的for循环语句,并举例等差数列求…

数据分析:2023 最值得投资的 AI 公司榜单

文章目录 1 AI 公司的火爆程度和发展趋势1.1 AI 市场的规模和增长趋势1.2 全球 AI 公司数量和分布情况1.3 我们如何把握 AI 风口? 2 方法一:网络数据采集 - 使用亮数据代理2.1 动态 ip 代理,获取数据2.2 浏览器代理 3 方法二:网络…

Linux:nginx虚拟主机

基于域名 cd /usr/local/nginx/html/ mkdir aaa mkdir bbb echo www.aaa.com > aaa/index.html echo www.bbb.com > bbb/index.html vim /usr/local/nginx/conf/nginx.conf 修改server中的配置 server {listen 80;server_name www.benet.com;charset utf-8;access_log l…

spring boot项目敏感配置信息如何加密?

一般情况下,spring boot项目为了能够实时刷新配置信息,都会把配置文件放在nacos之类的配置中心上。但是这样就会存在一个问题,一些比较敏感的配置信息,比如数据库密码,一旦被泄露,就会有严重的数据安全问题…

剩余电流式电气火灾监控系统在火力发电厂的应用

张心志 安科瑞电气股份有限公司 上海嘉定 201801 摘要:本文首先指出了在火力发电厂中应用电气火灾监控系统的重要性,接着研究分析了电气火灾监控系统的应用情况,主要从 系统简介、电气火灾原因等方面进行了分析。*后从配电箱、火灾监控设备…

如何画时序图

10年产品经理教你3步画好UML时序图,轻松掌握流程分析利器【建议收藏】 - 知乎 转自知乎 上次介绍了活动图,这次分享 UML 中,另一种流程分析利器——时序图。 以前每次要分析流程,我都会用活动图。直到有一次,我面对…

ChatGPT伪原创:智能AI助手助力文章创作

智能AI助手助力文章创作 随着人工智能技术的不断发展,智能AI助手正逐渐成为文章创作的得力工具。无论是在写作过程中提供灵感和创意,还是在文章编辑和校对中提供帮助,智能AI助手都能为作者节省时间和精力,提高文章质量。本文将从…

剑指 Offer 55 - I. 二叉树的深度 / LeetCode 104. 二叉树的最大深度(二叉树后序遍历,回溯传递值)

题目: 链接:剑指 Offer 55 - I. 二叉树的深度;LeetCode 104. 二叉树的最大深度 难度:简单 输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条…

Java 针对Word模板内容替换输出

对应依赖 <repositories><!-- 使用 Free Spire.Doc for Java 的jar包实现替换word中的内容--><repository><id>com.e-iceblue</id><name>e-iceblue</name><url>https://repo.e-iceblue.cn/repository/maven-public/</url&…

高校社团管理系统

目录 一、前言 二、运行截图 &#xff08;一&#xff09;登录注册界面 &#xff08;二&#xff09;资讯管理 &#xff08;三&#xff09;用户管理 &#xff08;四&#xff09;账户管理 &#xff08;三&#xff09;关于获取 一、前言 这是一个高校社团管理系统。编程语言…

汇总一些高考填报志愿相关的资源,希望对大家有帮助

一、夸克高考 夸克有AI志愿填报专题&#xff0c;首页就能看到。 输入信息会展示可报考学校专业信息&#xff0c;比较直观。 相比各种分析&#xff0c;更能定位自己想要报考的学校&#xff01; 二、张雪峰志愿填报资源 三、框框大学 网站里的建议涵盖了中学选科/高考志愿/大…

抖音seo矩阵系统源代码分享

一、视频批量生成&#xff0c;文字转语音部分 $breadcrumbs [[title > AI视频创意, link > #],[title > 开始创作, link > ], ]; $this->buildBreadcrumbs($breadcrumbs); //搜索专用 $keyword_type $this->request->getStrParam(keyword_type); $keywo…

spring mvc架构模式概述

三层架构: pojo&#xff0c;bean&#xff0c;domain是一个意思&#xff0c;表示实体类 dao表示操作数据库的那个类&#xff0c;一般是一张表一个