作者: xiaodongpan
简介
Linux服务器集群系统即LVS(Linux Virtual Server),是章文嵩在国防科技大学博士期间开发的一个开源项目,该项目也是中国开源少有的几个成功项目之一,该项目已经进入到Linux内核,在国内外被广泛的使用。章文嵩博士目前就职到淘宝,继续主持LVS的相关工作。各大互联网公司都在对LVS进行修改和使用,因此产生了不通的LVS变种,比如百度的BIG-NAT,淘宝的FullNAT,腾讯的TGW(目前我还不太了解)。其基本原理都是在netfilter层,对数据包进行过滤、修改和伪装。
转发模式
LVS原生的三种转发模式:
- LVS-DR
- LVS-NAT
- LVS-TUN
LVS-DR
原理: mac地址伪装,通过修改源包的mac地址进行投递
示意图:
LVS-NAT
原理: 通过修改源目的IP实现,进入时DNAT,出去时SNAT
示意图:
LVS-TUNNEL
原理: 通过IP tunnel实现,进入时加上IP头部
示意图:
LVS-FullNAT
介绍:一种新型新型的转发模式,NAT的加强版,由吴佳明等在章文嵩带带领下实现 原理: 通过修改改源目的IP实现,但是比LVS-NAT更彻底,进入时DNAT+SNAT,出去时由SNAT+DNAT
示意图:
FullNAT和NAT原理对比
▲NAT包修改示意图
在入包时,进行目的地址转换,出包时进行源地址转换,为了让出去的数据包,经过LVS,需要添加策略路由。
FullNAT包修改示意图
▲FullNAT实现原理
在入包时修改目的地址,同时把源地址改为内网地址,这样包就可以完全无限制的在整个内外路由,出包时修改源地址为vip地址,目的地址为真实的ClientIP地址,从而实现回包到目的地。
优缺点对比
LVS-DR
•优点:性能好,rs直接回包
• 缺点:
- 1、 rs必须在一个vlan中,这在多网络环境中限制非常大;
- 2、 rs必须绑定vip,麻烦且风险大
- 3、不支持端口映射
LVS-NAT
• 优点:
- 1、 rs可以在整个内网中,没有vlan的限制
- 2、支持端口映射
• 缺点:
- 1、 rs的网关必须是lvs机器,如果不是,则需要配置静态路由
LVS-TUNNEL
• 优点:性能好,rs直接回包
• 缺点:
- 1、 rs配置复杂,需要配置ipip模块
- 2、 rs绑定vip,风险大
- 3、不支持端口映射
LVS-FullNAT
• 优点:
- 1、数据包可以在整个内外中任意路由
- 2、交换机和路由器无需任何特殊配置
• 缺点: windows无法获取client ip
结论
从上面几种模式来看,FullNAT无疑是一种最好的转发模式,他无需要对路由器,rs进行特殊操作,就可以完成整个代理转发。其实在具有一定网络规模的环境中,无论是要求在同一个VLAN,还是要配置静态路由,对网络拓扑配置都是极大的破坏,而且绑定vip风险极大,而且实现自动化困难。从实际应用来看,LVS-DR,LVS-NAT,LVS-TUNNEL都没有很大规模的应用案例,相反,LVS-FullNAT已经被大范围的使用,包括阿里,小米,汽车之家,UC等很多互联网公司,规模都是很大。鉴于DR的操作复杂性和风险,建议考虑FullNAT作为替代方案。