企业级负载均衡集群—LVS(五)—TUN隧道模式
1.ip隧道模式的原理和特点
2.具体实现步骤
实验背景:
三台虚拟机做服务
一台真机做测试
server1 172.25.70.1 调度器
server2 172.25.70.2 真实服务器1
server3 172.25.70.3 真实服务器2
真机 172.25.70.250 客户端
在之前做过dr模式的基础上,serevr2和server3已经配置了vip,arptables的规则也应该保留,自己作实验时没有条件,三台主机在一个局域网内,所以应该保留arptables的规则。不在同一个局域网,不需要
server1调度器模块
1.添加隧道
modprobe ipip #添加隧道
ip addr show #查看是否成功添加
2.清空原来的规则
ipvsadm -C
3.删除原来的ip
ip addr del 172.25.70.254/32 dev eth0 #删除上一实验中的VIP。没有可以不删
4.添加ip隧道的虚拟网卡
ip addr add 172.25.70.254/32 dev tunl0 #隧道添加VIP
ip addr show
5.添加ip隧道的规则
ipvsadm -A -t 172.25.70.254:80 -s rr
ipvsadm -a -t 172.25.70.254:80 -r 172.25.70.2:80 -i #添加后端真实服务器server2。-i表示隧道模式
ipvsadm -a -t 172.25.70.254:80 -r 172.25.70.3:80 -i #添加后端真实服务器server3
ipvsadm -l
6.激活隧道模式
ip link set up tunl0 #隧道激活
server2和server3真实后端
和serevr1添加隧道模式的操作基本一样
modprobe ipip #添加隧道
ip addr show #查看是否成功添加
ip addr del 172.25.70.254/32 dev eth0 #删除上一实验中的VIP
ip addr add 172.25.70.254/32 dev tunl0 #隧道添加VIP
ip link set up tunl0 #隧道激活
在真实后端关闭反向过滤规则
在rs上关闭反向过滤规则。如果不关闭,会对流入的数据包进行反向路径校验。
反向路由过滤机制是linux通过反向路由检查收到的数据包源ip是否可路由,是否是最佳路由,如果没有通过验证,就丢弃数据包,目的是防止ip地址的欺骗攻击。
在隧道模式中,ds上有两个接口,分别是eth0和隧道的接口,rs收到报文后,发现ds有两个接口,就会开后自我保护,丢弃数据包
在做测试时,应该关闭server2和 server3的内核参数–>反向过滤规则
sysctl -a | grep rp_filter #把所有等于0的项都改为1
#将过滤到的所有参数的值改为1,不进行校验
sysctl -w net.ipv4.conf.all.rp_filter=0
sysctl -w net.ipv4.conf.eth0.rp_filter=0
sysctl -w net.ipv4.conf.tunl0.rp_filter=0
sysctl -w net.ipv4.conf.default.rp_filter=0
sysctl -p #重新加载,使得配置生效
sysctl -a | grep rp_filter
为什么要修改这个参数?
rp_filter参数用于控制系统是否开启对数据包源地址的校验
有三个值:
0:不开启源地址校验。
1:开启严格的反向路径校验。对每个进来的数据包,校验其反向路径是否是最佳路径。如果反向路径不是最佳路径,则直接丢弃该数据包。
2:开启松散的反向路径校验。对每个进来的数据包,校验其源地址是否可达,即反向路径是否能通(通过任意网口),如果反向路径不同,则直接丢弃该数据包。
客户端测试
curl 172.25.70.254
发现轮询成功