一、IP隧道(IP Tunneling)
ip隧道是一个将ip报文封装到另一个ip报文的技术,这可以使得目标为一个ip地址的数据报文被封装和转发到另一个ip地址。ip隧道技术也成为ip封装技术。
它和NAT模式不同的是,它在LB和RS之间的传输不用改写IP地址(添加新的IP头)。而是把客户请求包封装在一个IP tunnel里面,然后发送给RS节点服务器,节点服务器接收到之后解开IP tunnel后,进行响应处理。并且直接把包通过自己的外网地址发送给客户不用经过LB服务器。IP隧道技术主要用于移动主机和虚拟私有网络(Virtual Private Network),在其中隧道都是静态建立的,隧道一端有一IP地址,令一端也有唯一的ip地址。
二、LVS Tunnel原理解析
三、TUN模式LVS的配置
其中,把server2作为VS(发放器),即;把server3和server4作为RS。
1)在server2、server3、server4中添加隧道(由于虚拟服务器与RS是通过隧道进行包的交换的)
---> modprobo ipip # 以server2为例,server3、4做相同的操作
---> ip link set up tunl0 # 建立隧道设备tunl0
---> ip addr add 172.25.2.100/24 dev tunl0 # 添加虚拟ip
2)由于在同一个网段内,所以要对RS的虚拟ip进行隐藏(以server3为例)
---> /etc/initd/arptables_jf start
---> arptables -A IN -d 172.25.2.100 -j DROP
---> /etc/init.d/arptables save
---> arptables -L # 查看添加进去的策略
3)在server3和server4中修改rp_filter参数
---> sysctl -w net.ipv4.conf.tunl0.rp_filter=0
注释:该参数用来控制系统是否开启对数据包源地址的校验。0标示不开启地址校验;1表开启严格的反向路径校验。对每一个进行的数据包,校验其反向路径是否是最佳路径。如果反向路径不是最佳路径,则直接丢弃该数据包;2标示开启松散的反向路径校验,对每个进行的数据包,校验其源地址是否可以到达,即反向路径是否可以ping通,如反向路径不通,则直接丢弃该数据包。
4)在server2隧道VS上清除之前的策略,重新添加
---> ipvsadm -C # 清空之前的策略
---> ipvsadm -A -t 172.25.2.100:80 -s rr # 对后期服务器采用rr算法
---> ipvsadm -a -t 172.25.2.100:80 -r 172.25.2.3:80 -i # 添加后端的真实服务器srever3和server4
---> ipvsadm -a -t 172.25.2.100:80 -r 172.25.2.4:80 -i
---> ipvsadm -Ln # 查看添加进去的策略
5)在测试端测试结果如下:
---> curl 172.25.2.100 # 会显示server3和server4中httpd默认共享文件的内容。交替显示
# 在server2中查看