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 配置完成
转载于:https://blog.51cto.com/zhoufayong/1316877