本發(fā)明涉及Iptables/Netfiler領(lǐng)域,尤其涉及一種高效的ip地址匹配方法。
背景技術(shù):
::Iptables/Netfilter作為L(zhǎng)inux系統(tǒng)的防火墻實(shí)現(xiàn),除了提供基本的包過濾功能外,也實(shí)現(xiàn)了諸如連接追蹤、NAT等高級(jí)的網(wǎng)絡(luò)功能。Iptables/Netfilter通過順序匹配用戶定義的規(guī)則集,來實(shí)現(xiàn)對(duì)數(shù)據(jù)包的處理。規(guī)則集中的規(guī)則由<match,target>兩部分組成,match描述匹配條件,target表示匹配match時(shí)對(duì)數(shù)據(jù)包執(zhí)行的操作。實(shí)際的網(wǎng)絡(luò)環(huán)境中,數(shù)據(jù)包的匹配條件里,ip地址的匹配是最為基礎(chǔ),匹配最頻繁一種操作。Iptables每條規(guī)則可以在match部分指定以個(gè)ip地址+子網(wǎng)掩碼的方式實(shí)現(xiàn)ip地址的匹配。這種方式在簡(jiǎn)單的網(wǎng)絡(luò)環(huán)境中具有易于理解、方便配置等優(yōu)點(diǎn)。但在復(fù)雜的網(wǎng)絡(luò)環(huán)境種,往往具有較多的子網(wǎng),這就需要大量的iptables的規(guī)則來進(jìn)行配置。由于netfilter是順序執(zhí)行規(guī)則集中的規(guī)則,這種規(guī)則的增加會(huì)明顯的降低netfilter的性能。而且在需要對(duì)單個(gè)ip或無法用掩碼表示的ip段時(shí)配置時(shí),則會(huì)進(jìn)一步增加規(guī)則的數(shù)量。技術(shù)實(shí)現(xiàn)要素:本發(fā)明實(shí)施例提供了一種高效的ip地址匹配方法和裝置,通過iptables中建立新的ip結(jié)構(gòu)ip-range,使得在一條規(guī)則中表述大量的ip匹配信息,以減少iptables規(guī)則數(shù)量,提高iptables的匹配規(guī)則,解決了現(xiàn)有的iptables規(guī)則過多造成明顯降低netfilter性能和需要對(duì)單個(gè)ip或無法用掩碼表示的ip段時(shí)配置時(shí)進(jìn)一步增加規(guī)則數(shù)量的技術(shù)問題。本發(fā)明實(shí)施例提供了一種高效的ip地址匹配方法,包括:通過預(yù)置的若干組ip最小值和ip最大值在Iptables模塊中建立若干個(gè)相應(yīng)的ip結(jié)構(gòu)ip-range;將若干個(gè)所述ip結(jié)構(gòu)ip-range傳遞至netfilter;netfilter根據(jù)接收到的若干個(gè)所述ip結(jié)構(gòu)ip-range對(duì)需要處理的數(shù)據(jù)包中的ip地址進(jìn)行匹配。優(yōu)選地,在通過預(yù)置的若干組ip最小值和ip最大值在Iptables模塊中建立若干個(gè)相應(yīng)的ip結(jié)構(gòu)ip-range之后,在將若干個(gè)所述ip結(jié)構(gòu)ip-range傳遞至netfilter之前還包括:在Iptables模塊中對(duì)有重復(fù)或者有重疊的所述ip結(jié)構(gòu)ip-range進(jìn)行合并。優(yōu)選地,在在Iptables模塊中對(duì)有重復(fù)或者有重疊的所述ip結(jié)構(gòu)ip-range進(jìn)行合并之后,在將若干個(gè)所述ip結(jié)構(gòu)ip-range傳遞至netfilter之前還包括:對(duì)合并后的若干個(gè)所述ip結(jié)構(gòu)ip-range進(jìn)行排序。優(yōu)選地,對(duì)合并后的若干個(gè)所述ip結(jié)構(gòu)ip-range進(jìn)行排序具體為:對(duì)合并后的若干個(gè)所述ip結(jié)構(gòu)ip-range進(jìn)行升序排列。優(yōu)選地,netfilter根據(jù)接收到的若干個(gè)所述ip結(jié)構(gòu)ip-range對(duì)需要處理的數(shù)據(jù)包中的ip地址進(jìn)行匹配具體為:netfilter對(duì)需要處理的數(shù)據(jù)包中的ip地址分別在接收到的若干個(gè)所述ip結(jié)構(gòu)ip-range中通過二分查找進(jìn)行匹配。本發(fā)明實(shí)施例提供了一種高效的ip地址匹配裝置,包括:結(jié)構(gòu)建立單元,用于通過預(yù)置的若干組ip最小值和ip最大值在Iptables模塊中建立若干個(gè)相應(yīng)的ip結(jié)構(gòu)ip-range;傳遞單元,用于將若干個(gè)所述ip結(jié)構(gòu)ip-range傳遞至netfilter;netfilter匹配單元,用于根據(jù)接收到的若干個(gè)所述ip結(jié)構(gòu)ip-range對(duì)需要處理的數(shù)據(jù)包中的ip地址進(jìn)行匹配。優(yōu)選地,所述高效的ip地址匹配裝置還包括:合并單元,用于在Iptables模塊中對(duì)有重復(fù)或者有重疊的所述ip結(jié)構(gòu)ip-range進(jìn)行合并。優(yōu)選地,所述高效的ip地址匹配裝置還包括:排序單元,用于對(duì)合并后的若干個(gè)所述ip結(jié)構(gòu)ip-range進(jìn)行排序。優(yōu)選地,所述排序單元具體用于:對(duì)合并后的若干個(gè)所述ip結(jié)構(gòu)ip-range進(jìn)行升序排列。優(yōu)選地,所述netfilter匹配單元具體用于:netfilter對(duì)需要處理的數(shù)據(jù)包中的ip地址分別在接收到的若干個(gè)所述ip結(jié)構(gòu)ip-range中通過二分查找進(jìn)行匹配。從以上技術(shù)方案可以看出,本發(fā)明實(shí)施例具有以下優(yōu)點(diǎn):1、本發(fā)明實(shí)施例提供了一種高效的ip地址匹配方法和裝置,通過iptables中建立新的ip結(jié)構(gòu)ip-range,使得在一條規(guī)則中表述大量的ip匹配信息,以減少iptables規(guī)則數(shù)量,提高iptables的匹配規(guī)則,解決了現(xiàn)有的iptables規(guī)則過多造成明顯降低netfilter性能和需要對(duì)單個(gè)ip或無法用掩碼表示的ip段時(shí)配置時(shí)進(jìn)一步增加規(guī)則數(shù)量的技術(shù)問題,使得ip地址匹配更加高效。2、本發(fā)明實(shí)施例提供了一種高效的ip地址匹配方法,對(duì)ip結(jié)構(gòu)ip-range進(jìn)行升序排列,通過二分查找對(duì)ip地址進(jìn)行匹配,使得時(shí)間復(fù)雜度是O(logn),實(shí)現(xiàn)了ip地址的高效匹配。附圖說明為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其它的附圖。圖1為本發(fā)明實(shí)施例提供了一種高效的ip地址匹配方法的第一實(shí)施例的結(jié)構(gòu)示意圖;圖2為本發(fā)明實(shí)施例提供了一種高效的ip地址匹配方法的第二實(shí)施例的結(jié)構(gòu)示意圖;圖3為本發(fā)明實(shí)施例提供了一種高效的ip地址匹配裝置的第一實(shí)施例的結(jié)構(gòu)示意圖;圖4為本發(fā)明實(shí)施例提供了一種高效的ip地址匹配裝置的第二實(shí)施例的結(jié)構(gòu)示意圖。具體實(shí)施方式本發(fā)明實(shí)施例提供了一種高效的ip地址匹配方法和裝置,通過iptables中建立新的ip結(jié)構(gòu)ip-range,使得在一條規(guī)則中表述大量的ip匹配信息,以減少iptables規(guī)則數(shù)量,提高iptables的匹配規(guī)則,解決了現(xiàn)有的iptables規(guī)則過多造成明顯降低netfilter性能和需要對(duì)單個(gè)ip或無法用掩碼表示的ip段時(shí)配置時(shí)進(jìn)一步增加規(guī)則數(shù)量的技術(shù)問題,使得ip地址匹配更加高效。為使得本發(fā)明的發(fā)明目的、特征、優(yōu)點(diǎn)能夠更加的明顯和易懂,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,下面所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而非全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其它實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。請(qǐng)參閱圖1,本發(fā)明實(shí)施例提供了一種高效的ip地址匹配方法的第一實(shí)施例,包括:101,通過預(yù)置的若干組ip最小值和ip最大值在Iptables模塊中建立若干個(gè)相應(yīng)的ip結(jié)構(gòu)ip-range;在本發(fā)明實(shí)施例中,首先需要通過預(yù)置的若干組ip最小值和ip最大值在Iptables模塊中建立若干個(gè)相應(yīng)的ip結(jié)構(gòu)ip-range,需要說明的是,ip結(jié)構(gòu)ip-range一般為連續(xù)的整數(shù)區(qū)間,通過區(qū)間的兩個(gè)臨界值確定,一組ip最大值和ip最小值建立一個(gè)ip結(jié)構(gòu)ip-range,其中ip結(jié)構(gòu)ip-range的建立過程可以在Iptables模塊的match中進(jìn)行,本發(fā)明實(shí)施例中建立的ip結(jié)構(gòu)ip-range是對(duì)現(xiàn)有的ip結(jié)構(gòu)進(jìn)行優(yōu)化,使得一條規(guī)則可以表述靈活的表示多個(gè)ip地址,以下不再贅述。102,將若干個(gè)ip結(jié)構(gòu)ip-range傳遞至netfilter;在本發(fā)明實(shí)施例中,在通過預(yù)置的若干組ip最小值和ip最大值在Iptables模塊中建立若干個(gè)相應(yīng)的ip結(jié)構(gòu)ip-range之后,還需要將若干個(gè)ip結(jié)構(gòu)ip-range傳遞至netfilter,實(shí)現(xiàn)命令的傳遞。103,netfilter根據(jù)接收到的若干個(gè)ip結(jié)構(gòu)ip-range對(duì)需要處理的數(shù)據(jù)包中的ip地址進(jìn)行匹配;在本發(fā)明實(shí)施例中,在將若干個(gè)ip結(jié)構(gòu)ip-range傳遞至netfilter之后,還需要netfilter根據(jù)接收到的若干個(gè)ip結(jié)構(gòu)ip-range對(duì)需要處理的數(shù)據(jù)包中的ip地址進(jìn)行匹配。請(qǐng)參閱圖2,本發(fā)明實(shí)施例提供了一種高效的ip地址匹配方法的第二實(shí)施例,包括:201,通過預(yù)置的若干組ip最小值和ip最大值在Iptables模塊中建立若干個(gè)相應(yīng)的ip結(jié)構(gòu)ip-range;在本發(fā)明實(shí)施例中,首先需要通過預(yù)置的若干組ip最小值和ip最大值在Iptables模塊中建立若干個(gè)相應(yīng)的ip結(jié)構(gòu)ip-range。202,在Iptables模塊中對(duì)有重復(fù)或者有重疊的ip結(jié)構(gòu)ip-range進(jìn)行合并;在本發(fā)明實(shí)施例中,在通過預(yù)置的若干組ip最小值和ip最大值在Iptables模塊中建立若干個(gè)相應(yīng)的ip結(jié)構(gòu)ip-range之后,還需要在Iptables模塊中對(duì)有重復(fù)或者有重疊的ip結(jié)構(gòu)ip-range進(jìn)行合并,從而將不同ip結(jié)構(gòu)ip-range之間重復(fù)部分去掉,將若干個(gè)重疊的ip結(jié)構(gòu)優(yōu)化成兩兩不相交的ip結(jié)構(gòu)有效避免了ip結(jié)構(gòu)ip-range的相同部分的重復(fù)匹配,提高了ip地址的匹配效率。203,對(duì)合并后的若干個(gè)ip結(jié)構(gòu)ip-range進(jìn)行升序排列;在本發(fā)明實(shí)施例中,在在Iptables模塊中對(duì)有重復(fù)或者有重疊的ip結(jié)構(gòu)ip-range進(jìn)行合并之后,還需要對(duì)合并后的若干個(gè)ip結(jié)構(gòu)ip-range進(jìn)行升序排列,升序排列是為了使合并后的ip結(jié)構(gòu)ip-range中整數(shù)(實(shí)際上是ip地址)升序排列,為了實(shí)現(xiàn)之后的二分查找,需要說明的是,步驟203中的若干可能與步驟201中的若干指代數(shù)量不同,因?yàn)閷?duì)ip結(jié)構(gòu)ip-range進(jìn)行了合并。204,將若干個(gè)ip結(jié)構(gòu)ip-range傳遞至netfilter;在本發(fā)明實(shí)施例中,在對(duì)合并后的若干個(gè)ip結(jié)構(gòu)ip-range進(jìn)行升序排列之后,還需要將若干個(gè)ip結(jié)構(gòu)ip-range傳遞至netfilter,步驟204中的若干與步驟203中的若干指代數(shù)量相同。205,netfilter對(duì)需要處理的數(shù)據(jù)包中的ip地址分別在接收到的若干個(gè)ip結(jié)構(gòu)ip-range中通過二分查找進(jìn)行匹配;在本發(fā)明實(shí)施例中,在將若干個(gè)ip結(jié)構(gòu)ip-range傳遞至netfilter之后,還需要netfilter對(duì)需要處理的數(shù)據(jù)包中的ip地址分別在接收到的若干個(gè)ip結(jié)構(gòu)ip-range中通過二分查找進(jìn)行匹配,使得時(shí)間復(fù)雜度是O(logn),實(shí)現(xiàn)了ip地址的高效匹配,其中二分查找為現(xiàn)有技術(shù),此處不再贅述。請(qǐng)參閱圖3,本發(fā)明實(shí)施例提供了一種高效的ip地址匹配裝置的第一實(shí)施例,包括:結(jié)構(gòu)建立單元301,用于通過預(yù)置的若干組ip最小值和ip最大值在Iptables模塊中建立若干個(gè)相應(yīng)的ip結(jié)構(gòu)ip-range;傳遞單元302,用于將若干個(gè)ip結(jié)構(gòu)ip-range傳遞至netfilter;netfilter匹配單元303,用于根據(jù)接收到的若干個(gè)ip結(jié)構(gòu)ip-range對(duì)需要處理的數(shù)據(jù)包中的ip地址進(jìn)行匹配。請(qǐng)參閱圖4,本發(fā)明實(shí)施例提供了一種高效的ip地址匹配裝置的第二實(shí)施例,包括:結(jié)構(gòu)建立單元401,用于通過預(yù)置的若干組ip最小值和ip最大值在Iptables模塊中建立若干個(gè)相應(yīng)的ip結(jié)構(gòu)ip-range;合并單元402,用于在Iptables模塊中對(duì)有重復(fù)或者有重疊的ip結(jié)構(gòu)ip-range進(jìn)行合并。排序單元403,用于對(duì)合并后的若干個(gè)ip結(jié)構(gòu)ip-range進(jìn)行升序排列。傳遞單元404,用于將若干個(gè)ip結(jié)構(gòu)ip-range傳遞至netfilter;netfilter匹配單元405,用于對(duì)需要處理的數(shù)據(jù)包中的ip地址分別在接收到的若干個(gè)ip結(jié)構(gòu)ip-range中通過二分查找進(jìn)行匹配。所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過程,在此不再贅述。在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤、移動(dòng)硬盤、只讀存儲(chǔ)器(ROM,Read-OnlyMemory)、隨機(jī)存取存儲(chǔ)器(RAM,RandomAccessMemory)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。以上所述,以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3