LVS的Tun模式(隧道模式)的实现

1.TUN模式的工作原理

TUN模式简称隧道模式,隧道模式就是修改请求报文的首部IP,再加一层IP报头
优点:DS和RS不需要在同一网段,可以实现不同网络之间的访问
数据流向如下
数据包从客户端发往DS服务器,DS服务器会根据调度策略确定要把请求给哪台RS,会在数据包外面再加一层IP报头
此时源IP从CIP(172.25.8.250)变为了VIP(DIP172.25.8.100)
目的IP从VIP(172.25.8.100)变为了RIP(172.25.8.2/172.25.8.3),数据包的请求来源就是DS调度器(172.25.8.100)
请求的目的地是RS(172.25.8.2/3),RS在接收到数据包之后,请求包的来源本来是CIP(172.25.8.250)
但是加了一层数据包之后变为了VIP(172.25.8.100),而RS服务器上也有172.25.8.100这个ip
所以RS会把IP包的报头拆开,拆开发现请求的数据包访问的还是自己的ip(172.25.8.2/3)
这时RS就会回复客户端的请求(跟DR模式类似,只不过多加了一层IP报头,封装IP守护)
Client --> DS(调度器) -->prerouting --> INPUT -->postrouting -->RS(真正的服务器)–>lo 回环接口–> 网卡eth0 -->Client
IP隧道技术又称为IP封装技术,它可以将带有源和目标IP地址的数据报文使用新的源和目标IP进行二次封装
这样这个报文就可以发送到一个指定的目标主机上
2.TUN模式中的名词解释

DS调度器,lvs的前端设备
RS真正提供服务的后端服务器
RIP后端服务器的ip地址
DIP调度器和后端服务器通信的ip

源IP CIP(客户端的IP)
目的IP VIP(设置的统一入口),对外公布的ip,客户请求进来的ip

3.TUN模式的特点

隧道模式下,调度器和后端服务器组之间使用IP隧道技术,当客户端发送的请求(CIP–>VIP)被director接收后
director修改该报文,加上IP隧道两端的IP地址作为新的源和目标地址,并将请求转发给后端被选中的一个目标
当后端服务器接收到报文后,首先解封该报文原有的CIP—>VIP,该后端服务器发现自身的tun接口上配置了VIP,因此接受该数据包
当请求处理完成后,结果将不会重新交给director,而是直接返回给客户端。此时响应数据包的源IP为VIP,目标IP为CIP
realserver的RIP和director的DIP不用处于同一物理网络中,且RIP必须可以和公网通信。也就是说集群节点可以跨互联网实现
realserver的tun接口上需要配置VIP地址,以便接收director转发过来的数据包,以及作为响应的报文源IP
director转发给realserver时需要借助隧道,隧道外层的IP头部的源IP时DIP,目标IP是RIP
而realserver响应给客户端的IP头部是根据隧道内层的IP头分析得到的,源IP是VIP,目标IP是CIP
director只处理入站请求,响应请求由realserver自己完成
一般来说,TUN模式会用来负载调度缓存服务器组,这些缓存服务器一般放置在不同的网络环境,可以就近折返给客户端
在请求对象不在Cache服务器本地命中的情况下,Cache服务器要向源服务器发送请求,将结果取回,最后将结果返回给用户

4.搭建实验环境

一共需要3台rhel7.5版本的虚拟机
主机信息与对应的主机的功能(服务)
真机172.25.8.250:客户端client
server1(172.25.8.1) :lvs调度器(DS)
server2(172.25.8.2) :后端的web服务器1(RS)
server3(172.25.8.3) :后端的web服务器2(RS)

在真机中开启三台虚拟机
1台做lvs调度器,两台做后端轮询的web服务器,用真机分别连接三台虚拟机,真机本身是客户端

5.实现lvs调度器的TUN模式

DR模式:给web1和web2使用arptables规则来丢弃客户端的第一次访问,使客户端直接找lvs服务器实现调度轮询,不可以跨网络访问
隧道模式:给web1和web2用关闭反向过滤规则来丢弃客户端的第一次访问,使客户端直接找lvs服务器实现调度轮询,可跨网络访问
本来客户端发来的数据包是:源ip是cip(172.25.12.250),目的ip是vip(lvs服务器172.25.12.100)
当客户端的数据包到达lvs服务器,会在原来的数据包上面加一层数据包报文头
源ip是lvs服务器(172.25.12.100),目的ip是(web服务器的ip:172.25.12.2/3)
此时这个数据包就会转发给web服务器,web服务器接收到数据包之后会拆包
发现里面的数据包的目的ip是172.25.12.100,此时自己上面刚好也有这个ip
就知道这个客户端就是问自己要资源了,所以web服务器直接把资源发送给客户端
这个和DR模式一样,都是一个方向的发送数据包,不回送数据包
(每封装一次,轮询设置web服务器的ip是目的ip)
隧道模式的172.25.12.100都是在隧道网卡上面进行设置的
当客户端第一次发送请求给172.25.12.100的时候,此时web1和web2服务器上面的172.25.12.100走不通(过滤规则)
因为只有lvs调度器上面才可以走通(上面有ipvs程序),才可以走通去调度
172.25.12.250—》172.25.12.100
172.25.12.100—》web
TUN隧道模式就是将传输报文头加一个IP进行封装,IP隧道可以跨网络
实验步骤如下
这个实验在上一个DR模式实验的基础上做的

(1)在lvs服务器上面进行(server1)

ipvsadm -ln查看一下刚才的轮询调度访问策略
ipvsadm -C清除DR模式的策略
ipvsadm -ln再查看一下

在这里插入图片描述

lsmod查看模块(虚拟机上没有虚拟模块),准备加入隧道模块
lsmod | grep kvm在虚拟机上查看没有虚拟模块,在真机上查看有虚拟机模块

虚拟机没有kvm模块
在这里插入图片描述
真机有kvm模块
在这里插入图片描述

modprobe ipip   #加入隧道模块
ip a #可以看到多了一块网卡tunl0
ip addr del 172.25.12.100/24 dev eth0 #将172.25.12.100从原来的网卡上ip删除
ip addr add 172.25.12.100/24 dev tunl0 #放到隧道网卡上面
ip a#查看网卡的状态是down
ip link set up tunl0#激活网卡
ip a#查看是unknow,只要不是down行了

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在隧道模式里面添加策略:

ipvsadm -A -t 172.25.12.100:80 -s rr 设置轮询调度
ipvsadm -a -t 172.25.12.100:80 -r 172.25.12.2:80 -i 表示隧道模式,轮询web服务器1
ipvsadm -a -t 172.25.12.100:80 -r 172.25.12.3:80 -i 表示隧道模式,轮询web服务器2
systemctl restart ipvsadm.service重启服务使设置生效
cat /etc/sysonfig/ipvsadm查看策略文件

在这里插入图片描述
(2)在web1和web2上面进行添加隧道模块

modprobe ipip添加隧道模块
ip a查看
ip addr del 172.25.12.100/24 dev eth0删除入口ip
ip addr add 172.25.12.100/24 dev tunl0添加入口ip
ip a查看
ip link set up tunl0激活网卡
ip a查看

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
server3与server2操作一样
在这里插入图片描述
(3)在web2和web3上面分别修改反向过滤规则,防止丢包
将所有的过滤规则都关闭(具体情况具体分析)

sysctl -a | grep rp_filter查看过滤表将所有的过滤规则都关闭
sysctl -w (规则)=0
sysctl -p使设置生效
sysctl -a | grep rp_filter再次查看

在这里插入图片描述
在这里插入图片描述
server3同理
在这里插入图片描述
因为系统会对流入的数据包进行反向路径校验,入包的数据是100,如果出包的数据不是100
这个数据就会被丢弃,所以我们要消除反向过滤的影响,将=1的项都设置为0
关闭反向过滤规则,是为了防止web服务器不认识发来的拆包后的源ip把数据包给丢掉,导致web服务器丢包,客户端访问不到数据
因为隧道模式实现的是不同网段的主机进行通信,如果信息要从服务端返回到客户端时
由于客户端和服务端不在同一个网段,数据根本出不去,所以我们需要关闭反向参数检验
0:不开启源地址校验
1:开启严格的反向路径校验
对每个进来的数据包,校验其反向路径是否是最佳路径。如果反向路径不是最佳路径,则直接丢弃该数据包
(4)然后再客户端进行测试
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值