TUN 是IP Tunneling ,IP隧道的简称,它将调度器收到的IP数据包封装在一个新的IP数据包中,转交给应用服务器,然后实际服务器的返回数据会直接返回给用户。
RIP、VIP、DIP全是公网地址。
RS的网关不会也不可能指向DIP。
所有的请求报文经由Director Server,但响应报文必须不能进过Director Server
不支持端口映射。
RS的系统必须支持隧道。
###############实验
实验环境:
Direcotr:
Server1(调度器):eth0: 172.25.9.1/24
tunl0: 172.25.9.100/24
Realserver:
Server2(服务器):eth0:172.25.7.2 tunl0:172.25.7.100/24
Server3(服务器):eth0:172.25.7.3 tunl0:172.25.7.100/24
Client:172.25.7.250
步骤:
在调度器(server1)上:
(1)配置好ip后开启隧道模式,添加隧道ip并开启ip。
[root@server1 ~]# modprobe ipip
[root@server1 ~]# ip addr add 172.25.9.100/24 dev tunl0
[root@server1 ~]# ip link set up dev tunl0
[root@server1 ~]#ip addr
(2)添加172.25.9.100:80的虚拟服务,算法为轮循
[root@server1 ~]# ipvsadm -A -t 172.25.9.100:80 -s rr
(3)添加RS,指定工作模式为TUN
[root@server1 ~]# ipvsadm -a -t 172.25.9.100:80 -r 172.25.9.2:80 -i
#-i表示Tun模式
[root@server1 ~]# ipvsadm -a -t 172.25.9.100:80 -r 172.25.9.3:80 -i
[root@server1 ~]# ipvsadm -l
[root@server1 ~]# route add -host 172.25.9.100 dev tunl0
#数据包原路返回
(4)添加路由并开启路由
[root@server1 ~]# route add -host 172.25.9.100 dev tunl0
[root@server1 ~]# sysctl -w net.ipv4.ip_forward=1
[root@server1 ~]# sysctl -p
在RS(server2和server3做法相同)上:
(1)开启隧道模式,添加ip并启用
root@server2 ~]#modprobe ipip
[root@server2 ~]#ip link set up tunl0
[root@server2 ~]#ip addr add 172.25.9.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地址解析策略和httpd服务
##对input进行拒绝
[root@server2 ~]# arptables -A IN -d 172.25.9.100 -j DROP
##对output进行伪装
[root@server2 ~]# arptables -A OUT -s 172.25.9.100 -j mangle --mangle-ip-s 172.25.7.2
[root@server2 ~]# /etc/init.d/arptables_jf save
[root@server2 ~]# /etc/init.d/arptables_jf restart
[root@server2 ~]# /etc/init.d/httpd start
在客户端(物理真机)上测试访问vip: