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

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.hqwc.cn/news/3628.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Atlas 200I DK A2开发者套件通过路由器联网(360安全路由-V2)

一、参考资料 Windows系统 通过直连路由器连接外部网络 二、准备工作 准备micro SD存储卡,即TF卡,建议128GB以上;准备micro SD读卡器;准备普通网线一根;准备一个路由器, 360安全路由-V2路由器。 三、关键…

【MOOC 作业】第5章 链接层

不是标答也不是参考答案 仅从个人理解出发去做题 1、(20分) 在某网络中标识为 A 到 E 的 5 个结点以星形与一台交换机连接,考虑在该网络环境中某个正在学习的交换机的运行情况。假定:该交换机表初始为空。B 向 E 发送一个帧,此时交换机将该数…

多服务器云探针源码(服务器云监控)

全球服务器分布世界地图 服务器(控制端) ping 连通率功能 后台编辑 添加 删除 服务器(控制端) 生成服务器(控制端)一键安装脚本 在线 SSH 多服务器批量执行命令 多服务器定制分享地址 控制游客那些服…

ROS学习篇之硬件准备(零)-thinkbook16+锐龙版 安装ubuntu20.04遇到的各种坑

文章目录 一.计算机配置二.遇到的问题及解决办法1.键盘失灵2.无法联wifi3.蓝牙搜索不到设备4.无法开热点 三.最后的感想 一.计算机配置 CPU: AMD R7 6800H (网卡,娱乐大师读出来的不对,在windos系统下,联想管家读出来网卡的型号是…

WebSocket

WebSocket WebSocket 事HTML5开始提供的一种在单个TCP连接上进行的双工通讯的协议,可以在html页面直接使用。 WebSocket使用客户端何服务器之间的数据交换变得更加简单,允许服务端主动向客户端推动数据。在WebSocketAPI中,浏览器和服务器只…

JVM类加载机制

一、类的加载过程(从磁盘到内存的过程) 1、整体过程概述 我们首先以一个类举例,一个类的加载首先是通过某个main函数启动程序时,通过类加载器把主类加载到jvm中,如: package com.gaorufeng.jvm;public c…

远程桌面发生身份验证错误,要求的函数不受支持

windows10专业版: 解决方法: 使用微软官方建议修改本地组策略: winr弹出运行窗口,输入gpedit.msc,打开本地组策略 计算机配置>管理模板>系统>凭据分配>加密Oracle修正 选择启用并选择易受攻击。 windows10家庭版&a…

如何调用百度地图API

前言 要调用百度地图API,步骤操作如下 注册并创建一个API密钥。您可以在百度地图API控制台上创建您的密钥。选择要使用的API服务。百度地图API提供了多种服务,包括地图展示、路线规划、地点搜索、实时交通等。您可以在百度地图API控制台上查看所有可用…

【Linux进程】进程状态 {进程状态的介绍,进程状态的转换,Linux中的进程状态,浅度睡眠VS深度睡眠,僵尸进程VS孤儿进程,调度器的作用}

进程状态 一、基本进程状态 1.1 进程状态介绍 创建状态:当一个进程被创建时,它处于创建状态。在这个阶段,操作系统为进程分配必要的资源(将代码和数据拷贝到内存,创建PCB结构体等),并为其分配一…

从0到1精通自动化测试,pytest自动化测试框架,配置文件pytest.ini(十三)

一、前言 pytest配置文件可以改变pytest的运行方式,它是一个固定的文件pytest.ini文件,读取配置信息,按指定的方式去运行 二、ini配置文件 pytest里面有些文件是非test文件pytest.ini pytest的主配置文件,可以改变pytest的默认…

Android Binder通信原理(三):service注册

源码基于:Android R 0. 前言 上一文中详细分析了servicemanger 的启动流程,我们知道 servicemanager 作为 binder 机制中的一个特殊service,利用service map管理所有service,也是所有binder 通信的入口。 本文着重分析 service …

智能文档图像处理技术应用与实践

写在前面智能文档处理面临的技术难题智能文档处理的研究领域● 文档图像分析与预处理● 手写板反光擦除● 版面分析与文档还原 写在最后 写在前面 VALSE 2023 无锡视觉与学习青年学者研讨会近期在无锡国际博览中心举办,由江南大学和无锡新吴区联合承办。本次会议旨…