關於LVS-DR中的一個普遍誤區:lo:0配置路由


說明:寫此文僅爲讓大家知道各大網站上看到的配置文件中的一個誤區!!

    前面剛發表一篇關於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環境:

    具體配置:

    1)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 參數查看路由表緩存;

wKioL1PHnAiRTCF5AAQNGlUgknk625.jpg

跟據最後一條信息估計,如果還是此前那種觀點,那麼就應該解釋爲:系統會自動補充路由信息。

在這裏,我需要感謝這位兄弟:福州-北緯27度

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章