由器和防火墻
路由器是一種廣泛運用在IP網(wǎng)段之間的設(shè)備,市場上有許多現(xiàn)成的產(chǎn)品。在應(yīng)用中,我們經(jīng)常將路由器跨接在廣域網(wǎng)和局域網(wǎng)之間,大多數(shù)的路由器產(chǎn)品也就是基于這種需要來設(shè)計的。但是隨著用戶IP網(wǎng)絡(luò)的擴(kuò)展,我們需要一種能夠在多個以太網(wǎng)絡(luò)之間進(jìn)行尋址的路由器,傳統(tǒng)的路由器產(chǎn)品中偶爾有幾款雙以太網(wǎng)絡(luò)接口的,但是這樣的產(chǎn)品價格尤其昂貴,而且要是支持快速以太網(wǎng)絡(luò)應(yīng)用的話價格將是天文數(shù)字;第三層交換機(jī)可以實現(xiàn)這樣的功能,但是第三層交換機(jī)也不是便宜的家伙。
路由器工作的時候,根據(jù)它的某個端口收到的數(shù)據(jù)包的目的IP地址,查詢路由器自己的路由表,然后決定將數(shù)據(jù)包轉(zhuǎn)發(fā)到相應(yīng)的端口。路由器的路由表有幾種:一種是根據(jù)路由器自己的每個端口IP地址和子網(wǎng)掩碼計算出來的路由,這種路由叫做“固定路由”;第二種是有系統(tǒng)管理員種設(shè)置的到某個子網(wǎng)需要通過某個下一級路由器的路由,這種叫“靜態(tài)路由”;還有就是在網(wǎng)絡(luò)環(huán)境中讓每個路由器都把自己的路由信息廣播出去,讓路由器之間進(jìn)行互相學(xué)習(xí),這樣學(xué)到的路由就叫做“動態(tài)路由”。路由器還會把目的地址不在自己路由表中的數(shù)據(jù)包固定轉(zhuǎn)發(fā)給一個預(yù)先設(shè)定IP地址,這樣的路由設(shè)置又叫“默認(rèn)路由”。在路由匹配的過程中,一般有這樣的優(yōu)先級:固定路由>靜態(tài)路由>動態(tài)路由>默認(rèn)路由。
路由器只會查看IP數(shù)據(jù)包的目的地址,也就是說原則上它是“照單全收”,而且全部轉(zhuǎn)發(fā),除非真的發(fā)不出去了。如果讓路由器在轉(zhuǎn)發(fā)數(shù)據(jù)包的時候,加一項檢查,檢查數(shù)據(jù)包的來源和數(shù)據(jù)包要求的應(yīng)用層服務(wù)類型,根據(jù)預(yù)先設(shè)計的規(guī)則來判定這個數(shù)據(jù)包是應(yīng)該轉(zhuǎn)發(fā)還是作別的處理,這樣這個路由器就不再是一個單純意義上的路由器,而是一種類型的防火墻——包過濾防火墻。
包過濾防火墻可以檢查數(shù)據(jù)包的來源、源端口、目的地址、目的端口,使用的傳輸層協(xié)議類型等項目,根據(jù)檢查的項目的內(nèi)容來匹配一個規(guī)則表,當(dāng)符合規(guī)則表中的定義的時候,就執(zhí)行規(guī)則表事先定義的操作。一般來說,規(guī)則表可以定義這樣的操作:ACCEPT(通過)、NAT(MASQ地址轉(zhuǎn)換)、DENY(丟棄)、REJECT(拒絕,同時回送‘不可用’消息給源端)。
當(dāng)然目前市場上也能買到支持包過濾防火墻的現(xiàn)成產(chǎn)品,但是價格問題還是我們不得不考慮的重要因素。尤其大多數(shù)產(chǎn)品都有許多許可證、性能等方面的限制。
Linux操作系統(tǒng)應(yīng)運IP網(wǎng)絡(luò)而生,除了Linux價格上的優(yōu)勢之外,更吸引人的是它內(nèi)建的強(qiáng)大的網(wǎng)絡(luò)功能,除了做各種Internet上的應(yīng)用服務(wù)之外,Linux還提供了完整的路由器功能和防火墻功能。而它所帶來的系統(tǒng)造價和功能的比例是相當(dāng)誘人的,為什么不一試呢?
Linux系統(tǒng)的準(zhǔn)備
相對于現(xiàn)成的路由器產(chǎn)品,我們把這樣的路由器稱為“軟路由器”,當(dāng)然這樣做出來的路由器性能絕對不會比“硬件路由器”的性能差,我們只要明白比如很多“25××”系列的路由器才只是采用25M主頻的摩托羅拉68030CPU(性能相當(dāng)于Intel 80386)我們就知道了。
用來做“軟件路由器”的Linux系統(tǒng)主機(jī)硬件配置要求并不是太高,用作三五個局域網(wǎng)之間的路由選擇,數(shù)百臺計算機(jī)的話,選用奔騰133以上的主機(jī)就足夠了,當(dāng)然現(xiàn)在的市場上賽楊2或者奔騰4或者其他的CPU也不是很貴;配置64M內(nèi)存,有條件的話可以配置到128M也無所謂;硬盤就不要太大了,否則也是浪費.
關(guān)鍵在于網(wǎng)絡(luò)適配器的配置,Linux系統(tǒng)支持大多數(shù)市場上能見到的以太網(wǎng)絡(luò)適配器,PCI卡的安裝比較簡單,只要內(nèi)核支持,在開機(jī)的時候有多少卡都會被系統(tǒng)正確的識別出來。下面是我在實際使用過的能夠正常工作的網(wǎng)卡:
★Intel EtherExpress Pro PCI100M
★RealTek 8029/8139 PCI 10M/100M
★D-link 系列 (使用Tulip 2114X驅(qū)動) PCI 10M
★ACCTON EN1207 (使用Tulip 2114X驅(qū)動) PCI 100M
★3COM全系列 (PCI/ISA 10M/100M)
★AMD PC-NET 32 PCI 10M
★大部分NE2000兼容網(wǎng)卡,Topstar、Dlink、ACCTON、SN2000等等
★HardLink PCMCIA 筆記本專用網(wǎng)卡 10M
當(dāng)然Linux能支持的網(wǎng)卡遠(yuǎn)遠(yuǎn)不止這些。
將網(wǎng)卡驅(qū)動加掛到Linux中有幾種方法,最常用的是用modprobe系統(tǒng)工具加掛一個內(nèi)核模塊,比如加載一個NE2000兼容網(wǎng)卡的驅(qū)動可以這樣:
#modprobe ne io=0x300
其實大多數(shù)的PCI網(wǎng)卡并不需要指定IO地址范圍,就像加載一個ACCTON的EN1207c網(wǎng)卡可以這樣:
#modprobe tulip
將網(wǎng)卡驅(qū)動編譯到Linux內(nèi)核中是一種最高效的做法,在編譯Linux內(nèi)核的時候,使用
#make menuconfig
代替很多老資料上提到的“#make config”,這樣就會得到一個菜單,在菜單中“Network Device”選項下選定指定的網(wǎng)絡(luò)適配器的驅(qū)動程序,編譯完成以后就會得到一個完整的支持相應(yīng)網(wǎng)卡的Linux內(nèi)核。
對于很多系統(tǒng)只能識別一個的網(wǎng)卡,將第二個以后的網(wǎng)卡參數(shù)寫在/etc/lilo.conf中是最佳做法,這里有一個系統(tǒng)中安裝呢4塊網(wǎng)卡,一個是PCI的RealTek 8139,另外3個是NE2000,這樣的話系統(tǒng)就識別8139網(wǎng)卡以后就不會自動識別后面的三個ISA卡,我們需要在/etc/lilo.conf中加上這樣一句:
append=-ether=3,0x240,eth1 ether=11,0x300,eth2 ether=4,0x260,eth3-
在編譯內(nèi)核的過程中,我們可以在Network option中選擇“optimize as router not host”,這樣系統(tǒng)就會按照路由器而不是主機(jī)的方式進(jìn)行優(yōu)化,同時,還可以根據(jù)具體的需要選擇上“ Fast switching”和“ Forwarding between high speed interfaces”以及“ advanced router”。如果我們還計劃在這個機(jī)器上實現(xiàn)包過濾防火墻,那么選擇上“ firewalling”和“ IP: masquerading”以及與“IP MASQ”相關(guān)的選擇項。
注意查看開機(jī)的系統(tǒng)提示或者使用dmesg命令可以看到系統(tǒng)是不是正常識別并且啟動相應(yīng)的網(wǎng)卡的驅(qū)動程序,在上面例子中提到的具有一個Realtek8139網(wǎng)卡,三個NE2000網(wǎng)卡的機(jī)器上我們能夠看到這樣的情況:
rtl8139.c:v1.07 5/6/99 Donald Becker http://cesdis.gsfc.nasa.gov/linux/drivers/r
tl8139.html
eth0: RealTek RTL8139 Fast Ethernet at 0x6000, IRQ 9, 00:e0:4c:dd:5f:85.
ne.c:v1.10 9/23/94 Donald Becker (becker@cesdis.gsfc.nasa.gov)
NE*000 ethercard probe at 0x240: 00 40 05 1f 60 9a
eth1: NE2000 found at 0x240, using IRQ 3.
NE*000 ethercard probe at 0x300: 00 40 05 22 08 65
eth2: NE2000 found at 0x300, using IRQ 11.
NE*000 ethercard probe at 0x260: 00 40 05 23 59 0f
eth3: NE2000 found at 0x260, using IRQ 4.
然后是配置每個網(wǎng)絡(luò)端口的IP地址,當(dāng)然我們可以使用操作系統(tǒng)的一些對話框來配置第一個網(wǎng)卡的參數(shù),但是一個有經(jīng)驗的網(wǎng)絡(luò)管理員一般是不這樣做的,因為這樣不能配置其他的網(wǎng)卡,我們必須學(xué)會用這個命令來配置第一塊網(wǎng)卡:
#ifconfig eth0 10.3.3.3 netmask 255.255.255.0 broadcast 10.3.3.255
第二塊網(wǎng)卡的名字就是eth1,其他依次是eth2,eth3等等。由于計算機(jī)體系結(jié)構(gòu)的限制,在一個普通PC主板上只有一個PCI控制器,而一個PCI控制器最多只能同時支持4個PCI設(shè)備,當(dāng)然某些專用服務(wù)器上可能有支持兩個以上的PCI控制器。ISA網(wǎng)卡的安裝受到系統(tǒng)中斷號的限制,單CPU的系統(tǒng)中只有16個可用的IRQ號,扣除硬盤、內(nèi)存、鍵盤、顯示卡等硬件已經(jīng)所剩無幾,所以一般也是安裝4個卡,當(dāng)然,雙CPU的系統(tǒng)可以有256個中斷號可用,這樣就寬裕了許多。另外,我們還需要打開Linux系統(tǒng)的IP轉(zhuǎn)發(fā)開關(guān),這一點非常容易,執(zhí)行這一條指令:
echo 1 > /proc/sys/net/ipv4/ip_forward
當(dāng)然這些配置命令最好是放到/etc/rc.d/rc.local中,這樣就不用每次開機(jī)以后重新配置了。
| 共2頁: 1 [2] 下一頁 | ||||
|


