centos7 + lvs-dr

网络拓扑图

 

 

 

CIP: 192.168.21.200 (客户端)、DIP: 192.168.21.201(调度器)、RIP: 192.168.21.202(realserver)、RIP: 192.168.21.203(realserver)在同一个子网

 各主机网卡配置如下:

  

 

 

 

  

 

 

 

  • 调度器上,开启了 ip 转发功能,net.ipv4.ip_forward = 1,经实测是不需要的
  • 客户端在 192.168.21.0 网段,而 vip 在 172.22.3.201/32 这个专网,注意这里掩码为 32 位,该网络只有这一个主机,称为主机 ip,所以需要在客户端配置路由
    route add -host 172.22.3.201 dev ens33,如果没有这个路由项,客户机 ip 包无法从网卡发出

  • 客户端和调度器网卡是物理相连的,故客户端 arp 广播请求 172.22.3.201 的 mac 地址时,由于调度器没有配置 arp_ignore,且调度器网卡配置了双 ip 192.168.21.201 和 172.22.3.201。
    故调度器会回复主网卡 ens33 的 mac 给客户端,客户端 ip 包(src=192.168.21.200, dst=172.22.3.201)到达调度器后,调度器肯定不能询问 172.22.3.201 的 mac 是多少,因为
    它自己就是 172.22.3.201,因此数据包是通过 netfilter 框架实现的,即 ipvsadm 的配置起作用了,ipvsadm 配置如下
    ipvsadm -A -t 172.22.3.201 -s rr
    ipvsadm -a -t 172.22.3.201 -r 192.168.21.202
    ipvsadm -a -t 172.22.3.201 -r 192.168.21.203

  • ipvsadm 会询问 192.168.21.202 或者 192.168.21.203 mac,因为网卡物理相连,这俩会回复自己的 ens33 的 mac 地址给调度器,这样就同客户端建立了通道。若客户端有 ip 包过来,ipvsadm 将 ip 包 dst 的 mac 改为 realserver mac。
    将 ip 包(src=192.168.21.200, dst=172.22.3.201)发给 realserver。由于配置了 arp_announce = 2,回复的 ip 包 (dst=192.168.21.200, src=172.22.3.201)。这样客户端 被欺骗

 参考:https://blog.csdn.net/weixin_55611216/article/details/117992026

posted on 2022-07-20 16:10  一直小飞猫  阅读(92)  评论(0编辑  收藏  举报

导航