LVS-TUN模式

一、TUN简介

TUN 是IP Tunneling ,IP隧道的简称,它将调度器收到的IP数据包封装在一个新的IP数据包中,转交给应用服务器,然后实际服务器的返回数据会直接返回给用户。

ip隧道是一个将ip报文封装到另一个ip报文的技术,这可以使得目标为一个ip地址的数据报文被封装和转发到另一个ip地址。ip隧道技术也成为ip封装技术

它和NAT模式不同的是,它在LB和RS之间的传输不用改写IP地址(添 加新的IP头)。而是把客户请求包封装在一个IP tunnel里面,然后发送给RS节点服务器,节点服务器接收到之后解开IP tunnel后,进行响应处理。并且直接把包通过自己的外网地址发送给客户不用经过LB服务器。IP隧道技术主要用于移动主机和虚拟私有网络 (Virtual Private Network),在其中隧道都是静态建立的,隧道一端有一IP地址,令一端也有唯一的ip地址。

二、TUN模式工作原理图

 

原理解析:

1.客户端将访问vip报文发送给LVS服务器;

2.LVS服务器将请求报文重新封装,发送给后端真实服务器;

3.后端真实服务器将请求报文解封,在确认自身有vip之后进行请求处理;

4.后端真实服务器在处理完数据请求后,直接响应客户端。

三、LVS-TUN模式下的负载均衡

实验环境:

Load Balance:172.25.88.1

Virtual IP:172.25.88.100

server2(RS):172.25.88.2

server(RS):172.25.88.3

在server1、server2、server3中添加隧道(由于虚拟服务器与RS是通过隧道进行包的交换的)

1、在server1上:

1)配置网络

modprobe   ipip                                                #添加隧道

ip  link  set  up  tunl0                                         #激活隧道

ip  addr  add  172.25.88.100  dev  tunl0          #添加虚拟ip

ip  addr       #查看ip

2)配置yun仓库

vim /etc/yum.repos.d/rhel-source.repo

[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.88.250/rhel6.5/LoadBalancer
gpgcheck=0

3、添加规则

yum install ipvsadm -y

/etc/init.d/ipvsadm start                              #开启服务

ipvsadm -C                                                  #清除之前的策略

ipvsadm -A -t 172.25.88.100:80 -s rr          #对后期服务器采用rr算法

ipvsadm -a -t 172.25.88.100:80 -r 172.25.88.2:80 -i                  #给vip添加rip,使用TUN模式

ipvsadm -a -t 172.25.88.100:80 -r 172.25.88.3:80 -i

/etc/init.d/ipvsadm save                                #保存策略

ipvsadm -ln                                                    #查看策略

ipvsadm -lnc                                                   #查看调度IP情况

2、在server2上:

1)安装apache并开启

yum install httpd -y

vim /var/www/html/index.html
<h1>server2</h1>

/etc/init.d/httpd start

2)配置网络

modprobe ipip                                  #加载模块

ip link set up tunl0                           #建立隧道设备tunl0

ip addr add 172.25.88.100/32 dev tunl0                  #添加虚拟IP

ip addr   #查看ip

3)安装arptables工具

因为设置172.25.88.100/32作为vip,不可以和外部通信,所以设用arptables将其访问全部DROP,出去的包全部为转为本机的ip

yum install arptables_jf -y

arptables -F                                                           #清空策略

arptables -A IN -d 172.25.88.100 -j DROP           #拒绝172.25.88.100的访问

arptables -A OUT -s 172.25.88.100 -j mangle --mangle-ip-s 172.25.88.2     #由于tcp三次握手原因,所以出去的时候仍要以vip地址出去才会实现握手,而真正将数据传输给客户端的就是realserver,  mangle参数就是这个功能

/etc/init.d/arptables_jf save          #保存策略

arptables -L                                      #查看添加进去的策略

4)关闭rp_filter

修改rp_filter参数

sysctl -w  net.ipv4.conf.tunl0.rp_filter=0

注释:该参数用来控制系统是否开启对数据包源地址的校验。0标示不开启地址校验;1表开启严格的反向路径校验。对每一个进行的数据包,校验其反向路径是否是最佳路径。如果反向路径不是最佳路径,则直接丢弃该数据包;2标示开启松散的反向路径校验,对每个进行的数据包,校验其源地址是否可以到达,即反向路径是否可以ping通,如反向路径不通,则直接丢弃该数据包。

rp_filter参数的作用:
1. 减少DDoS攻击
校验数据包的反向路径,如果反向路径不合适,则直接丢弃数据包,避免过多的无效连接消耗系统资源。
2. 防止IP Spoofing
校验数据包的反向路径,如果客户端伪造的源IP地址对应的反向路径不在路由表中,或者反向路径不是最佳路径,则直接丢弃数据包,不会向伪造IP的客户端回复响应。

sysctl -a|grep .rp_filter        #将过滤出的打开着的.rp_filter全部关闭

3、在server3中:

1)安装apache并开启服务

yum install httpd -y

vim /var/www/html/index.html
<h1>server3</h1>

/etc/init.d/httpd start           #开启httpd

2)配置网络

modprobe ipip                           #加载模块

ip link set up tunl0                    #激活隧道

ip addr add 172.25.88.100/32 dev tunl0  #添加虚拟IP

ip addr    #查看ip

3)安装arptables_jf工具

yum install arptables_jf -y

arptables -F

arptables -A IN -d 172.25.88.100 -j DROP

arptables -A OUT -s 172.25.88.100 -j mangle --mangle-ip-s 172.25.88.3 

/etc/init.d/arptables_jf save

arptables -L

4)关闭rp_filter

sysctl -a|grep .rp_filter  #将过滤出的打开着的.rp_filter全部关闭

4、测试:

在物理机中执行curl  172.25.88.100,出现轮询表示配置成功

会显示server2和server3中httpd共享文件的内容

四、RS处于不同网段下的TUN模式的负载平衡

实验环境:

继续使用之前的环境,将server3的ip更改为172.25.254.3

Load Balance:172.25.88.1  172.25.254.11
Virtual IP: 172.25.88.100
server2(RS): 172.25.88.2
server3(RS): 172.25.254.3

1、在server3中:

1)配置网络

ip  addr  del  172.25.88.3/24  dev  eth0              #删除ip

ip  addr  add  172.25.254.3/24  dev  eth0          #添加ip

ip  addr          #查看ip

2)配置arptables_jf

vim /etc/sysconfig/arptables

更改伪装策略,将172.25.88.3更改为172.25.254.3

/etc/init.d/arptables_jf restart

arptables -L

3)配置网关

route add default gw 172.25.254.88    #将RS网关指向物理机的ip地址

route -n                                               #查看网关

2、在server1中:

1)添加网络

2)更改规则:

ipvsadm -ln

ipvsadm -d -t 172.25.88.100:80 -r 172.25.88.3:80

ipvsadm -a -t 172.25.88.100:80 -r 172.25.254.3:80  -i

ipvsadm -ln

3、测试:

在真机中执行curl   172.25.88.100,出现轮询表示配置成功

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值