LVS 当前应用主要采用 DR 和 NAT 模式,但这 2 种模式要求 RealServer 和 LVS在同一个 vlan中,导致部署成本过高;
TUNNEL 模式虽然可以跨 vlan,但RealServer上需要部署 ipip 模块等, 网络拓扑上需要连通外网,较复杂,不易运维。
为了解决上述问题,我们在 LVS 上添加了一种新的转发模式:FULLNAT
该模式和 NAT 模式的区别是: Packet IN 时,除了做 DNAT,还做 SNAT(用户 ip->内网 ip),从而实现LVS-RealServer 间可以跨 vlan 通讯, RealServer 只需要连接到内网

FULLNAT 将作为一种新工作模式(同 DR/NAT/TUNNEL),实现如下功能:
1. Packet IN 时,目标 ip 更换为 realserver ip,源 ip 更换为 内网 local ip;
2. Packet OUT 时,目标 ip 更换为 client ip,源 ip 更换为 vip;
注: Local ip 为一组内网 ip 地址;
性能要求,和 NAT 比, 正常转发性能下降<10%;

关于NAT和FULLNAT的区别如下图所示:

nat模式下报文变化

发送       接收

cip ---> vip

cip ---> rip ( DNAT )

rip ---> cip

vip ---> cip ( SNAT )

fullnat模式下报文变化:

发送       接收

cip ---> vip

lip ---> rip ( SNAT + DNAT )

rip ---> lip

vip ---> cip ( SNAT + DNAT )

注释:

  1. cip为客户端的地址
  2. vip为虚拟地址
  3. rip为真实的服务器
  4. lip为本地地址
  5. SNAT为来源地址转换
  6. DNAT为目的地址转换

FULLNAT一个最大的问题是:RealServer无法获得用户IP;为了解决这个问题我们提出了TOA的概念,主要原理是:将client address放到了TCP Option里面带给后端RealServer,RealServer上通过toa内核模块hack了getname函数,给用户态返回TCP Option中的client ip。

TOA (address of tcp option)-插入 client ip

1. 该功能只有 fullnat 才会用
2. 和 tcp 协议相关

LVS可以防御DDOS 4层标志位攻击,其中,synproxy是用于防御synflood攻击的模块

参考资料:https://github.com/alibaba/LVS/tree/master/docs

http://blog.sina.com.cn/s/blog_620c47630102v2iz.html

NAT与FULL NAT的区别的更多相关文章

  1. VMWare虚拟机提供的桥接、nat和主机模式的区别

    虚拟机网络模式 无论是vmware,virtual box,virtual pc等虚拟机软件,一般来说,虚拟机有三种网络模式: 1.桥接 2.NAT 3.Host-Only 哪一种网络是适合自己的虚拟 ...

  2. Linux 与 CONE NAT 和 Symmetric NAT

    http://alexanderlaw.blog.hexun.com/31883661_d.html 1. NAT 的划分 RFC3489 中将 NAT 的实现分为四大类: 1. Full Cone ...

  3. 静态NAT、动态NAT

    静态NAT.动态NAT 实验拓扑: 实验目的:熟悉网络地址转换协议 掌握静态NAT 和动态NAT的配置 分析静态NAT 和动态NAT的区别 使用show命令来检查NAT的运行情况 实验要求:按拓扑图来 ...

  4. CONE NAT 和 Symmetric NAT

    CONE NAT 和 Symmetric NAT 1. NAT 的划分 RFC3489 中将 NAT 的实现分为四大类: Full Cone NAT 完全锥形 NAT Restricted Cone ...

  5. 运营商级NAT(Carrier-grade NAT)

    运营商级NAT(Carrier-grade NAT)   运营商级(Carrier-grade)NAT,是用于缓解是IPV4地址枯竭的一种方法,通过这种方法,原来被分配公网ip的端点.家庭网络等可以被 ...

  6. 什么叫NAT,设置NAT的两个方法

    NAT是网络地址翻译就是把公网IP翻译成私有地址, 又叫端口映射或端口转发. 采用路由方式是指ADSL拥有一个动态或固定的公网IP,ADSL直接接在HUB或交换机上,所有的电脑共享上网.这时ADSL的 ...

  7. NAT and Traversal NAT(TURN/STUN/ICE)

    http://www.cnblogs.com/whyandinside/archive/2010/12/08/1900492.html -------------------------------- ...

  8. 静态NAT、动态NAT、PAT(端口多路复用)的配置

    静态NAT.动态NAT.PAT(端口多路复用)的配置   NAT的实现方式有三种,即静态转换Static Nat.动态转换Dynamic Nat 和 端口多路复用OverLoad.    静态转换 ( ...

  9. VirtualBox Network设置的NAT和Bridged Adapter模式区别

    区别: NAT模式下,虚拟机仍然可以访问网络,但是从网络接收者的眼中看来,这些网络请求都来自宿主机,而感知不到虚拟机.外网也无法访问虚拟机网络.虚拟机和宿主机器的IP地址在不同的子网,比如192.16 ...

随机推荐

  1. [UE4]地图缩放

    一.创建一个设置UI比例尺的函数 二.通过Get Cached Geometry获得当前UI实际显示的尺寸,Get Desired Size获得当前UI原始尺寸,计算得到UI缩放比例尺 三.地图比例尺 ...

  2. AMQP & JMS对比(转载)

    AMQP & JMS对比 原文地址:https://blog.csdn.net/hpttlook/article/details/23391967 初次接触消息队列时,在网上搜索,总是会提到如 ...

  3. T-SQL 类型转换

    use StudentManageDB go --定义变量并查询 declare @sumScore int select @sumScore=(CSharp+SQLServerDB) from Sc ...

  4. Unreal Engine 4 Based Materials

    转自:http://www.52vr.com/article-862-1.html 材质参数   UE4的材质参数有4个,输入范围都是0~1之间……分别为:   Base Color Roughnes ...

  5. Chapter1:Qt概念

    信号和槽1.信号与槽机制的连接方式(1):一个信号可以与另一个信号相连,代码如下: connect(Object1,SIGNAL(signal1),Object2,SIGNAL(signal1)); ...

  6. Redis 简介(官方翻译)

    Redis是一个开源(基于BSD开源协议).内存型结构数据存储,可当做数据库.缓存.消息代理.它支持的数据结构有字符串.哈希表.列表.集合.可随机查询的有序集合.位图.基数统计.用于半径查询的地理位置 ...

  7. android 开发 实现一个带图片Image的ListView

    注意:这种实现方法不是实现ListView的最优方法,只是希望通过练习了解ListView的实现原理 思维路线: 1.创建drawable文件夹将要使用的图片导入进去 2.写一个类,用于存放图片ID数 ...

  8. java se 随机数。生成

    public class test { public static void main(String[] args) { getRandomNum1(); getRandomNum2(); getRa ...

  9. iOS跳转洁面时隐藏tabBar的方法

    //1.设置self.tabBarController.tabBar.hidden=YES;       self.tabBarController.tabBar.hidden=YES;   //2. ...

  10. userdel 用户名 出现“用户**目前已登录”

    userdel 用户名 出现“用户**目前已登录” 今天在删除用户账号的时候,发现一个奇怪现象,即: userdel: user newname is currently logged in 相关命令 ...