LVS-tun(隧道 模式)

本文详细解析了隧道模式的工作原理,介绍了如何通过IP隧道技术实现数据包的封装与转发,对比了其与NAT模式的区别,并提供了在RedHat 6.5环境下具体的实验配置步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

隧道模式原理

ip隧道是一个将ip报文封装到另一个ip报文的技术,这可以使得目标为一个ip地址的数据报文被封装和转发到另一个ip地址。ip隧道技术也成为ip封装技术。

它 和NAT模式不同的是,它在LB和RS之间的传输不用改写IP地址(添加新的IP头)。而是把客户请求包封装在一个IP tunnel里面,然后发送给RS节点服务器,节点服务器接收到之后解开IP tunnel后,进行响应处理。并且直接把包通过自己的外网地址发送给客户不用经过LB服务器。IP隧道技术主要用于移动主机和虚拟私有网络 (Virtual Private Network),在其中隧道都是静态建立的,隧道一端有一IP地址,令一端也有唯一的ip地址。

模式图(Client-->VS-->RS-->Client)

步骤

1.客户请求数据包,目标地址VIP(调度器的IP地址)发送到调度器上
2.调度器接收到客户请求包,进行IP Tunnel封装,在原有的包头加上IP Tunnel的包头,然后发送给服务器
3.服务器根据IP Tunnel包头信息(此时就又一种逻辑上的隐形隧道,只有调度器和服务器之间懂)收到请求包,然后解开IP Tunnel包头信息,得到客户的请求包并进行响应处理
4.响应处理完毕之后,服务器使用自己的出公网的线路,将这个响应数据包发送给客户端,源IP地址还是VIP地址

优缺点

效率:和dr一样。返回的值不经过lvs,所以转发效率比nat快,但是效率不如dr。

最大优点:可以跨网段转发,甚至还可以跨机房转发(必然带来跨机房间的流量,提高成本。另外,RS机房上必然要绑定vip,可能会被防火墙视为ip伪造而进行拦截)

相较于NAT能够解决的问题:采用NAT技术时,由于请求和响应都需要通过调度器进行地址的改写,那么当客户端的请求越来越多的时候,调度器的处理能力就会成为一个瓶颈。为了解决这个问题,调度器通过IP隧道,将客户端的请求通过IP隧道,发送给真实的服务器,服务器处理完请求之后,将响应请求的IP改为调度器的IP,然后将响应报文发送给客户端。

注意事项

RIP,DIP,VIP都是公网地址

RS的网关不能,也不可能指向DIP

RS 的OS必须支持ip隧道,现在只有linux系统支持

实验配置

实验环境:redhat6.5

VS:server4:172.25.254.4   VIP:172.25.254.100

RS:server6:172.25.254.6   VIP:172.25.254.100

RS : server8 :  172.25.254.8   VIP : 172.25.254.100

VS:

[root@server4 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
IPADDR0=172.25.254.4
IPADDR1=172.25.254.100
PREFIX=24
ONBOOT=yes
BOOTPROTO=static

[root@server4 ~]# /etc/init.d/network  restart

[root@server4 ~]# ipvsadm -C#清除策略

[root@server4 ~]# ipvsadm -A -t 172.25.254.100:80 -s rr
[root@server4 ~]# ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.6 -i #i表示隧道模式
[root@server4 ~]# ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.8 -i

[root@server4 ~]#  ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.254.100:80 rr
  -> 172.25.254.6:80              Tunnel  1      0          0         
  -> 172.25.254.8:80              Tunnel  1      0          0 

RS:(两台相同的操作)

server6:

[root@server6 ~]# cd /etc/sysconfig/network-scripts/
[root@server6 network-scripts]# modprobe ipip #加载隧道模块生成tunl0,给tunl0添加VIP

查看:

[root@server6 ~]# ifconfig -a

tunl0     Link encap:IPIP Tunnel  HWaddr   
          NOARP  MTU:1480  Metric:1

[root@server6 ~]# cd /etc/sysconfig/network-scripts/

[root@server6 network-scripts]# vim ifcfg-tunl0 添加vip

DEVICE=tunl0
IPADDR=172.25.254.100
NETMASK=255.255.255.0
ONBOOT=yes
NAME=tunl0

[root@server6 network-scripts]# /etc/init.d/network  restart

配置内核

[root@server6 network-scripts]# vim /etc/sysctl.conf    //arp抑制,保证只能从调度器方反映,而不能正常响应

net.ipv4.conf.tunl0.arp_ignore = 1

net.ipv4.conf.tunl0.arp_announce = 2

net.ipv4.conf.tunl0.rp_filter = 0

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.all.rp_filter = 0

临时添加:

[root@server8 network-scripts]# sysctl -w net.ipv4.conf.tunl0.rp_filter=0 临时添加
net.ipv4.conf.tunl0.rp_filter = 0

[root@server6 network-scripts]#  echo '0'>/proc/sys/net/ipv4/ip_forward    //禁用路由转发功能

写发布页面

[root@server6 network-scripts]# cat /var/www/html/index.html
server6'page

测试:

补充:当后台其中一台服务器坏掉,没有影响,自动踢除

调度器的vip可以添加在eth0上,还可以添加在tunl0模块上:

ifconfig tunl0 192.168.14.101 netmask 255.255.255.255 up

为了保证突出tun能后突出可以以直接以外网机器作为服务器,外网的服务器应该处于不同的网段

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值