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