打造 Linux下的家居網絡(下)



贊助商連結


CCH
2001-08-24, 01:44 PM
打造 Linux下的家居網絡(下)
自製 Linux 家居網絡不求人 (下)

載入需要的Module作防火牆
ipchain除了可作為防火牆之外,也是分享網絡的一套實用工具。使用ipchain是在Kernel中建立ipmasquerading的modules。而因為要做Gateway,所以關於Routing,IPsharper亦需使用。
註:要用superuser的身份進入/user/src/linux的目錄,用make menuconfig或make xconfig,在選擇完成後請儲存設定及用:
"make dep","make clear"及"make bzImage" 因為有modules的改動,所以同時要做 "make modules"及"make modules_install" 你所compile的新modules將會放入/lib/modules/2.XX(與核心號碼對應)的目錄內。

採用insmod指令載入module
由於今天有很多的distributions己經預定使用者將之作為gateway等伺服器,所以這些mobdules多數己經預早為使用者compile好了。所以在Compile之前可以試試將他們用指令"insmod"載上看看。幾個要用的modules分別是:

1. ip_masq_user 2. ip_masq_raudio 3. ip_masq_ftp 4. ip_masq_irc 5. ip_masq_vdoline(如果你要用vdoline這玩意)

還有兩個,一個是給玩quake遊戲,另一個是給cuseeme(這個是網上視像工具),這些modules全部會放在你的/lib/modules/2.2XX/ipv4目錄之中。

加入必需參數
驅使系統在啟動時自動掛上上述的Modules。利用/etc/rc.d/rc.local是不錯的主意,rc.local是系統中最後的一個啟動程序,只要用文字編輯加入下面的句子便可以:

/sbin/insmod ip_masq_user /sbin/insmod ip_masq-raudio /sbin/insmod ip_masq_ftp /sbin/insmod ip_masq_irc

如果不想寫,也可以試用echo這個小玩意。 $echo "/sbin/insmod ip_masq_ftp" >> rc.local

這樣會將括起的整句寫下rc.local檔案的最後一行,記著要用兩個">",如果一個會overwrite整個rc.local的內容,用上述方法重複將每一行echo入rc.local內吧!

使用新編譯的核心
如果你的Distribution並未為仔預先編譯modules,那麼你就要如上述的編譯核心及安裝modules。而新製作出來的壓縮核心會放在 /usr/src/linux/arch/i386/boot 當中。將這個bzImage連結,或移到 /boot 目錄之中。將修改 /etc/lilo.conf 中的設定,加上新的一段指向核心再用 "lilo -v -v -v" 灌入 Master Boot Record (MBR)。

ipchain 的設定
ipchain 的功能主要的調節防火牆的防護功能,分別對進去及轉傳部可以調節。當然在家中使用的防火牆並不需要太複習的設定,下面有二個基本的設定可供參考:

給 PPPO 使用的 #!/bih/sh echo 1 > /proc/sys/net/ipv4/ip_forward; /sbin/ipchains -A forward -s 192.168.0.0/24 -j MASQ 給 Ethernet 使用的 #!/bin/sh echo 1 > /proc/sys/net/ipv4/ip_forward; /sbin/ipchains -A forward -s 192.168.0.0/24 -j MASQ -i eth0

上述兩個例子的頭一句是一樣的, echo "1" 到 "ip_forward" 是令到 ip_forward 生效的。因為系統中的預設是 "0",意即不使用 ip forward。

第二句只有最尾的一段不同,當中的 "A" 代表 ipchains 的規則會對下來的一段發生作用,而 "s" 代表 source 其支配的 IP 地址或 SubMark。在例子中只用了 192.168.0.0 - 192.168.0.24,當然你可以收窄為 192.168.0.0/5 也可以,視乎你的需要而定。

運用Shell Script設定
使用上述的 ipchain 腳本 (shell script),以往我會把它儲在一個名為 IP 的檔案,再用 SuperUser 的身份將它變成一個可以執行的檔案。但在今天已經有一個新的 Module 名為 IP,那麼最好將之改為其它的名稱,避免混淆,不如改它為 homenet。

要使用 homenet 這個 shell script,我們需要將它改為一個可以執行的檔案:

$chmod +x homenet

我們將檔案放在/sbin 目錄之內(這處多放置一般網絡有關的指令)。要令它順利的執行,一定要在上述ip_masquerade 的 Modules 載入之後執行。

我們可以將它寫入 /etc/rc.d/rc/local 之內,但定要在上述 ip_masquerade 之後,情況如下:

/sbin/insmod ip_masq_user /sbin/insmod ip_masq_user /sbin/insmod ip_masq_randio /sbin/insmod ip_masq_irc /sbin/home-net

最後儲存資料
修改完畢後將之儲存,那麼在下次啟動系統時便會順序的啟動。這個設定的功能是不會因為對外連接介面的 IP 而改變的,無論是 forward 或 Routing。當然對外的介面失效,也沒有辦法送出任何的 TCP/UDP packet,那便要修改對介面的資料,當修改完畢後,只要將 Network 的功能重新啟動一次便可。

$/etc/rc.d/init.d/network restart. #redhat, mandrake user 或 $/etc/init.d/networking restart #debian user 也可以這樣(雖然只是暫時性,在關機後修改便會失效): $ ifconfig eth0 (IP 號碼) $ route add default gw (gateway IP號碼) 如果是使用"ppp-on"script的,請在上面"/sbin/insmod ip_masq_user"之前加: /etc/ppp/ppp-on

至此,一切伺服器方面的設定已經完成了,下一步是設定Windows客戶端的工作,筆者在這裡就省略不談讓各位自行跟據上述指定的資料來設定了。

編輯部 2001-04-13 12:01 2000 PCWeekly OnLine.

贊助商連結


ysb
2003-05-25, 02:59 PM
感謝分享