linux 雙線-自動選擇指定出口-(策略Route和iptable)

linux 雙線-自動選擇指定出口-(策略Route和iptable)
來源: ChinaUnix博客  日期: 2007.03.30 13:55 (共有條評論) 我要評論
 
   機器接了雙線,電信和網通線路,代理下面的客戶端上網,根據客戶端訪問的請求自動選擇對應的線路出去,如,客戶端訪問網通,就從網通出去。

   在網上看了一些文章,覺得這篇文章討論很精彩
http://www.chinaunix.net/jh/4/536582.html
,從中很是很受益,裏面有幾位兄弟確實讓我敬佩,不只是技術方面,更多的他們學習態度。

   根據那篇文章自己歸納了一下,實現上面需求,有兩個辦法可以實現。一個根據策略路由,一個根據iptable中的一個標記功能實現。由於自己現沒有此環境,所以沒有在實踐去使用,但是還是將自己的理解記錄下來,做爲自己學習的筆記和以後工作中的需要。

第一方法:

    實現方式是這樣,三塊網卡,eth0 爲LAN口,eth1 爲第一個WAN口,接電信線路,eth2爲第二個WAN口,接網通線路。我這裏都是按照固定IP方式配置的,如果是要PPPOE則自己配置PPPOE部分,我這裏主要是給大家提供策略部分。
    將從兩個WAN口出去的數據包MASQUERADE
     /sbin/iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
     /sbin/iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
      
     然後,給系統增加一個標示爲100的路由表,增加一個默認網關,這個默認網關是網通提供的網關。  ip route add 0/0 via 218.59.*.* table 100
    然後給系統主路由表配置網關,這個網關是電信的網關
    ip route add 0/0 via 219.146.*.*
      然後添加路由規則,讓所有通向網通的數據查詢標示爲100的路由表:
    ip rule add to 60.0.0.0/13 table 100 
      ip rule add to 60.8.0.0/15 table 100
      ip rule add to 60.10.0.0/16 table 100
這個例子,默認使用的電信網關,也就是默認都使用電信線路,而對於符全ip rule中規則的使用table 100表中定義的路由,也就是網通。

第二方法:

# echo "200    DIANXIN" >;>; /etc/iproute2/rt_table(這個是添加到文件,執行一次即可)
# ip route replace default via 222.168.1.2 table DIANXIN 
# ip rule add fwmark 1 table DIANXIN(這個注意順序,用ip rule可以查看)
# iptables -t nat -F
# iptables -t mangle -F
# iptables -t mangle -A PREROUTING -i eth0 -s 192.168.0.0/24 -d 222.222.5.0/15 -j MARK --set-mark 1 
# iptables -t mangle -A PREROUTING -i eth0 -s 192.168.0.0/24 -d 222.240.0.0/13 -j MARK --set-mark 1
# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 222.222.5.0/15 -j SNAT --to $DIANXIN
# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 222.240.0.0/13 -j SNAT --to $DIANXIN
# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to $接網通線路網卡的地址
# ip route flush cache

本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u/11765/showart_268223.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章