LVS-TUN模式:它的连接调度和管理与VS/NAT中的一样,利用ip隧道技术的原理,即在原有的客户端请求包头中再加一层IP Tunnel的包头ip首部信息,不改变原来整个请求包信息,只是新增了一层ip首部信息,再利用路由原理将请求发给RS server,不过要求的是所有的server必须支持”IPTunneling”或者”IP Encapsulation”协议。
LVS-TUN 示意图:
LVS三种模式的比较:
实验环境:
Direcotr:
Server1(调度器):eth0:172.25.254.1/24 tunl0:172.25.254.100/24
Realserver:
Server2(服务器):eth0:172.25.254.2 tunl0:172.25.254.100/24
Server3(服务器):eth0:172.25.254.3 tunl0:172.25.254.100/24
Client:172.25.254.96
server1:
[1] 加载TUN模块:
[root@server1 ~]# modprobe ipip
[root@server1 ~]#ip link set up tunl0
[root@server1 ~]#ip addr add 172.25.254.100/24 dev tunl0
[2] 设置ipvs策略:
[root@server1 ~]# ipvsadm -A -t 172.25.254.100:80 -s rr ## rr 轮询算法
[root@server1 ~]# ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.3:80 -i ## -i表示TUN模式
[root@server1 ~]# ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.2:80 -i
server2:
[1] 加载TUN模块,并设置
[root@server2 ~]#modprobe ipip
[root@server2 ~]#ip link set up tunl0
[root@server2 ~]#ip addr add 172.25.254.100/24 dev tunl0
[root@server2 ~]#/etc/init.d/arptables_jf start
[root@server2 ~]#sysctl -w net.ipv4.conf.tunl0.rp_filter=0
[2]设置arp抑制:
##对input进行拒绝
[root@server2 ~]# arptables -A IN -d 172.25.254.100 -j DROP
##对output进行伪装
[root@server2 ~]# arptables -A OUT -s 172.25.254.100 -j mangle --mangle-ip-s 172.25.254.2
[root@server2 ~]# /etc/init.d/arptables_jf save
server3:
[1] 加载TUN模块,并设置:
[root@server3 ~]#modprobe ipip
[root@server3 ~]#ip link set up tunl0
[root@server3 ~]#ip addr add 172.25.254.100/24 dev tunl0
[root@server3 ~]#/etc/init.d/arptables_jf start
[root@server3 ~]#sysctl -w net.ipv4.conf.tunl0.rp_filter=0
[2] 设置arp抑制:
##对input进行拒绝
[root@server3 ~]# arptables -A IN -d 172.25.254.100 -j DROP
##对output进行伪装
[root@server2 ~]# arptables -A OUT -s 172.25.254.100 -j mangle --mangle-ip-s 172.25.254.3
[root@server2 ~]# /etc/init.d/arptables_jf save
在客户端测试:访问172.25.254.100