作者 主題: multi-path 提問~  (閱讀 4592 次)

0 會員 與 1 訪客 正在閱讀本文。

nightmare

  • 可愛的小學生
  • *
  • 文章數: 17
    • 檢視個人資料
multi-path 提問~
« 於: 2010-01-25 16:39 »
小弟是某小小公司的 MIS,目前剛進公司不久,由於公司網路環境混亂,所以小弟興起了幫公司重新規劃的計畫。
目前小弟公司有四條專線,一條 adsl,其中兩條專線給 VoIP 設備使用就不理它們了,ADSL 原本是提供給同仁上網使用,一條是供公司 server 使用,另一條預備廢棄.... :P

原本公司對外管理部份是用一台 ip share 接 adsl,server 的話是直接連外,這樣看起來連外行人都會覺得很危險,於是小弟便用閒置的 pc 架了一台 linux 防火牆來作管理,使用的 distro 為 gentoo,除了原本 onboard 的網卡作為對外的連線使用外,另外插了一張 4 port 的網路卡,區分為 server 區、機密區、一般員工區及備用。
對外的這張網卡(eth0)接專線及 ADSL,其上綁了此專線種花所配的所有 ip,以及撥接的 adsl,利用 port mapping 的方式對應到內部 server。

但是小弟參照站上相關文章與網路上其他資料欲實作 multi-path,讓 user 網域透過 adsl 連線出去都失敗了,以下是小弟的作法:
nat table 設定:

代碼: [選擇]
SNAT             all  --  *      eth0    10.0.0.0/24          0.0.0.0/0           to:aaa.bbb.ccc.ddd
MASQUERADE  all  --  *      ppp0    10.0.1.0/24          0.0.0.0/0  
MASQUERADE  all  --  *      ppp0    10.0.2.0/24          0.0.0.0/0  
MASQUERADE  all  --  *      ppp0    10.0.3.0/24          0.0.0.0/0  
SNAT             all  --  *      eth0    10.0.1.0/24          0.0.0.0/0           to:aaa.bbb.ccc.ddd
SNAT             all  --  *      eth0    10.0.2.0/24          0.0.0.0/0           to:aaa.bbb.ccc.ddd
SNAT             all  --  *      eth0    10.0.3.0/24          0.0.0.0/0           to:aaa.bbb.ccc.ddd

在小弟的規劃中,MASQUEADE 規則就是讓除了 server zone 外的區段透過 adsl 上網,因為是撥接,所以用 ip 偽裝的方式,下面再用 SNAT 的方式是讓這些區段上網的臨時 rule。

接下來小弟參考了網路上的範例,先在 mangle 的 PREROUTING chain 做 mark 的動作:
mangle table - PREROUTING chain:
代碼: [選擇]
iptables -t mangle -A PREROUTING -i eth1 -s 10.0.0.0/24 -d 0/0 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -i eth2 -s 10.0.1.0/24 -d 0/0 -j MARK --set-mark 2
以下把其他網段的封包都標 2 號...
...

然後在 /etc/iproute2/rt_tables 新增了 adsl 這個 table:
/etc/iproute2/rt_tables:
代碼: [選擇]
#
# reserved values
#
255     local
254     main
253     default
0       unspec
100     localnet
#
# local
#
#1      inr.ruhep
[color=red]200 adsl[/color]

然後在此 table 新增 rule:
代碼: [選擇]
ip route add fwmark 2 table adsl
ip rule add table adsl default dev ppp0
ip rule add table adsl 10.0.0.0/24 via 10.0.0.254
ip rule add table adsl 10.0.1.0/24 via 10.0.1.254
以下類推


結果是只要一下 ip route flush 全部區網就都斷線了,有點出乎小弟的意料之外,請問小弟的設定有遺漏任何東西嗎?請各方大德不吝指教~m(_._)m
« 上次編輯: 2010-01-25 16:41 由 nightmare »

anderson1127

  • 訪客
回覆: multi-path 提問~
« 回覆 #1 於: 2010-01-25 19:31 »
要硬幹我沒意見....

但出了問題才來求救,這不是一個專業人士應該做的事!!

所以....

1. 請務必多做功課才來實作
2. 請公司花錢買support

自己選擇吧!!

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17465
    • 檢視個人資料
    • http://www.study-area.org
回覆: multi-path 提問~
« 回覆 #2 於: 2010-01-25 20:09 »
ip route flush 不是已經將 table 清掉嗎?

kenduest

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3675
    • 檢視個人資料
    • http://kenduest.sayya.org
回覆: multi-path 提問~
« 回覆 #3 於: 2010-01-25 20:17 »
ip route flush 不是已經將 table 清掉嗎?

有許他需要應該是:ip route flush cache
I am kenduest - 小州

my website: http://kenduest.sayya.org/

nightmare

  • 可愛的小學生
  • *
  • 文章數: 17
    • 檢視個人資料
回覆: multi-path 提問~
« 回覆 #4 於: 2010-01-26 02:23 »
感謝樓上兩位前輩提示,小弟的確很少使用 iproute2,對 iproute2 指令確實不熟悉。

給一樓的前輩,我不是來求救的,而是來救教的,我下錯了指令造成斷線,我會救;但是我來提問,不是為了怎麼救回來,而是怎麼去做,怎麼去做也大至上了解,只是思緒卡在某個地方。
也許一樓前輩任職於無敵大企業,要設備有設備,要外包商有外包商排隊,但是台灣商場上還有數萬家的中小企業在浴血奮戰,我也想買大砲坦克啊;只是聽君一席話,頗有古時何不食肉糜之嘆.... :P

damon

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 4227
    • 檢視個人資料
    • http://blog.damon.tw/
回覆: multi-path 提問~
« 回覆 #5 於: 2010-01-26 10:46 »
想聽真話的話就繼續看下去,還是想自己搞就不用看下去了
兩台2 wan loading balance的中小企業形的utm丟下去就收工,買不起utm,買居易的也行,不要求防毒跟其它功能的話,在搭配內部的dhcp,大不了斷線的時候手動切換gateway ip,反正你的server一樣沒有備援,有預算的時候再來買4 port的loading balance gateway
成本不是只算第一次購買硬體設備的成本,後續的維護成本,有問題的時候的支援跟處理時間,內部人員學習的成本,這些都是成本,愛用linux自己弄,那就自己弄吧

anderson1127

  • 訪客
回覆: multi-path 提問~
« 回覆 #6 於: 2010-01-26 12:44 »
感謝樓上兩位前輩提示,小弟的確很少使用 iproute2,對 iproute2 指令確實不熟悉。

給一樓的前輩,我不是來求救的,而是來救教的,我下錯了指令造成斷線,我會救;但是我來提問,不是為了怎麼救回來,而是怎麼去做,怎麼去做也大至上了解,只是思緒卡在某個地方。

指令熟不熟悉是另外一回事 , 理論運作部份熟不熟那才是重點 !!
就如同之前某人曾跟你一樣,出了問題就上論壇來求救,還跟人家說他看了5-7本的相關書籍
還是不行,做不出來!!

我的回覆是,書籍數量不是重點,是理論運作才是重點,只是很抱歉的是,目前我看過的書籍
沒有一本很清楚的將理論運作的方式給解釋得很清楚的書,一本都沒有!! 至於command部份
只要理論瞭解清楚,command一下子就上手!! 所以很明顯的,你也犯了同樣的問題...

不要來玩文字遊戲,不管求救還是求解,其本質就是求解答,沒錯吧??
但問題的根本你有認清嗎?? 是你的問題還是我的問題?? 還說何不食肉糜哩...
引經據典都用錯地方了....

如果我的作風是何不食肉糜,那照理說,我就不會來用Linux IPtables firewall了...
我老早就是Cisco ASA Firewall/Netscreen/Fortigate的擁護者了,我何苦來哉的
研究IPTables的高階運用的configuration ??

再說要怎麼去做,很簡單呀,你先把IPTables 5個chain先搞清楚packet會怎麼跑
再把routing何時有作用,完全弄清楚再來說要怎麼做!!
(等你真的弄清楚了,到時要操作IPTables & iproute2 command就不用上來問)

PS1: 我還真想問問你,你找來的資料你真的瞭解其內容嗎?? 還是只會套招而已 ??
PS2: 我真的是被你那句何不食肉糜那句話給氣到了... 算你行!!

gwstudy

  • 活潑的大學生
  • ***
  • 文章數: 205
    • 檢視個人資料
回覆: multi-path 提問~
« 回覆 #7 於: 2010-01-26 16:47 »
我覺得不用對樓主苛責,他要怎麼做都可以,我們要不要回答也是我們的決定,搞到想發脾氣是沒必要的。
這個問題真弄懂了應該不難,但很多細節不小心處理就會出問題。我也只弄過三張 lan card 做 multi-path (兩張對外面兩條 adsl,一張對內),我相信樓主這樣複雜度更高了。建議樓主把網路上講 multi-path 的文章都看完,先從三張網卡實驗過再弄你這個五個 port 的吧,不然怕你一年後還搞不定。
PS. 弄過三張卡之後,樓主這 project 我是不太想做。五個 port 可能都要能互通,iptables 跟 routing table 又互相有關聯,說真的,接到這案子我會想離職 :)


anderson1127

  • 訪客
回覆: multi-path 提問~
« 回覆 #8 於: 2010-01-26 17:22 »
以下這張圖,我想應該沒幾本書有解釋過,但是充份瞭解這張圖的流程
卻是想要駕御netfilter 最重要關鍵點!! 不管是誰,只要想充份發揮
netfilter的強大能力,這張圖的流程就一定要破參...

http://jengelh.medozas.de/images/nf-packet-flow.png

但是目前高階的功能,卻是要自行研究及開發才有可能達到,但所有的前提
就是這張netfilter 架構圖要當做操作的基礎,否則一切休談!!

這才是真正讓自己能夠成長的重要知識,而不是去google找些config example
就來進行套用,就算能夠真正套用,對自己的專業技術上也不會有任何幫助
因為自己根本不瞭解運作原理,唯有原理充份瞭解 , 那才是真正的成長!!

kenduest

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3675
    • 檢視個人資料
    • http://kenduest.sayya.org
回覆: multi-path 提問~
« 回覆 #9 於: 2010-01-26 23:30 »

討論似乎偏了?

我認為問題單純一點,就針對他的 iptables 與 ip 規則設定討論情況就好,這是就技術討論,不要每次都喜歡搬出企業上使用設備這樣的內容,這樣走偏了。

拉回原本樓主問題,你使用 ip route flush cache 後,那後續情況呢 :)
I am kenduest - 小州

my website: http://kenduest.sayya.org/

nightmare

  • 可愛的小學生
  • *
  • 文章數: 17
    • 檢視個人資料
回覆: multi-path 提問~
« 回覆 #10 於: 2010-01-26 23:45 »
還沒測試,大概得等週末再來實驗吧.... :P

anderson1127

  • 訪客
回覆: multi-path 提問~
« 回覆 #11 於: 2010-01-27 08:24 »
這個資料有點舊了...
但是詳細的config 過程及重點依然還是不變的!!

喜歡直接套用,沒什麼不可以的,但是最重要的是
出了問題必須依靠自己解決,所以才一直強調要做Lab

http://peterkim.hellpara.org/paper/mnetwork.doc

另外論壇裡的資料也不少,該看的還是要看,該做的Lab還是要做
這樣對自己的成長才有幫助!! 如果這樣就足夠的話(multipath)
那就不用去研究netfilter架構圖 !!

PS: 要做multipath我記得有不少地方都要做kernel recompile
而我的習慣也是如此!! 至少要用幾台機器來做Lab ...

rainday

  • 鑽研的研究生
  • *****
  • 文章數: 738
  • 性別: 男
  • enhancing and optimizing
    • 檢視個人資料
回覆: multi-path 提問~
« 回覆 #12 於: 2010-01-31 04:31 »
小弟不才,有個疑問
eth0的三個網段
MASQUERADE後又SNAT aaa.bbb.ccc.ddd???
這樣還找的到回家的路嗎???
<0  =_=  Don't learn to hack , hack to learn.

dark

  • 俺是博士!
  • *****
  • 文章數: 1581
    • 檢視個人資料
回覆: multi-path 提問~
« 回覆 #13 於: 2010-01-31 09:22 »
小弟不才,有個疑問
eth0的三個網段
MASQUERADE後又SNAT aaa.bbb.ccc.ddd???
這樣還找的到回家的路嗎???
不會吧 ... 這問題只在於 iptables rule 的順序 ... 樓主應該 .. 應該 ..

小弟倒是沒習慣下 flush ...

不過樓主下完指令應該檢視一下
#ip route list all table
用一隻常駐程式監視也是有必要的
因為 ppp0 有沒有機會變 ppp1 不知道
(pppoe.conf 裡有個關於 default route 參數 .. 意思是重新連線要不要改 routing table 的 default route)

樓主所用到的需求應該只在於 "by source routing" 部分
動態監視 routing table + 流量 才能做到有效分流
而您的需求 , 應該也只有施主您自己知道吧
ps: 若小弟家用需求 , 送我 linkproof 我都不要 (意思是 .. 折現比較實際啦)


以下小弟分享一下市面上 mutil-homing 架構的一些觀念
#####

-- 在 dns 商那邊要註冊兩筆
因為回應 DNS query 的封包 , 可以放多筆 ns 資訊 , 而決定使用第一第二筆的決定權在 client 程式
所以要是第一台 ns 沒回應 , 仍能問該公司第二 .. 第三台 ns server 查詢到主機位置


-- ns server 要自己管理
(自己內部若兩台 ns , 當然要不同線路 , 兩條線路同時掛就沒餘地了)
而 mutil-homing 設備通常能在 53 port 上動手腳的功能有 3 種
1. 原封不動轉由內部 ns 回答
2. 代為回答 -- 指扮演 dns server 角色回應 query , 好一點的能分內外來的
3. 偷改答案 -- 當詢問到這清單中位置 , 判斷活著的線路(備援) , 再依權值或流量等條件回答
... 這也是這類設備的重點
小弟在客戶端所見 .. 一般都只設到備援階段就沒在深入規劃了

而 mutil-homing 另一項重點是 "virual tunnel" (沒看過有人用)
重點在於 .. 例如 :
兩廠房距離遙遠 , 各有兩條 internet 線路 , 當然兩邊都要同牌子的設備
這時可兩兩建立共 4 條 vpn ... (因為封包切割是看路徑中最小 MTU)
所以到這 4 條線時 , 就可以依權值或頻寬來分開跑


以上功能自己架 linux 辦不到的應該是 dns 的偷改答案
不過 ddns + bind view 搭配 to ns  nat , 應該有機會 (若有實做告訴小弟成不成功就好)
ps : 其實那些設備都是 linux base ... 只能說 .. 程式是人寫出來的
(有不少機會能一窺內部秘密 .. 只是都沒去 google 怎架設這功能了 .. 又何必費力 ..)