沒(méi)什么大不了的,不過(guò)是建立了通向該網(wǎng)關(guān)的一條路由,并使之成為默認(rèn)網(wǎng)關(guān),分別負(fù)責(zé)一個(gè)單獨(dú)的上行流,并且為這兩個(gè)ISP都作這樣的配置。要指出的是,那條網(wǎng)絡(luò)路由是必要條件,因?yàn)樗軌蜃屛覀冋业侥莻(gè)子網(wǎng)內(nèi)的主機(jī),也包括上述那臺(tái)網(wǎng)關(guān)。
下一步,我們?cè)O(shè)置“main”路由表。把包通過(guò)網(wǎng)卡直接路由到與網(wǎng)卡相連的局域網(wǎng)上不失為一個(gè)好辦法。要注意“src” 參數(shù),他們能夠保證選擇正確的出口IP地址。
ip route add $P1_NET dev $IF1 src $IP1
ip route add $P2_NET dev $IF2 src $IP2
然后,設(shè)置你的缺省路由:
ip route add default via $P1
接著,設(shè)置路由規(guī)則。這實(shí)際上在選擇用什么路由表進(jìn)行路由。你需要確認(rèn)當(dāng)你從一個(gè)給定接口路由出數(shù)據(jù)包時(shí),是否已經(jīng)有了相應(yīng)的源地址:You want to make sure that you route out a given interface if you already have the corresponding source address:
ip rule add from $IP1 table T1
ip rule add from $IP2 table T2
以上命令保證了所有的回應(yīng)數(shù)據(jù)都會(huì)從他們來(lái)的那塊網(wǎng)卡原路返回。
現(xiàn)在,完成了非;镜呐渲。這將對(duì)于所有運(yùn)行在路由器上所有的進(jìn)程起作用,實(shí)現(xiàn)IP偽裝以后,對(duì)本地局域網(wǎng)也將起作用。如果不進(jìn)行偽裝,那么你要么擁有兩個(gè)ISP的地址空間,要么你想對(duì)兩個(gè)ISP中的一個(gè)進(jìn)行偽裝。無(wú)論哪種情況,你都要添加規(guī)則,基于發(fā)包的主機(jī)在局域網(wǎng)內(nèi)的IP地址,選擇從哪個(gè)ISP路由出去。
4.2.2. 負(fù)載均衡
第二個(gè)問(wèn)題是如何對(duì)于通過(guò)兩個(gè)ISP流出的數(shù)據(jù)進(jìn)行負(fù)載均衡。如果你已經(jīng)成功地實(shí)現(xiàn)了流量分割,這件事并不難。
與選擇兩個(gè)ISP中的一個(gè)作為缺省路由不同,這次是設(shè)置缺省路由為多路路由。在缺省內(nèi)核中,這會(huì)均衡兩個(gè)ISP的路由。象下面這樣做(基于前面的流量分割實(shí)驗(yàn)):
ip route add default scope global nexthop via $P1 dev $IF1 weight 1 \
nexthop via $P2 dev $IF2 weight 1