Kree ![]() | 【教學】Linux 多網卡NAT主機實做 因為家裡寬頻分享器太爛了,一天到晚熱當重開,所以乾脆用現成的Linux伺服器當多網卡NAT主機。 實做方法,提供有需要的網友做參考: OS:Linux (Fedora core 2) 規劃: -------------------------------------------- WAN端: 主機板內建網卡 X 1 eth0 LAN端: PCI 100M 網卡 X 3 eth1 eth2 eth3 共可提供三台內部區網的電腦使用 數量沒有特殊規定,只要主機板還插的下就可以 另外因為是網路卡連網路卡,所以網路線皆需要跳線。 網卡安裝方式說明: --------------------------------------------- 1.市面上網卡多屬 RTL8139D 晶片(螃蟹晶片) 若全部都是這種的,建議不可一次全部插上,不然會搞不清楚哪塊是哪塊,因為Linux只認晶片和MAC地址,不認插槽.... 2.一次插一片,開機後記下該網卡的MAC地址,然後關機再插另一片,直到全部插滿 3.建議進入X11,用[系統設定]裡面的[網路]來修改網卡設定,會比較方便。 修改完不必重開機 到文字模式下指令:/etc/rc.d/init.d/network restart 即可。 分配 IP 範例: ------------------------------------------- WAN端 eth0: 為ISP給的真實IP,設定方法同寬頻分享器。 LAN端 因為iptables的需要,每塊網卡,網段皆須不同,否則不會通 eth1 :192.168.11.1 /24 eth2 :192.168.22.1 /24 eth3 :192.168.33.1 /24 預設閘道皆為 eth0 的 ip LAN端的windows電腦設定(手動指定): 插eth1 網卡孔的電腦 IP只要同網段就行,如:192.168.11.2 /24 插哪個孔,閘道器就是那個孔,如:插eth1,閘道器就是eth1 其於電腦依此類推 設定iptables:(這才是重頭戲) ---------------------------------------------- 前面講的都是硬體方面 Linux 真正實現NAT服務,靠的是iptables這個指令 如果只是插一片對內網卡,然後再接HUB 打這樣就會通了(注意大小寫是有差別的): 引用:
nat表在多片網卡環境,已經不適用了,需要額外設定filter表 引用:
因為iptables 輸入的資料是暫存於記憶體,重開機就會消失 為避免每次開機都要打一次,可寫入/etc/rc.d/rc.local 這個檔 這個檔類似windows的啟動目錄... 整個來說,全部的設定為: 引用:
其實很多地方都是重複的,只有號碼改一下,如果裝的網卡不只三片,請依樣話葫蘆吧。 iptables功能很強大,若要進階設定DMZ,或甚至 多DMZ,都是可以辦到的。 這整個方法,小弟有實做過的,保證100%可以用。 ![]() 這個Linux 多網卡 NAT主機,可以24小時服務,絕不會熱當(風扇那麼大顆會當才怪),效率一級棒,免swith,因為通道全部都是 100M 直連的,效能極高,封包穿透數肯定比市面任何一台頻寬分享器還多。 ![]() 但是有個缺點,因為網卡跨網段,所以區網內的網路芳鄰不會通,不過沒關係,利用Linux順便架samba就好了。 指令是抄書的,不過有改過,因為書裡,在這一段有個地方怪怪的: 引用:
![]() 請問有大大知道,--sport正確的格式是什麼嗎? | ||||
回覆 |
會員 ![]() | 好巧~ 昨晚hub故障,正想拿手邊跑web的linux架nat試試看 今天看書搞了一下午卻沒成果,待會再來試一次看看^^ |
回覆 |
Kree ![]() | 補充資料: 同時運行多張網卡,用X11裡面的 system-config-network 去設定比較方便: ![]() 因為網路晶片都是RTL8139D的,所以要判斷哪一個PCI插槽的網卡,到底是eth幾,要靠MAC地址: ![]() 跳線圖解資料: ![]() 把正常的網路線其中一頭,剪掉重壓,1-3對調,2-6對調,就是跳線了。 電費估計: --------------------------------- 台電電費表 夏月每度約 3.3元 假設Linux主機,平均耗電 150w 每月電費:0.15 * 24 * 30 * 3.3 = 357 元 普通的頻寬分享器,耗電大約30w以下,所以用Linux主機當NAT,是比較花電費的。 僅適合追求超高效能的人,或是本身就有架設WEB伺服器,不用白不用。 ![]() |
回覆 |
會員 ![]() | --sport 是 source port 、 --dport 是 destination port 語法: iptables -A FORWARD -i eth1 -o eth0 -s 192.168.11.0/24 --sport 1024:65535 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT source port 介於 1024:65535 並且 tcp / udp 旗標為 NEW,ESTABLISHED,RELATED 就讓封包 通過 (FORWARD) 錯誤的地方是你少一個 -p tcp or -p udp ... 所以它不知道要過濾的 port 是 tcp 還是 udp |
回覆 |
會員 ![]() | --sport 來源 port --dport 目的 port |
回覆 |
|
![]() | ||||
主題 | 主題作者 | 討論版 | 回覆 | 最後發表 |
【教學】Linux Layer 7 Netfilter QOS 實作成功紀錄 (Kernel 2.6.14) | apage | -- 網 路 技 術 版 | 10 | 2011-04-29 07:15 AM |
【教學】Linux cluster建制經驗分享 | Marty | -- FreeBSD & Linux 討 論 版 | 17 | 2006-05-22 11:39 AM |
【教學】Linux Shell 裡一些很少用到卻很有用的指令 | smallway | -- FreeBSD & Linux 討 論 版 | 0 | 2002-11-05 01:40 AM |
【教學】Linux 常用網路指令介紹 | VBird | -- FreeBSD & Linux 討 論 版 | 0 | 2002-07-31 05:28 PM |
XML | RSS 2.0 | RSS |
本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。