5、LVS的DR模式:

dr模式:(direct)直接调度访问服务,直接路由,
即调度服务器与真实服务器都有一块网卡连在同一个物理网段上。
所以上图中连接交换机的五个网卡都应该在同一个物理网段上,即将虚拟机的桥接 改为sw1
数据包从客户端-->调度服务器 ,调度服务器收到之后,发给真实服务器,真实服务器收到包之后,
为客户提供服务,直接将回应包发给客户端,而不再经过调度服务器
官方的原理说明:Director接收用户的请求,然后根据负载均衡算法选取一台realserver,将包转发过去,最后由realserver直接回复给用户。
原理说明:
① client向目标vip发出请求,Director接收。此时IP包头及数据帧头信息
源MAC: client的mac地址 源IP:client的ip 地址
目的MAC:vip的mac地址 目的IP: vip的ip地址
② VS根据负载均衡算法选择一台active的realserver(假设是192.168.57.122),将此RIP所在网卡的mac 地址作为目标mac地址,发送到局域网里。此时IP包头及数据帧头信息如下:
源MAC:vip的mac地址 源IP:client的ip地址
目的MAC:realserver的mac地址 目的IP: vip的ip地址
③ realserver在局域网中收到这个帧,拆开后发现目标IP(VIP)与本地匹配,于是处理 这个报文。随后重新封装报文,发送到局域网。此时IP包头及数据帧头信息如下:
源MAC:realserver的mac地址 源IP:vip的ip地址
目的MAC:client的mac地址 目的IP:client的ip地址
④ 如果client与VS同一网段,那么client将收到这个回复报文。如果跨了网段,那么报 文通过gateway/路由器经由Internet返回给用户。
(1)防火墙配置
ip地址
启用路由转发
# vim /etc/sysctl.conf
net.ipv4.ip_forwary = 0 --> 修改为1(启用路由转发)
# sysctl -p
配置 NAT(目的地址转换)
# iptables -t nat -A PREROUTING -d 10.0.2.1 -p tcp --dport 80 -j DNAT --to-destination 172.16.10.10 (调度服务器的IP)
# iptables -F
# service iptables save
(2)调度服务器配置(Director)
ip地址
# ifconfig eth0:1 172.16.20.10 netmask 255.255.255.0
# cp /etc/sysconf/network-scprits/ifcfg-eth0 ifcfg-eth0:1
# eth0:1的配置文件 修改一下
# gateway: 172.16.20.1
配置调度表
# ipvsadm -A -t 172.16.10.10:80 -s rr # -A 添加调度服务器 -s指定调度算法
# ipvsadm -a -t 172.16.10.10:80 -r 172.16.20.20:80 -g -u 基于udp的集群服务
# -a 指定真实服务器 -r真实服务器ip及端口 -g指DR模式 -t基于tcp的集群服务
# ipvsadm -a -t 172.16.10.10:80 -r 172.16.20.30:80 -g
# service ipvsadm save
# service ipvsadm start
# ipvsadm C //清空规则
# iptables -F //清空防火墙规则
配置网关
(3)真实服务器配置
ip地址
# ifconfig lo:0 172.16.10.10 netmask 255.255.255.0 broadcast 172.16.10.10
# cp /etc/sysconfig/network-scripts/ifcfg-eth0 ifcfg-lo:0
# ifcfg-lo:0的配置文件 记得修改以下 每台真实服务器都需要配置 VIP
其网关为172.16.10.1
为什么要绑定 VIP 呢?
因为 DR 模式原理是 LVS 调度器修改 mac 地址为真实服务器地址,报文的目的 IP 还是 VIP 没修改,
网卡只会把目的 MAC 和目的 IP 都是自己的报文上送 CPU ,所以真实服务器上必须配置 VIP!
为什么使用 lo 口呢? 因为 lo 口为本地环回口,防止本地局域网 IP 地址冲突 ! 禁止真实服务器的arp广播和回应 (arp抑制参数见下面)
# vim /etc/sysctl.conf
net.ipv4.ip_forwary = 0 --> 修改为1(启用路由转发),然后添加上下面几项
net.ipv4.conf.lo.arp_ignore = 1 \\只回答目标 IP 地址是来访网络接口本地地址的 ARP 查询请求
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
# sysctl -p
# arp_announce
\\ 2 - 对查询目标使用最适当的本地地址 . 在此模式下将忽略这个 IP 数据包的源地址并尝试选择与能与该地址通信的本地地址 . 首要是选择所有的网络接口的子网中外出访问子网中包含该目标 IP 地址的本地地址 . 如果没有合适的地址被发现 , 将选择当前的发送网络接口或其他的有可能接受到该 ARP 回应的网络接口来进行发送 .
或:
# rpm -ivh arptables_jf*
# arptables -A IN -d 172.16.10.10 -j DROP
# ifconfig lo:0 172.16.10.10 netmask 255.255.255.0 broadcast 172.16.10.10
# route add -host 172.16.10.10 dev lo:0
开启web服务:
#yum install http*
# vim /etc/httpd/conf/httpd.conf
-->将#去掉。可以自己定义如:www.zll.com 也可以不修改只把#去掉就可以了。 # cd /var/www/html
# vim index.html ---> hello!ZLL
启动相应服务 service httpd start
清空防火墙 iptables -F
(4)客户端配置
ip地址:10.0.2.253
网关:10.0.2.1
测试: # curl 10.0.2.1 (防火墙eth0的ip)
或:在浏览器输入:10.0.2.1
若看到在RS服务器配置的index.html的内容,则成功
http://baike.haosou.com/doc/5442818-5681168.html
什么是arp?
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。
举例:
主机A192.168.1.2->主机B192.168.1.1发送数据。 当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。若找到,也就知道了目标MAC地址,直接把目标MAC地址写入帧里面发送就可以了;若在ARP缓存表中没有找到相对应的IP地址,主机A就会在网络上发送一个广播,目标MAC地址是“FF.FF.FF.FF.FF.FF”,这表示向同一网段内的所有主机发出这样的询问:“192.168.1.1的MAC地址是什么?”网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应:“192.168.1.1的MAC地址是00-aa-00-62-c6-09”。这样,主机A就知道了主机B的MAC地址,它就可以向主机B发送信息了。同时它还更新了自己的ARP缓存表,下次再向主机B发送信息时,直接从ARP缓存表里查找就可以了。
ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。
ARP攻击主要是存在于局域网网络中,局域网中若有一个人感染ARP木马,则感染该ARP木马的系统将会试图通过“ARP欺骗”手段截获所在网络内其它计算机的通信信息,并因此造成网内其它计算机的通信故障。
ARP欺骗分为二种(1)对路由器ARP表的欺骗;(2)对内网PC的网关欺骗。 (1)第一种ARP欺骗的原理是——截获网关数据。它通知路由器一系列错误的内网MAC地址,并按照一定的频率不断进行使真实的地址信息无法通过更新保存在路由器中,结果路由器的所有数据只能发送给错误的MAC地址,造成正常PC无法收到信息。 (2)第二种ARP欺骗的原理是——伪造网关。它的原理是建立假网关,让被它欺骗的PC向假网关发数据,而不是通过正常的路由器途径上网。在PC看来,就是上不了网了,“网络掉线了”。
arp 响应限制
1 ) arp_ignore: 定义对目标地址为本地 IP 的 ARP 询问不同的应答模式 0 0 - ( 默认值 ): 回应任何网络接口上对任何本地 IP 地址的 arp 查询请求 1 - 只回答目标 IP 地址是来访网络接口本地地址的 ARP 查询请求 2 - 只回答目标 IP 地址是来访网络接口本地地址的 ARP 查询请求 , 且来访 IP 必须在该网络接口的子网段内 3 - 不回应该网络界面的 arp 请求,而只对设置的唯一和连接地址做出回应 4-7 - 保留未使用 8 - 不回应所有(本地地址)的 arp 查询 2 ) arp_announce: 对网络接口上,本地 IP 地址的发出的, ARP 回应,作出相应级别的限制 : 确定不同程度的限制 , 宣布对来自本地源 IP 地址发出 Arp 请求的接口 0 - ( 默认 ) 在任意网络接口( eth0,eth1 , lo )上的任何本地地址 1 - 尽量避免不在该网络接口子网段的本地地址做出 arp 回应 . 当发起 ARP 请求的源IP 地址是被设置应该经由路由达到此网络接口的时候很有用 . 此时会检查来访 IP 是否为所有接口上的子网段内 ip 之一 . 如果改来访 IP 不属于各个网络接口上的子网段内 ,那么将采用级别 2 的方式来进行处理 . 2 - 对查询目标使用最适当的本地地址 . 在此模式下将忽略这个 IP 数据包的源地址并尝试选择与能与该地址通信的本地地址 . 首要是选择所有的网络接口的子网中外出访问子网中包含该目标 IP 地址的本地地址 . 如果没有合适的地址被发现 , 将选择当前的发送网络接口或其他的有可能接受到该 ARP 回应的网络接口来进行发送 .
|