歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

讓多台電腦上網,多重上連ISP的路由設置

  如果你有兩個ISP,那麼,通過下面的方法,可以將兩個ISP綁定,並做負載均衡,可以實現帶寬加倍。  也就是說,假如我們有兩條ADSL包月線路,可以使帶寬變為1M!    做這個工作,涉及到兩個工作    1、流量分割  首先是如何保證:回應來自某一個ISP的數據包時,仍然使用相同的ISP。 讓我們先定義一些符號。  令第一塊網卡(上圖的if1)的名字叫 $IF1,而第二塊網卡叫做 $IF2 。  然後設置 $IF1 的IP地址為 $IP1,$IF2 的IP地址為 $IP2。  並且,令ISP1 的網關地址為 $P1,ISP2 的網關地址為 $P2。  最後,令$P1的網絡地址為 $P1_NET ,令$P2的網絡地址為 $P2_NET。  額外創建兩個路由表, T1 和 T2。 加入到 /etc/iproute2/rt_tables 中。  然後如下設置兩個路由表中的路由:  ip route add $P1_NET dev $IF1 src $IP1 table T1  ip route add default via $P1 table T1  ip route add $P2_NET dev $IF2 src $IP2 table T2  ip route add default via $P2 table T2  沒什麼大不了的,不過是建立了通向該網關的一條路由,並使之成為默認網關,分別負責一個單獨的上行流,並且為這兩個ISP都作這樣的配置。    要指出的是,那條網絡路由是必要條件,因為它能夠讓我們找到那個子網內的主機,也包括上述那台網關。  下一步,我們設置“main”路由表。把包通過網卡直接路由到與網卡相連的局域網上不失為一個好辦法。要注意“src” 參數,他們能夠保證選擇正確的出口IP地址。    ip route add $P1_NET dev $IF1 src $IP1  ip route add $P2_NET dev $IF2 src $IP2    然後,設置你的缺省路由:  ip route add default via $P1    接著,設置路由規則。這實際上在選擇用什麼路由表進行路由。你需要確認當你從一個給定接口路由出數據包時,是否已經有了相應的源地址:你需要保證的就是如果你已經有了相應的源地址,就應該把數據包從相應的網卡路由出去:  ip rule add from $IP1 table T1  ip rule add from $IP2 table T2    以上命令保證了所有的回應數據都會從他們來的那塊網卡原路返回。 現在,完成了非常基本的配置。這將對於所有運行在路由器上所有的進程起作用,實現IP偽裝以後,對本地局域網也將起作用。如果不進行偽裝,那麼你要麼擁有兩個ISP的地址空間,要麼你想對兩個ISP中的一個進行偽裝。無論哪種情況,你都要添加規則,基於發包的主機在局域網內的IP地址,選擇從哪個ISP路由出去。    2、負載均衡  第二個問題是如何對於通過兩個ISP流出的數據進行負載均衡。  如果你已經成功地實現了流量分割,這件事並不難。  與選擇兩個ISP中的一個作為缺省路由不同,這次是設置缺省路由為多路路由。  在缺省內核中,這會均衡兩個ISP的路由。    象下面這樣做(基於前面的流量分割實驗):  ip route add default scope global nexthop via $P1 dev $IF1 weight 1 nexthop via $P2 dev $IF2 weight 1  這樣就可以均衡兩個ISP的路由。通過調整“weight”參數我們可以指定其中一個ISP的優先權高於另一個。    應該指出,由於均衡是基於路由進行的,而路由是經過緩沖的,所以這樣的均衡並不是100%精確。也就是說,對於一個經常訪問的站點,總是會使用同一個ISP。  進而,如果你對此不滿意,你可能需要參考以下Julian Anastasov的內核補丁:  http://www.ssi.bg/~ja/  Julian的路由補丁會彌補上述缺陷。(好像要重新編譯內核,我沒敢PATCH)     上圖是很常見的配置,同一個局域網(甚至是同一台計算機)通過兩個ISP連接到互聯網上。




Copyright © Linux教程網 All Rights Reserved