Fullnat
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Fullnat相关的知识,希望对你有一定的参考价值。
Fullnat
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%;
主要思想:引入local address(内网ip地址),cip-vip转换为lip->rip,而lip和rip均为IDC内网ip,可以跨vlan通讯。
Fullnat转发模式,如图:
Fullnat实现原理,如图:
FULLNAT-设计考虑
–TCP OPT-TIMESTAMP
RealServer kernel开启tcp_tw_recycle
用户A和B,timestamp大的访问成功,timestamp小的访问失败
–TCP OPT-MSS
TCP三次握手最后一个ack包为GET请求
GET请求>1个数据包,toa无法插入
–TCP - Sequence
RealServer上timewait的socket复用条件:seq递增
1.内核编译
rpm -ivh kernel-2.6.32-220.23.1.el6.src.rpm
yum install -y rpm-build
cd rpmbuild/SPECS/
yum install -y gcc redhat-rpm-config patchutils xmlto asciidoc elfutils-libelf-devel zlib-devel binutils-devel newt-devel python-devel hmaccalc perl-ExtUtils-Embed ##安装软件,解决依赖性
yum install -y newt-devel-0.52.11-3.el6.x86_64.rpm
asciidoc-8.4.5-4.1.el6.noarch.rpm slang-devel-2.2.1-Lvs-fullnat-synproxy.tar.gz1.el6.x86_64.rpm
yum install -y rng-tools
rngd -r /dev/urandom ##产生密钥
rpmbuild -bp kernel.spec ##编译生成的内核源码
2.对生成的内核源码打补丁
cd rpmbuild/BUILD/kernel-2.6.32-220.23.1.el6/
tar zxf Lvs-fullnat-synproxy.tar.gz
cd lvs-fullnat-synproxy/
cp lvs-2.6.32-220.23.1.el6.patch ../linux-2.6.32-220.23.1.el6.x86_64/ ##把补丁拷贝到其上层目录
cd ../linux-2.6.32-220.23.1.el6.x86_64/
patch -p1 < lvs-2.6.32-220.23.1.el6.patch ##打补丁
vim /root/rpmbuild/BUILD/kernel-2.6.32-220.23.1.el6/linux-2.6.32-220.23.1.el6.x86_64/Makefile
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 32
EXTRAVERSION = -220.23.1.el6 ##改成修改的内核版本
NAME = Man-Eating Seals of Antiquity
RHEL_MAJOR = 6
RHEL_MINOR = 2
RHEL_RELEASE = 219
3.磁盘拉伸 ##防止在编译过程中空间不足而报错
fdisk -cu /dev/dvb
n
p
1
t
8e
w
vgextend VolGroup /dev/vdb1
lvextend -L +18G /dev/VolGroup/lv_root VolGroup
lvextend -l +4607 /dev/VolGroup/lv_root
resize2fs /dev/VolGroup/lv_root
4.编译与安装
make -j4 ##编译
make modules_install ##安装模块
make install ##安装
vim /boot/grub/grub.conf
default=0
timeout=5
reboot
uname -r ##查看内核版本
如图:
本文出自 “jeffrey13” 博客,谢绝转载!
以上是关于Fullnat的主要内容,如果未能解决你的问题,请参考以下文章