博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NAT与FULL NAT的区别
阅读量:7179 次
发布时间:2019-06-29

本文共 1186 字,大约阅读时间需要 3 分钟。

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

 

转载地址:http://ufszm.baihongyu.com/

你可能感兴趣的文章
7.6 服务远程暴露 - 注册服务到zookeeper
查看>>
Lua------------------unity与lua的热更新
查看>>
【Win 10 应用开发】UI Composition 札记(一):视图框架的实现
查看>>
JavaScript面向对象总结
查看>>
分布式系统理论基础,以及选举,多数派,租约
查看>>
Breadth-first search 算法(Swift版)
查看>>
Vue.js系列之四计算属性和观察者
查看>>
pycharm 对代码做静态检查
查看>>
在Windows上安装Nexus
查看>>
用mysql查询某字段是否有索引
查看>>
ubuntu 查看进程,查看服务
查看>>
Cisco DHCP Snooping + IPSG 功能实现
查看>>
Linux命令_用户身份切换
查看>>
学习在.NET Core中使用RabbitMQ之启动和基础(一)
查看>>
支付业务的数据库表的设计
查看>>
php面试题二--解决网站大流量高并发方案(从url到硬盘来解决高并发方案总结)...
查看>>
PHP 16 个编程法则
查看>>
【微信】2.微信小程序开发--官方开发工具使用说明
查看>>
RedisTemplate访问Redis数据结构
查看>>
面试如何回答优化数据库
查看>>