因為家裡寬頻分享器太爛了,一天到晚熱當重開,所以乾脆用現成的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 會回報說 --sport 為 is unKnow,不明指令.....iptables -A FORWARD -i eth1 -o eth0 -s 192.168.11.0/24 --sport 1024:65535 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
請問有大大知道,--sport正確的格式是什麼嗎?
書籤