lvs分为DR/NAT/TUN,3种模式,相信大家都了解了,但是有些网站网络环境比较复杂,很多网段、各服务之间又有互相调用、两地机房又有×××,那么以上提及的3中模式都难以适应此环境。

因此,我介绍下centos下,iptables+LVS/NAT实现SNAT模式,以解决以上提出的问题,下面先说下原理:

当访问到LVS,iptables会根据规则把访问的源IP改成指定ip,然后交给LVS处理,lvs会根据标准的nat模式把目标地址改为realserver,realserver回复数据到LVS,修改回源、目标地址返回给用户,由于客户端回包总是经过LVS服务器。因此,适用于大多数环境,同时由于以上原因后端服务器(realserver)是获取不到用户IP的。

好,下面说说如何搭建:

需要软件包:

iptables-1.4.20.tar.bz2 ipvsadm-1.26.tar.gz linux-3.2.29.tar.gz keepalived-1.2.7.tar.gz

安装步骤:

#准备编译环境
rpm -ivh epel-release-6-8.noarch.rpm
yum install popt  popt-devel libnl libnl-devel popt-static gcc openssl openssl-devel
#编译内核
cd /usr/src
wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.2.29.tar.gz
tar zxvf linux-3.2.29.tar.gz
cd linux-3.2.29
#------.config 生成方法------
# make oldconfig
# CONFIG_NETFILTER_XT_MATCH_IPVS=m (手动选择)
# 修改文件 .config
# 添加下列3行
# CONFIG_SYSFS_DEPRECATED=y
# CONFIG_SYSFS_DEPRECATED_V2=y
#-------------------
make all -j 16
make modules_install
make install
#修改配置从新内核启动
vi /etc/grub.conf
reboot


#编译安装iptables
cd ..
tar jxvf iptables-1.4.20.tar.bz2
cd iptables-1.4.20
./configure
make
make install
cp libxtables/.libs/libxtables.so.10 /lib
cp /usr/local/sbin/iptables /sbin/
cp /usr/local/sbin/iptables-restore /sbin/
cp /usr/local/sbin/iptables-save /sbin/
service iptables restart


#编译安装ipvsadmin
cd ..
tar zxvf ipvsadm-1.26.tar.gz
cd ipvsadm-1.26
make
make install


#编译安装keepalived
cd ..
tar zxvf keepalived-1.2.7.tar.gz
cd keepalived-1.2.7
./configure
make
make install
cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/sbin/keepalived /usr/sbin/
mkdir /etc/keepalived
#修改keepalived配置,使用表装的NAT模式
vim /etc/keepalived/keepalived.conf


#修改sysctl.conf及模块配置文件
net.ipv4.ip_forward = 1
net.ipv4.vs.conntrack = 1
echo "modprobe ip_vs" > /etc/sysconfig/modules/lvs.modules
#重启(从新内核启动)


#配置iptables
#例如www.abc.com解析为192.168.131.205;
#并在LVS服务器192.168.131.204,中配置NAT模式;
#服务器192.168.131.1 这台机器要通过192.168.131.205访问此站点;
#那么就需要配置iptables。
iptables -t nat -A POSTROUTING -m ipvs \
--vaddr 192.168.131.205/32 \
--vport 80 -j SNAT --to-source 192.168.131.204


至此,centos 下安装配置 iptables+keepalived+lvs/nat 实现LVS/SNAT 配置完成