打赏

星辰大海ゞ

That which does not kill us makes us stronger!

导航

NAT与FULL NAT的区别

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

 

posted on 2018-02-27 09:50  星辰大海ゞ  阅读(8943)  评论(1编辑  收藏  举报