使用LVS实现网络的DR模式

使用LVS实现网络的DR模式

LVS-DR:Direct Routing,直接路由,LVS默认模式,应用最广泛,通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变
(1) Director和各RS都配置有VIP
(2) 确保前端路由器将目标IP为VIP的请求报文发往Director
在前端网关做静态绑定VIP和Director的MAC地址
在RS上使用arptables工具
arptables -A IN -d $VIP -j DROP
arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP
在RS上修改内核参数以限制arp通告及应答级别
/proc/sys/net/ipv4/conf/all/arp_ignore
/proc/sys/net/ipv4/conf/all/arp_announce
(3)RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;RIP的网关不能指向DIP,以确保响应报文不会经由Director
(4)RS和Director要在同一个物理网络
(5)请求报文要经由Director,但响应报文不经由Director,而由RS直接发往Client
(6)不支持端口映射(端口不能修败)
(7)RS可使用大多数OS系统

实验:实现一个网络的DR模型 DR模型的lvs机器只接受响应包 减小压力

在这里插入图片描述

环境准备5台centos
一台客户端:172.18.1.246/16 GW:172.18.2.18

一台router:
eth0:NAT模式,192.168.38.112/24
eth1:bridge模式,172.18.2.18/16
启用ip_forward

一台LVS:
eth0:NAT模式 192.168.38.222/24:GW:192.168.38.XXX
lo:vip:192.168.38.10

两台RS
RS1:192.1687.38.113 GW:192.168.38.112 lo:vip:192.168.38.10
RS2:192.1687.38.108 GW:192.168.38.112 lo:vip:192.168.38.10
arp_ignore=1
arp_announce=2

RS1,RS2 运行脚本修改内核参数以限制arp通告及应答级别和绑定vip地址

bash lvs_dr_rs.sh start
[root@RS1 ~]#cat lvs_dr_rs.sh 
#!/bin/bash
#Author:xsx
#Date:2019-08-13
vip=192.168.38.10
mask='255.255.255.0'
dev=lo:1
#rpm -q httpd &> /dev/null || yum -y install httpd &>/dev/null
#service httpd start &> /dev/null && echo "The httpd Server is Ready!"
#echo "<h1>`hostname`</h1>" > /var/www/html/index.html

case $1 in
start)
    echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
    echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
    ifconfig $dev $vip netmask $mask #broadcast $vip up
    #route add -host $vip dev $dev
    echo "The RS Server is Ready!"
    ;;
stop)
    ifconfig $dev down
    echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
    echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
    echo "The RS Server is Canceled!"
    ;;
*) 
    echo "Usage: $(basename $0) start|stop"
    exit 1
    ;;
esac

LVS机器运行脚本 设置调度 ipvsadm规则和绑定客户端访问地址

[root@lvs ~]#cat lvs_dr_vs.sh 
#!/bin/bash
#Author:xsx
#Date:2019-08-13
vip='192.168.38.10'
iface='lo:1'
mask='255.255.255.0'
port='80'
rs1='192.168.38.113'
rs2='192.168.38.108'
scheduler='rr'
type='-g'
rpm -q ipvsadm &> /dev/null || yum -y install ipvsadm &> /dev/null

case $1 in
start)
    ifconfig $iface $vip netmask $mask #broadcast $vip up
    iptables -F
 
    ipvsadm -A -t ${vip}:${port} -s $scheduler
    ipvsadm -a -t ${vip}:${port} -r ${rs1} $type -w 1
    ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 1
    echo "The VS Server is Ready!"
    ;;
stop)
    ipvsadm -C
    ifconfig $iface down
    echo "The VS Server is Canceled!"
    ;;
*)
    echo "Usage: $(basename $0) start|stop"
    exit 1
    ;;
esac

客户端测试

在这里插入图片描述

使用tcpdump命令抓取报文 发现lvs只接受 然后转发 不回应

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值