Skip to main content

 路由器设置 > 新闻资讯 >

关于LVS-DR中的一个普遍误区:lo:0配置路由

2014-07-17 22:59 浏览:


说明:写此文仅为让大家知道各大网站上看到的配置文件中的一个误区!!


前面刚发表一篇关于LVS原理的博客,随后有位兄弟就问了一个特别的问题:为何需要在lo:0上配置路由,我没配置lvs也正常啊?刚开始我给他分析了一下:

  client请求包是:Src_ip=cip, Dst_ip=vip

  RS响应包是:Src_ip=vip, Dst_ip=cip


这上面是client收到RS响应必须的要求,所以会带来个问题:我在此之前的观点是:linux中报文从哪个网口出去,它的源IP就是那个网口的IP,所以默认情况下是不行的;只有当在内核中就指定路由先从lo:0出去再经过eth0才符合要求的;然后我就想,既然这位兄弟没配置路由,是不是linux系统能自动识别或者其它机制实现RS响应包的源IP就是VIP,目标IP就是CIP呢?带着这个问题,我简单地搭建了一个LVS-DR环境:


具体配置:DR上的配置:
 

  # ifconfig eth0:1 192.168.100.100 up

  # echo 1 >/proc/sys/net/ipv4/ip_forward

  # ipvsadm -A -t 192.168.100.100:80 -s rr

  # pvsadm -a -t 192.168.100.100:80 -r 192.168.100.102 -g

  # ipvsadm -a -t 192.168.100.100:80 -r 192.168.100.103 -g


(2)RS上的配置:

  # echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore

  # echo 1 >/proc/sys/net/ipv4/conf/eth0/arp_ignore

  # echo 2 >/proc/sys/net/ipv4/conf/eth0/arp_announce

  # echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce

  # ifconfig lo:0 192.168.100.100 netmask 255.255.255.255 broadcast 192.168.100.100 up


(3)测试


在IE上输入http://192.168.100.100完全没问题。


总结


由于之前学习LVS时看各种各网站上的配置文件都会加入


# route add -host 192.168.100.100 dev lo:0


而且也符合此前我所认知的观点,由于只是知道此观点是错的,但错在哪呢?随后相到查看路由表,于是man 了一下route 找到-C 参数查看路由表缓存;跟据最后一条信息估计,如果还是此前那种观点,那么就应该解释为:系统会自动补充路由信息。在这里,我需要感谢这位兄弟:福州-北纬27度