Monday, December 27, 2004

利用一部舊電腦以及Linux建立firewall broaddband router

硬件:
Petium 級CPU、32MB RAM、Floppy Driver、PCI Lan Card兩張,一張連接LAN另一張接ADSL modem.
軟件:
http://leaf.sourceforge.net
Bering uClib version.
http://leaf.sourceforge.net/bering-uclibc/

概觀:
LEAF(Linux Embedded Appliance Firewall)前身為LRP(Linux Router Porject)發展而來,目的利用Linux開發出一些嵌入式防火墻應用,現有多個分支。是次使用Bering-
uClibc(文中簡寫為uCB 或直接寫為Bering,但勿與另一分支Bering混洧)。
uCB 運行方式為利用floppy boot機,並把所有要運行的內容以RAM Disk的形式運行。由於floppy用的格式為fat可在windows或Linux下直接讀寫,方便增刪任何套件。每次開機時引導程序先由 initrd.lrp -- initial ram disk 建立了基本根區/ 載入核心,並讀取uCB設置文件決定所要載入的軟件包,最後完成Linux的開機投入使用。而使用方式與一般Linux相同(基於Debian)。
文 中所有內容均參考自uCB的說明文件及網上搜索,依據一次建立經驗回憶所寫,最後把啟動及存放套件(Bering-uClibc)/軟件包 (packages)介質由軟碟轉為CompactFlash(IDE Harddisk like),一切以此最終環境,故未必與說明文件相同。

建立Bering Disk:
準備無壞磁區的軟碟一張,可在Windows或Linux下完成,過程較簡單
在windows 下運行該exe檔,按指示插入floppy即可。

設定步驟:
1>基本環境:hostname, password, packages, editor,
2>網絡設定: Lan cards, host allow, sshd, httpd
3>防火墻: shorewall
4>ADSL設定: pppoe
5>其它: 参考資料

附>進階安裝:Compact Flash to IDE


用uCB啟動碟開機,可以看出其開機過程與一般Linux大致相同。當出現提示輸入root密碼後直接按enter進入,Bering 提供設定介面設置(類似cisco switch 19xx ios,為預設方式,可按q離開),但亦可直接編輯各設定檔。
(較喜歡直接編設定檔,故採用該方式較多)
1>基本環境設定:

包括root密碼、喜愛的文本編輯器、啟動時載入的packages等
更改密碼: 按一般linux下更改password方法
#passwd
please enter your password:
re-enter your password again:

文本編輯器名為e3可以模擬多種方式(vi pico ...),詳見/bin下e3開始之命令。
在~/.profile 中設定 alias vi = e3vi即可


設定啟動時載入的packages:
在開機軟碟中有個名為lrp.cfg的檔案--文字檔,包含有啟動時所需設定的項目,翻查文件得知項目由LRP更名為LEAF後該設置檔亦由lrp.cfg 改為leaf.cfg,並得知lrp.cfg限制較多,項目改用leaf.cfg 兩者大致相同
#mount /dev/fd0 /mnt
#vi /mnt/leaf.cfg
...
.....
LRP="root config etc......"
PKGPATH="/dev/...."
....

其中主要變量有
LRP、 所要在開機時載入之軟件包。句法: LRP=" pkg_name01 pkg_name02 ...." 其中pkg_name01 為存放在開機介質中軟件包之檔案名。例如root.lrp 即為 root,
注意:
1.根據軟件包的性質可分為"必要"和"任選",而且有依附性,即載入某個軟件包必先載入另一個或多個軟件包。
2.因存在依賴故軟件包載入要求按先後順序(
按等號後順序),亦不要重覆載入。
3.其中作為參數之pkg_name01 必須與
開機介質中軟件包之檔案名一致,否則載入失敗,例如 shorewall 因受fat 8.3檔名所限名為shorwall.lrp 故須寫為 LRP="... shorwall ..."
PKGPATH、軟件包存放裝置及文件系統格式
syst_size、root(/) 文件系統大小



Wednesday, December 08, 2004

Some notes about /etc/network/interfaces

關於注釋的使用
/etc/network/interfaces 中加入的注釋似乎只能在每行的行頭開始加入.
例如:
正確:
#comment here!
iface .....
錯誤:
iface .................. # comment in here may cause error : too many parameters for iface line.


該檔案供ifup ifdown 使用,可通過設置一些不同的環境佈局以適應不同的網境要求。
例如:在家中使用靜態ip192.168.0.1 在學校ip 10.0.0.1
iface eth0 inet dhcp

home inet static
ip 192.168.0.50
netmask 255.255.255.0
gateway 192.168.0.1

school inet static
ip 10.0.0.200
netmask 255.255.255.0
gateway 10.0.0.1

#end of /etc/network/interfaces
以後只要在用ifup時加入適當参數便可使用該設定,例:
#ifup eth0=home
使用靜態ip 192.168.0.50 掩碼255.255.255.0 網關192.168.0.1的設定。
若在學校時可用ifup eth0=school,而ip為靜態10.0.0.1
而ifup eth0則為使用dhcp。



Saturday, December 04, 2004

install PCMCIA LAN card in debian woody

Install PCMCIA Card in Debian Woody
OS:

GNU/Linux Debian woody kernel 2.2.20-idepci
Hardward: Texas Instruments Extensa 610D Laptop

Buffalo LPC3-CLX 10/100 Ethernet card PCMCIA

原OS於安裝時已正確安裝 xircom CE3B-100BTX 10/100 ethernet PC Card.因該卡接口延長線接口鬆脫改用 BUFFALO LPC3-CLX 10/100 Ethernet card.但OS未能自動載入該卡所需模組,需經以下各步驟

0.取得系統CardBus控制器信息 -- lspci
debian:/sbin#lspci #系統原已正常使用PCMCIA卡此步可略。亦可以查得PCMCIA卡的芯片型號。
debian:#lspci
:
:
00:04.0 CardBus bridge: Texas Instruments PCI1131 (rev 01)
#由PCMCIA HOW-TO得知支援該控制器.
00:04.1 CardBus bridge: Texas Instruments PCI1131 (rev 01)
:

debian:/sbin#lsmod
Module Size Used by
:
:
ds 6400 0
pcmcia_core 45824 0
:
pcmcia 模組已正確加載,若未能見到與PCMCIA網卡相關的模組,可判定該卡未能識別.


1.取得PCMCIA卡信息 -- cardctl ident
debian:/sbin#cardctl ident #不帶参數得知命令語法 -V: cardctl 版本
Socket 0:
no product info available #未插入任何卡
Socket 1:
product info: "BUFFALO", "LPC3-CLX 10/100 Ethernet","",""
manfid: 0x018a, 0x0301
function:6 (network)

2. 修改 /etc/pcmcia/config
因應需要加入或修改其中的項目,修改原則可参考該生產商提供資料,本例中Buffalo網頁http://buffalo.melcoinc.co.jp/taiou/os/linux/4537.html有以下一段內容:(由此得到啟發去修改...)

Device "axnet_cs" #查看/etc/pcmcia/config檔中早已存在
class "network" module "axnet_cs"

card "BUFFALO LPC3-CLX Fast Ethernet Card"
version "BUFFALO", "LPC3-CLX 10/100 Ethernet"
bind "axnet_cs"
手工輸入card該段。注意:雙引號"... "中的內容必須與cardctl ident 完全一致。

注意: /etc/pcmcia/config檔中, 原已存在一段關於 Buffalo LPC-CLX 10/100 Ethernet Card 的項目, 但發覺其
manfid 與cardctl ident 不同, 此可能是導致未能正確識別原因.


3.再次運行cardctl insert 可先用eject参數移除.
若設置正確,可以見到系統顯示該卡的信息如型號(本例中顯示為Asix AX88190...)或MAC address.
亦可由lsmod得知模組能否改加載.


4.設置 ip address.
edit the /etc/network/interfaces
debian:/etc/network#vi interfaces
# /etc/network/interfaces
# configuration file for ifup(8), ifdown(8)

# The loopback interface
# automatically added when upgrading
auto lo
iface lo inet loopback

# The ethernet NIC
# automatically added when upgrading
auto eth0 #frist ethernet card. auto while bootup may cause conflict.

iface eth0 inet dhcp # use dhcp

auto eth1 #second ethernet card.
iface eth1 inet static #static ip
address 192.168.0.100
netmask 255.255.255.0
gateway 192.168.0.1

use Esc:wq! to save

每次用cardctl insert 或插入PCMCIA LAN Card後,系統cardmgr/pcmcia_core會load適當的模組,調用Script:/etc/pcmica/network,用上述interfaces的設定值去設置網卡.

参考:

PCMCIA-HOWTO by David Hinds Dec2003 v2.119.29
http://pcmcia-cs.sourceforge.net/ftp/doc/PCMCIA-HOWTO.html

Debian 無痛起步法 ( 線上最新版 )
陳漢儀, moto@chuany.net
最後更新日期 : 2002.10.18

http://www.huihoo.com/gnu_linux/debian/tutorial/Debian-Install-Guide.html