【教學】Linux 多網卡NAT主機實做

顯示結果從第 1 筆 到 5 筆,共計 5 筆
  1. #1
    Kree linux_xp 的大頭照
    註冊日期
    2002-01-19
    討論區文章
    2,655

    【教學】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

    打這樣就會通了(注意大小寫是有差別的):
    echo "1" > /proc/sys/net/ipv4/ip_forward

    modprobe ip_tables
    modprobe ip_nat_ftp

    modprobe ip_conntrack
    modprobe ip_conntrack_ftp
    modprobe ip_conntrack_irc

    iptables -t nat -A POSTROUTING -o eth0 -s 192.168.11.0/24 -j MASQUERADE
    但插多片網卡,反而全部不會通.....

    nat表在多片網卡環境,已經不適用了,需要額外設定filter表

    iptables -A FORWARD -i eth1 -o eth0 -s 192.168.11.0/24 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

    iptables -A FORWARD -i eth0 -o eth1 -s -m state --state ESTABLISHED,RELATED -j ACCEPT

    因為iptables 輸入的資料是暫存於記憶體,重開機就會消失

    為避免每次開機都要打一次,可寫入/etc/rc.d/rc.local 這個檔
    這個檔類似windows的啟動目錄...

    整個來說,全部的設定為:
    echo "1" > /proc/sys/net/ipv4/ip_forward

    modprobe ip_tables
    modprobe ip_nat_ftp

    modprobe ip_conntrack
    modprobe ip_conntrack_ftp
    modprobe ip_conntrack_irc

    iptables -t nat -A POSTROUTING -o eth0 -s 192.168.11.0/24 -j MASQUERADE
    iptables -t nat -A POSTROUTING -o eth0 -s 192.168.22.0/24 -j MASQUERADE
    iptables -t nat -A POSTROUTING -o eth0 -s 192.168.33.0/24 -j MASQUERADE

    iptables -A FORWARD -i eth1 -o eth0 -s 192.168.11.0/24 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

    iptables -A FORWARD -i eth0 -o eth1 -s -m state --state ESTABLISHED,RELATED -j ACCEPT

    iptables -A FORWARD -i eth2 -o eth0 -s 192.168.22.0/24 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

    iptables -A FORWARD -i eth0 -o eth2 -s -m state --state ESTABLISHED,RELATED -j ACCEPT

    iptables -A FORWARD -i eth3 -o eth0 -s 192.168.33.0/24 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

    iptables -A FORWARD -i eth0 -o eth3 -s -m state --state ESTABLISHED,RELATED -j ACCEPT

    其實很多地方都是重複的,只有號碼改一下,如果裝的網卡不只三片,請依樣話葫蘆吧。

    iptables功能很強大,若要進階設定DMZ,或甚至 多DMZ,都是可以辦到的。


    這整個方法,小弟有實做過的,保證100%可以用。

    這個Linux 多網卡 NAT主機,可以24小時服務,絕不會熱當(風扇那麼大顆會當才怪),效率一級棒,免swith,因為通道全部都是 100M 直連的,效能極高,封包穿透數肯定比市面任何一台頻寬分享器還多。


    但是有個缺點,因為網卡跨網段,所以區網內的網路芳鄰不會通,不過沒關係,利用Linux順便架samba就好了。


    指令是抄書的,不過有改過,因為書裡,在這一段有個地方怪怪的:
    iptables -A FORWARD -i eth1 -o eth0 -s 192.168.11.0/24 --sport 1024:65535 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    iptables 會回報說 --sport 為 is unKnow,不明指令.....

    請問有大大知道,--sport正確的格式是什麼嗎?



  2. #2
    會員
    註冊日期
    2001-07-19
    所在地區
    adsl
    討論區文章
    12
    好巧~
    昨晚hub故障,正想拿手邊跑web的linux架nat試試看
    今天看書搞了一下午卻沒成果,待會再來試一次看看^^

  3. #3
    Kree linux_xp 的大頭照
    註冊日期
    2002-01-19
    討論區文章
    2,655
    補充資料:

    同時運行多張網卡,用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伺服器,不用白不用。


  4. #4
    會員
    註冊日期
    2001-09-29
    討論區文章
    117
    --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
    這段是解釋進來的為 eth1 出去的為 eth0 來源為 192.168.11.0/255.255.255.0 來源的
    source port 介於 1024:65535 並且 tcp / udp 旗標為 NEW,ESTABLISHED,RELATED 就讓封包
    通過 (FORWARD)

    錯誤的地方是你少一個 -p tcp or -p udp ... 所以它不知道要過濾的 port 是 tcp 還是 udp

  5. #5
    會員
    註冊日期
    2004-05-06
    討論區文章
    21
    --sport 來源 port
    --dport 目的 port



類似的主題

  1. 【求助】NAT主機
    作者:pat6626 所在討論版:-- 網 路 技 術 版
    回覆: 4
    最後發表: 2003-10-03, 10:45 AM
  2. 【教學】在Red Hat 7.3上建置 Linux Virtual Server (NAT Mode
    作者:ADJ 所在討論版:-- FreeBSD & Linux 討 論 版
    回覆: 0
    最後發表: 2002-09-23, 08:48 PM
  3. NT主機 和Linux主機??
    作者:yocha 所在討論版:☉ -- 虛 擬 主 機 討 論 版
    回覆: 9
    最後發表: 2002-09-14, 11:15 AM
  4. 【教學】利用 Linux NAT 做 Static-routes
    作者:ADJ 所在討論版:-- FreeBSD & Linux 討 論 版
    回覆: 0
    最後發表: 2002-05-02, 10:27 PM

 

nat server 主機

發表文章規則

  • 不可以發表新主題
  • 不可以回覆文章
  • 不可以上傳附加檔案
  • 不可以編輯自己的文章
  •