LVS-----TUN模式配置

一、实验环境

主机名称 ip 角色
lvs-tun 192.168.100.100 lvs调度器
web1 192.168.100.1 后端web服务器1
web2 192.168.100.2 后端web服务器2
client 192.168.100.200 客户端

二、搭建lvs调度器的TUN模式

1、lvs-tun调度器配置

apl 复制代码
#清除DR模式的策略
ipvsadm -C 
#查看策略
ipvsadm -L    
[root@lvs-tun ~]# ipvsadm -C
[root@lvs-tun ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
#加载隧道模块 
[root@lvs-tun ~]# modprobe ipip 
[root@lvs-tun ~]#  ip a 
#添加ip临时添加
[root@lvs-tun ~]# ip addr add 192.168.1.100/24 dev tunl0
#使网卡生效
[root@lvs-tun ~]# ip link set up tunl0  
#开启路由转发功能
[root@lvs-tun ~]# cat /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@lvs-tun ~]# sysctl -p

在隧道模式里面添加策略

apl 复制代码
#设置轮询调度
[root@lvs-tun ~]# ipvsadm -A -t 192.168.1.100:80 -s rr 
#-i表示隧道模式,轮询web服务器
[root@lvs-tun ~]# ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.22:80 -i
[root@lvs-tun ~]# ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.33:80 -i
#保存策略
[root@lvs-tun ~]# ipvsadm-save > /etc/sysconfig/ipvsadm
#查看策略文件
[root@lvs-tun ~]# cat /etc/sysonfig/ipvsadm

2、web服务器配置

apl 复制代码
#加载隧道模块 
[root@web1 ~]# modprobe ipip 
[root@web1 ~]# ip a 
#添加ip临时添加
[root@web1 ~]# ip addr add 192.168.1.100/24 dev tunl0  
#网卡生效
[root@web1 ~]# ip link set up tunl0  

在web1和web2上面分别修改反向过滤规则,防止丢包不是绝对必须,但强烈建议

  • 在 LVS - TUN 模式下,通常需要将反向路径过滤设置为02,以防止丢包。因为真实服务器从隧道接口接收请求,但响应数据包是通过物理接口发送回客户端的,严格的反向路径过滤(1)会认为这是非法的数据包而丢弃。

  • 系统会对流入的数据包进行反向路径校验,入包的数据是100,如果出包的数据不是100 ;这个数据就会被丢弃,所以我们要消除反向过滤的影响 。

  • 由于隧道模式实现的是不同网段的主机进行通信,如果信息要从服务端返回到客户端时 ,假设客户端和服务端不在同一个网段,数据根本出不去,所以我们需要关闭反向参数检验 。

rp_file参数用于控制系统是否开启对数据包源地址的校验,有三个值,含义分别如下:

  • 0:表示不开启源地址校验
  • 1:开启严格的反向路径校验,对每个进来的数据包,校验其反向路径是否是最佳路径,如果反向路径不是最佳路径,则直接丢弃该数据包
  • 2:开启松散的反向路径校验,对每个进来的数据包,校验其源地址是否可达,即反向路径是否能通(通过任意网口),如果反向路径不通,则直接丢弃该数据包
apl 复制代码
cat /etc/sysctl.conf

net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.eth0.rp_filter=0
net.ipv4.conf.tunl0.rp_filter=0
sysctl -p
sysctl -w net.ipv4.conf.all.rp_filter=0
sysctl -w net.ipv4.conf.default.rp_filter=0
sysctl -w net.ipv4.conf.eth0.rp_filter=0
sysctl -w net.ipv4.conf.tunl0.rp_filter=0
sysctl -a | grep rp_filter

3、测试

apl 复制代码