lvsNAT模型和TUN模型

LVS模式

Client->VS(两个网卡,一个內网,一个交换机与RS互通,DNAT目标地址转换)->RS(SNAT源地址转换)->VS->Client
客户端发送请求到调度器的vip上,调度器接受到客户端的请求之后,根据调度算法,将客户端的的请求发送给服务器,服务器处理完请求,查看默认路由 (NAT模式下需要将服务器的默认网关设置为调度器),调度器接受到响应包以后,将源IP进行修改,然后将响应数据发送给客户端。
原理详情:

1.客户端请求数据,然后将数据发送给调度器
2.调度器接受到客户端的请求,根据调度算法,将客户端的请求包的源IP和端口,修改为服务器,然后将这条连接信息保存在hash表中
3.数据包经过服务器的处理,服务器的默认网关是调度器,然后将响应数据发给调度器
4.收到服务器的响应包以后,根据hash表中的连接信息,将源IP改为调度器自己,然后将数据发送给客户端

实验环境:

iptables和selinux关闭
redhat6.5
VS:server1 172.25.254.1 vip: 172.25.71.100
RS:server2 172.25.254.2 网关:172.25.254.1
RS:server3 172.25.254.3 网关:172.25.254.1

VS:

首先添加一个网卡
[root@server1 ~]# cd /etc/sysconfig/network-scripts/
[root@server1 network-scripts]# ls
[root@server1 network-scripts]# cp ifcfg-eth0 ifcfg-eth1
[root@server1 network-scripts]# cat ifcfg-eth1 修改device=eth1 ipaddr=172.25.71.100//文件内容如下

//当临时添加ip时需要执行ip link set up eth1激活eth1

[root@server1 network-scripts]# /etc/init.d/network restart
[root@server1 network-scripts]# yum install ipvsadm -y
[root@server1 network-scripts]# /etc/init.d/iptables stop
[root@server1 network-scripts]# ipvsadm -C
[root@server1 network-scripts]# ipvsadm -A -t 172.25.71.100:80 -s wrr
[root@server1 network-scripts]# ipvsadm -a -t 172.25.71.100:80 -r 172.25.254.2:80 -m -w 1  
//-m表示nat模式,-w设置权重,wrr加权轮叫调度算法
[root@server1 network-scripts]# ipvsadm -a -t 172.25.71.100:80 -r 172.25.254.3:80 -m -w 1
[root@server1 network-scripts]# 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.71.100:80 wrr
  -> 172.25.254.2:80              Masq    1      0          0         
  -> 172.25.254.3:80              Masq    1      0          0         
[root@server1 network-scripts]# echo "1" >/proc/sys/net/ipv4/ip_forward  //开启ip转发功能
//临时开启:sysctl -w net.ipv4.ip_forward=1

 RS:


server2:
[root@server2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
//添加网关172.25.254.1,是指向调度器的
//临时添加网关:route add default gw 172.25.254.1
[root@server2 ~]# cat /var/www/html/index.html
www.westos.org-Server2
[root@server2 ~]# /etc/init.d/httpd start

server3:
[root@server3 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
//添加网关172.25.254.1
[root@server3 ~]# cat /var/www/html/index.html
www.westos.org
[root@server3 ~]# /etc/init.d/httpd start

TUN模型:

过程(用IP隧道技术实现虚拟服务器)

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

 

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

实验环境

iptables和selinux关闭
redhat6.5
VS:server1 172.25.254.1 VIP:172.25.254.100
RS:server2 172.25.254.2 VIP:172.25.254.100
RS:server3 172.25.254.3 VIP:172.25.254.100

[root@server1 ~]# /etc/init.d/network restart  //重启网络
[root@server1 ~]# ipvsadm -C  //清除所有策略
[root@server1 ~]# ipvsadm -A -t 172.25.254.100:80 -s rr
[root@server1 ~]# ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.2 -i
//-i 表示隧道模式
[root@server1 ~]# ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.3 -i
[root@server1 ~]# 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.2:80              Tunnel  1      0          0         
  -> 172.25.254.3:80              Tunnel  1      0          0         
[root@server1 ~]# echo "1" >/proc/sys/net/ipv4/ip_forward
//临时开启:sysctl -w net.ipv4.ip_forward=1

 RS:(server2、server3操作相同)

server2:
[root@server2 network-scripts]# modprobe ipip
//也可以在VS执行此命令,加载隧道模块生成tunl0,给tunl0添加vip
[root@server2 network-scripts]# ifconfig -a
tunl0     Link encap:IPIP Tunnel  HWaddr
[root@server2 network-scripts]# lsmod | grep ipip
ipip                    8371  0
tunnel4                 2943  1 ipip
[root@server2 network-scripts]# vim ifcfg-tunl0
//当临时添加vip时也需要激活tunl0
DEVICE=tunl0
IPADDR=172.25.35.61
NETMASK=255.255.255.0
ONBOOT=yes
NAME=tunl0
[root@server2 network-scripts]# /etc/init.d/network restart
[root@server2 network-scripts]# vim /etc/sysctl.conf  
//arp抑制,保证客户不会访问到,只有调度器正常响应
net.ipv4.conf.tunl0.arp_ignore = 1
net.ipv4.conf.tunl0.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.tunl0.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0  //没有走正常接口就忽略
//临时开启:sysctl -w net.ipv4.tunl0.rp_filter=0
[root@server2 network-scripts]# sysctl -p
[root@server2 network-scripts]# echo '0'>/proc/sys/net/ipv4/ip_forward
[root@server2 network-scripts]# cat /var/www/html/index.html
www.westos.org-Server2
[root@server2 network-scripts]# /etc/init.d/httpd start

server3:步骤与server2相同
[root@server3 ~]# cat /var/www/html/index.html
www.westos.org
[root@server3 ~]# /etc/init.d/httpd start

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值