本發(fā)明涉及網(wǎng)絡(luò)通信領(lǐng)域,尤其涉及實現(xiàn)NAT(Network Address Translation,網(wǎng)絡(luò)地址轉(zhuǎn)換)的技術(shù)。
背景技術(shù):
NAT是1994年提出的,用以解決ipv4地址資源枯竭的問題。NAT的基本原理是在私網(wǎng)主機(jī)需要訪問公網(wǎng)時才會分配到合法的公網(wǎng)地址,而內(nèi)部互聯(lián)時則使用私網(wǎng)地址。
私網(wǎng)IP地址是指內(nèi)部網(wǎng)絡(luò)或主機(jī)的IP地址,公網(wǎng)IP地址是指在因特網(wǎng)上全球唯一的IP地址。NAT是將IP數(shù)據(jù)報文頭中的IP地址轉(zhuǎn)換為另一個IP地址的過程。
NAT典型的應(yīng)用場景為一對多NAT或者多對多NAT。在這種應(yīng)用場景中,內(nèi)部網(wǎng)絡(luò)的多個主機(jī)端口對(Pri_ip:port)同時訪問公網(wǎng),NAT網(wǎng)關(guān)使用一個或者多個(地址池)公網(wǎng)地址端口對(Pub_ip:port)對其進(jìn)行地址轉(zhuǎn)換,并記錄這種映射關(guān)系。之后,當(dāng)報文從公網(wǎng)發(fā)往私網(wǎng)時,NAT網(wǎng)關(guān)查找地址轉(zhuǎn)換記錄,將報文的目的地址再替換回原來的私網(wǎng)地址,并送回發(fā)出請求的主機(jī)。
為了盡可能有效利用公網(wǎng)ip資源,保證網(wǎng)絡(luò)的互通性,RFC5128提出三種地址映射及過濾模式,分別為:外部地址無關(guān)模式(Endpoint-Independent)、外部地址相關(guān)模式(Address-Dependent)、外部地 址和端口相關(guān)模式(Address and Port-Dependent)。
傳統(tǒng)的方法是使用NAT日志或者地址轉(zhuǎn)換表間接實現(xiàn)映射過濾模式,但兩者均存在缺點。NAT日志的方法存在隨著NAT日志記錄增加,系統(tǒng)開銷越來越大的缺點。而地址轉(zhuǎn)換表則無法靈活配置,不能同時支持多種映射過濾模式,無法滿足用戶的多樣化需求。
技術(shù)實現(xiàn)要素:
本發(fā)明提供一種實現(xiàn)NAT的方法和裝置,解決了私網(wǎng)和公網(wǎng)間的地址轉(zhuǎn)換映射以及訪問控制的技術(shù)問題。
為解決上述技術(shù)問題,本發(fā)明提供了一種實現(xiàn)NAT的方法,包括以下處理過程:
創(chuàng)建映射表和過濾表,并根據(jù)地址映射過濾模式設(shè)置用于查詢映射表的第一鍵值,以及設(shè)置用于查詢過濾表的第二鍵值;所述映射表用于記錄報文從私網(wǎng)到公網(wǎng)的地址轉(zhuǎn)換關(guān)系,所述過濾表用于記錄從公網(wǎng)到私網(wǎng)的地址回溯信息;
當(dāng)報文從私網(wǎng)向公網(wǎng)發(fā)送時,從報文中提取第一鍵值,通過所述第一鍵值獲取公網(wǎng)地址,更新所述映射表中的對應(yīng)映射表項,并將地址回溯信息更新到所述過濾表中的對應(yīng)過濾表項;利用獲取的所述公網(wǎng)地址進(jìn)行地址NAT轉(zhuǎn)換后發(fā)送到公網(wǎng);
當(dāng)報文從公網(wǎng)向私網(wǎng)發(fā)送時,從報文中提取第二鍵值,通過所述第二鍵值查詢所述過濾表;如果查詢到對應(yīng)的過濾表項,則利用過濾表項中的地址回溯信息進(jìn)行地址NAT轉(zhuǎn)換后發(fā)送到私網(wǎng);否則,根據(jù)ACL規(guī)則組進(jìn)行報 文的轉(zhuǎn)發(fā)處理。
優(yōu)選的,所述通過所述第一鍵值獲取公網(wǎng)地址,更新所述映射表中的對應(yīng)映射表項,具體包括:通過所述第一鍵值查詢所述映射表;如果查詢到對應(yīng)的映射表項,讀取該映射表項中的從私網(wǎng)地址到公網(wǎng)地址的轉(zhuǎn)換信息,并將該映射表項的計數(shù)值加一;否則,從公網(wǎng)地址池中提取公網(wǎng)地址,并創(chuàng)建對應(yīng)的映射表項,將從私網(wǎng)地址到公網(wǎng)地址的轉(zhuǎn)換信息寫入該映射表項,將該映射表項的計數(shù)值加一,并創(chuàng)建過濾表項,將該報文的地址回溯信息寫入該過濾表項。
進(jìn)一步的,還包括:創(chuàng)建會話表,所述會話表用于記錄報文在私網(wǎng)和公網(wǎng)之間的地址NAT轉(zhuǎn)換信息;在所述利用獲取的所述公網(wǎng)地址進(jìn)行NAT轉(zhuǎn)換后以及利用過濾表項中的地址回溯信息進(jìn)行地址NAT轉(zhuǎn)換后,還包括:將地址NAT轉(zhuǎn)換信息作為會話表項寫入所述會話表。
進(jìn)一步的,所述創(chuàng)建會話表后還包括:會話表的老化處理,并根據(jù)需要老化的會話表項中的地址NAT轉(zhuǎn)換信息分別觸發(fā)所述映射表和過濾表的老化處理。
優(yōu)選的,所述根據(jù)需要老化的會話表項中的地址NAT轉(zhuǎn)換信息分別觸發(fā)所述映射表和過濾表的老化處理具體包括以下處理過程:根據(jù)需要老化的會話表項中的地址NAT轉(zhuǎn)換信息以及配置的映射過濾模式,查詢所述映射表,若找到對應(yīng)的映射表項,則將該映射表項中的計數(shù)減一;當(dāng)計數(shù)減至零時,刪除該映射表項,并刪除該映射表項關(guān)聯(lián)的過濾表項,回收NAT地址資源。
優(yōu)選的,所述根據(jù)地址映射過濾模式設(shè)置用于查詢映射表的第一鍵值,以及設(shè)置用于查詢過濾表的第二鍵值具體為:
當(dāng)?shù)刂酚成溥^濾模式為地址無關(guān)模式時,所述第一鍵值為:報文源ip和源port,所述第二鍵值為:地址NAT轉(zhuǎn)換后的ip和port;
當(dāng)?shù)刂酚成溥^濾模式為地址相關(guān)模式時,所述第一鍵值為:報文源ip、源port和目的ip,所述第二鍵值為:地址NAT轉(zhuǎn)換后的ip、地址NAT轉(zhuǎn)換后的port和目的ip;
當(dāng)?shù)刂酚成溥^濾模式為地址端口相關(guān)模式時,所述第一鍵值為:報文源ip、源port、目的ip和目的port,所述第二鍵值為:地址NAT轉(zhuǎn)換后的ip、地址NAT轉(zhuǎn)換后的port、目的ip和目的port。
本發(fā)明還提供了一種實現(xiàn)NAT的裝置,包括:
第一配置單元,用于創(chuàng)建映射表和過濾表,并根據(jù)地址映射過濾模式設(shè)置用于查詢映射表的第一鍵值,以及設(shè)置用于查詢過濾表的第二鍵值;所述映射表用于記錄報文從私網(wǎng)到公網(wǎng)的地址轉(zhuǎn)換關(guān)系,所述過濾表用于記錄從公網(wǎng)到私網(wǎng)的地址回溯信息;
第一報文發(fā)送處理單元,用于當(dāng)報文從私網(wǎng)向公網(wǎng)發(fā)送時,從報文中提取第一鍵值,通過所述第一鍵值獲取公網(wǎng)地址,更新所述映射表中的對應(yīng)映射表項,并將地址回溯信息更新到所述過濾表中的對應(yīng)過濾表項;利用獲取的所述公網(wǎng)地址進(jìn)行地址NAT轉(zhuǎn)換后發(fā)送到公網(wǎng);
第二報文發(fā)送處理單元,用于當(dāng)報文從公網(wǎng)向私網(wǎng)發(fā)送時,從報文中提取第二鍵值,通過所述第二鍵值查詢所述過濾表;如果查詢到對應(yīng)的過濾表項,則利用過濾表項中的地址回溯信息進(jìn)行地址NAT轉(zhuǎn)換后發(fā)送到私網(wǎng);否則,根據(jù)ACL規(guī)則組進(jìn)行報文的轉(zhuǎn)發(fā)處理。
優(yōu)選的,所述第一報文發(fā)送處理單元包括映射表查詢處理模塊,用于通 過所述第一鍵值查詢所述映射表;如果查詢到對應(yīng)的映射表項,讀取該映射表項中的從私網(wǎng)地址到公網(wǎng)地址的轉(zhuǎn)換信息,并將該映射表項的計數(shù)值加一;否則,從公網(wǎng)地址池中提取公網(wǎng)地址,并創(chuàng)建對應(yīng)的映射表項,將從私網(wǎng)地址到公網(wǎng)地址的轉(zhuǎn)換信息寫入該映射表項,將該映射表項的計數(shù)值加一,并創(chuàng)建過濾表項,將該報文的地址回溯信息寫入該過濾表項。
進(jìn)一步的,還包括:第二配置單元和會話寫處理單元;
所述第二配置單元,用于創(chuàng)建會話表,所述會話表用于記錄報文在私網(wǎng)和公網(wǎng)之間的地址NAT轉(zhuǎn)換信息;
所述會話表寫處理單元,用于在所述利用獲取的所述公網(wǎng)地址進(jìn)行NAT轉(zhuǎn)換后以及利用過濾表項中的地址回溯信息進(jìn)行地址NAT轉(zhuǎn)換后,將地址NAT轉(zhuǎn)換信息作為會話表項寫入所述會話表。
進(jìn)一步的,還包括會話表老化處理模塊,用于會話表的老化處理,并根據(jù)需要老化的會話表項中的地址NAT轉(zhuǎn)換信息分別觸發(fā)所述映射表和過濾表的老化處理。
優(yōu)選的,所述會話表老化處理模塊包括關(guān)聯(lián)老化處理子模塊,用于根據(jù)需要老化的會話表項中的地址NAT轉(zhuǎn)換信息以及配置的映射過濾模式,查詢所述映射表,若找到對應(yīng)的映射表項,則將該映射表項中的計數(shù)減一;當(dāng)計數(shù)減至零時,刪除該映射表項,并刪除該映射表項關(guān)聯(lián)的過濾表項,回收NAT地址資源。
優(yōu)選的,所述第一配置單元包括鍵值設(shè)置模塊,用于當(dāng)?shù)刂酚成溥^濾模式為地址無關(guān)模式時,所述第一鍵值為:報文源ip和源port,所述第二鍵值為:地址NAT轉(zhuǎn)換后的ip和port;
當(dāng)?shù)刂酚成溥^濾模式為地址相關(guān)模式時,所述第一鍵值為:報文源ip、 源port和目的ip,所述第二鍵值為:地址NAT轉(zhuǎn)換后的ip、地址NAT轉(zhuǎn)換后的port和目的ip;
當(dāng)?shù)刂酚成溥^濾模式為地址端口相關(guān)模式時,所述第一鍵值為:報文源ip、源port、目的ip和目的port,所述第二鍵值為:地址NAT轉(zhuǎn)換后的ip、地址NAT轉(zhuǎn)換后的port、目的ip和目的port。
本發(fā)明的有益效果:
本發(fā)明中,由于可以靈活配置地址映射過濾模式,報文NAT過程中動態(tài)生成映射表項及過濾表項,滿足了用戶的多樣化需要。且映射表、過濾表結(jié)構(gòu)簡單,占用內(nèi)存空間小,使用hash方法索引,查詢效率高。
本發(fā)明中使用映射表記錄地址映射關(guān)系,除了可以提高公網(wǎng)ip資源利用率,還可以大大的減少報文NAT過程中訪問地址池的次數(shù),提高了NAT效率。
本發(fā)明中,過濾表優(yōu)先級高于ACL規(guī)則,查詢到過濾表項的報文直接根據(jù)過濾表項轉(zhuǎn)發(fā)。過濾表不僅記錄了NAT地址回溯關(guān)系,還起到對私網(wǎng)的訪問控制及保障p2p網(wǎng)絡(luò)互通性的作用。
本發(fā)明中,映射表、過濾表隨著會話表進(jìn)行老化。映射表的及時老化保證了會話結(jié)束時NAT資源的立即回收,可進(jìn)一步提高地址池利用率。并且,過濾表的及時老化關(guān)閉了公網(wǎng)對發(fā)起該條會話的私網(wǎng)主機(jī)的訪問權(quán)限,充分保障了私網(wǎng)主機(jī)的安全。
附圖說明
圖1為現(xiàn)有技術(shù)中外部地址無關(guān)映射過濾模式原理示意圖;
圖2為現(xiàn)有技術(shù)中外部地址相關(guān)映射過濾模式原理示意圖;
圖3為現(xiàn)有技術(shù)中外部地址和端口相關(guān)映射過濾模式原理示意圖;
圖4為本發(fā)明映射表數(shù)據(jù)結(jié)構(gòu)及檢索過程示意圖;
圖5為本發(fā)明映射表檢索流程圖;
圖6為本發(fā)明實現(xiàn)NAT的方法流程圖;
圖7為本發(fā)明報文由私網(wǎng)發(fā)往外網(wǎng)處理流程圖;
圖8為本發(fā)明報文由外網(wǎng)發(fā)往私網(wǎng)處理流程圖;
圖9為本發(fā)明映射表、過濾表老化處理流程圖。
具體實施方式
以下結(jié)合實施例詳細(xì)先介紹本發(fā)明中的幾個關(guān)鍵技術(shù)點:映射過濾模式、映射表、過濾表和會話表。
一、映射及過濾模式
本發(fā)明中,映射過濾模式是綁定在一起的,即,若配置映射過濾模式為地址無關(guān)模式,則代表映射模式為地址無關(guān)模式,過濾模式也為地址無關(guān)模式,兩者保持一致。
本發(fā)明支持RFC5128提出現(xiàn)有三種過濾模式,除此之外,本發(fā)明還支持用戶自定義映射過濾模式或者將來新標(biāo)準(zhǔn)提出的過濾模式,可充分滿則用戶多樣化需求。
圖1-3分別為RFC5128提出的三種地址映射過濾模式:外部地址無關(guān)模式、外部地址相關(guān)模式、外部地址和端口相關(guān)模式的原理圖。
二、映射表
映射表即Ref表。本發(fā)明映射表記錄了NAT過程中的地址轉(zhuǎn)換關(guān)系,即報文從私網(wǎng)到公網(wǎng)的地址轉(zhuǎn)換關(guān)系。映射表可為但不限于以下形式:
映射表={src_ip,src_port,dip,dport,translate_ip,translate_port,next_ref_index,ref_cn,other}
其中src_ip、src_port、dip、dport分別標(biāo)識報文源ip、源port、目的ip、目的port;translate_ip、translate_port分別標(biāo)識報文NAT后的ip及port;next_ref_index,代表下一條映射表索引。ref_cn代表映射表計數(shù),表示有多少會話表中的NAT信息引用于本映射表,當(dāng)建立映射表時將ref_cn置1,其他會話每引用一次本映射表的公網(wǎng)地址,ref_cn都增加1;other代表其他需要存儲的附加信息,可以根據(jù)需求進(jìn)行自定義。
地址無關(guān)模式時,映射表創(chuàng)建及查詢鍵值設(shè)置為{src_ip,src_port}。
地址相關(guān)模式時,映射表創(chuàng)建及查詢鍵值設(shè)置為{src_ip,src_port,dip}。
地址端口相關(guān)模式時,映射表創(chuàng)建及查詢鍵值設(shè)置為{src_ip,src_port,dip,dport}。
以地址相關(guān)模式為例,發(fā)送依次發(fā)送表1中的報文,則可得到映射表項:
映射表項Ref_A={src_ip=192.168.1.6,src_port=16,dip=128.0.0.5,dport=0,translate_ip=129.0.0.6,translate_port=50,ref_cn=3}
由于是地址相關(guān)模式,則創(chuàng)建、查詢映射表項Ref_A的鍵值應(yīng)為{src_ip=192.168.1.6,src_port=16,dip=128.0.0.5}。
發(fā)送報文1時,為報文1分配公網(wǎng)地址后,創(chuàng)建映射表項Ref_A,此時ref_cn=1。
發(fā)送報文2、3時,由于用戶配置了端點無關(guān)模式,查詢映射表時將會命中映射表項A,此時取映射表項A中的地址翻譯信息替換報文2、3的源 ip地址及端口,完成nat轉(zhuǎn)換,此時ref_cn=3。
后續(xù)報文無法命中Ref_A,將重新進(jìn)入地址池選取可用的公網(wǎng)地址,并建立新的映射表。
表1
如圖4所示的映射表數(shù)據(jù)結(jié)構(gòu)及檢索過程示意圖,以及圖5所示的映射表檢索流程。
映射表可采用HASH+CAM的二級檢索結(jié)構(gòu),以提高查找效率。其中,HASH表可以保存CHS=2N_REF條表項,每條HASH表項即一個CAM表,每個CAM表保存1條表項,每條CAM表項對應(yīng)一個映射表鏈。
CAM表項中存儲的值從預(yù)先設(shè)定好的棧ref_stack里獲得,每次從棧頂獲得一個元素,用來索引映射表。設(shè)映射表最大條數(shù)為CREF,則該棧大小為CREF,棧中元素={0,1,2,3,4……CREF-1}。
當(dāng)映射表項的創(chuàng)建過程發(fā)生hash沖突時,映射表中元素next_ref_index也需從棧中獲得,用以索引下一條映射表項。
三、過濾表
過濾表即Fil表。本發(fā)明過濾表記錄了從公網(wǎng)到私網(wǎng)的地址回溯信息及私網(wǎng)主機(jī)的可訪問性,過濾表可為但不限于以下形式:
過濾表={translate_ip,translate_port,dip,dport,src_ip,src_port,next_ref_index,other}
其中translate_ip、translate_port分別標(biāo)識報文NAT后的ip及port。src_ip、src_port、dip、dport分別標(biāo)識報文源ip、源port、目的ip、目的port。next_ref_index,代表下一條過濾表項索引。other代表其他需要存儲的附加信息,可以根據(jù)需求進(jìn)行自定義。
地址無關(guān)模式時,過濾表創(chuàng)建及查詢鍵值設(shè)置為{translate_ip,translate_port}。
地址相關(guān)模式時,過濾表創(chuàng)建及查詢鍵值設(shè)置為{translate_ip,translate_port,dip}。
地址端口相關(guān)模式時,過濾表創(chuàng)建及查詢鍵值設(shè)置為{translate_ip,translate_port,dip,dport}。
如表2所示,過濾表采用與映射表完全相同的結(jié)構(gòu)組織與檢索方法,唯一不同的是,進(jìn)行hash檢索時關(guān)鍵字選取不同。
假設(shè)映射過濾模式為地址相關(guān)模式,有如下映射表項及報文:
映射表Ref_A={src_ip=192.168.1.6,src_port=16,dip=128.0.0.5,dport=0,translate_ip=129.0.0.6,translate_port=50,ref_cn=3}
表2
則對應(yīng)有如下過濾表項Fil_A:
過濾表Fil_A=={translate_ip=129.0.0.6,translate_port=50,dip=128.0.0.5,dport=0,src_ip=192.168.1.6,src_port=16,next_ref_index,other}
地址相關(guān)模式時,過濾表創(chuàng)建及查詢鍵值設(shè)置為{translate_ip,translate_port,dip},對應(yīng)于過濾表Fil_A,鍵值應(yīng)為{translate_ip=129.0.0.6,translate_port=50,dip=128.0.0.5}。
由于是地址相關(guān)模式,公網(wǎng)主機(jī)128.0.0.5任意端口發(fā)送到(129.0.0.6:50)的報文將命中Fil_A,此時提取過濾表中src_ip=192.168.1.6,src_port=16進(jìn)行NAT轉(zhuǎn)換,完成地址回溯。
其他公網(wǎng)主機(jī)發(fā)送的報文無法命中Fil_A,將根據(jù)ACL規(guī)則組進(jìn)行轉(zhuǎn)發(fā)處理,這樣既完成了地址轉(zhuǎn)換,也保護(hù)了私網(wǎng)主機(jī)的安全。
假設(shè)映射過濾模式為地址無關(guān)模式(令上述過濾表中dip=0,dport=0),則公網(wǎng)任意主機(jī)發(fā)送到(129.0.0.6:50)的報文均可通過過濾表項Fil_A轉(zhuǎn)發(fā)至私網(wǎng),這樣就保證了p2p網(wǎng)絡(luò)的互通性。
四、會話表
會話表,即FT表,是由報文五元組唯一確定一張會話表。
會話表={src_ip,src_port,dip,dport,protocol,nat_flag,translate_ip,translate_port,other}
src_ip、src_port、dip,dport分別標(biāo)識報文源ip、源port、目的ip、目的port,nat_flag為NAT標(biāo)識,可以記錄NAT模式,標(biāo)識源或者目的地址翻譯。translate_ip、translate_port分別表示報文目的或者源地址應(yīng)該翻譯為何種ip和port,other代表其他需要存儲的附加信息,可能包括會話的狀態(tài)信息、老化信息、安全策略信息、統(tǒng)計信息、路由信息等,可以根據(jù)需求進(jìn)行自定義。
當(dāng)一條報文需要做NAT時,一個連接則對應(yīng)兩張F(tuán)T表,這主要是因為做了NAT地址轉(zhuǎn)換,兩個方向的報文五元組發(fā)生了變化,比如(Aip:Aport)向(Cip:Cport)發(fā)送報文,且協(xié)議類型為PRO_a,經(jīng)過NAT后,(Aip:Aport)翻譯為(Bip:Bport),則去方向的報文的五元組為{Aip,Aport,Cip,Cport,PRO_a},回來的報文的五元組變?yōu)閧Cip,Cport,Bip,Bport,PRO_a},正反向報文五元組發(fā)生變化,在這里屬于一個連接,但對應(yīng)兩張F(tuán)T表。
當(dāng)收到會話的第一個報文后,無論何種映射過濾模式,均會在NAT后自動生成正、反向會話表項,并將該會話的NAT信息保存在會話表項中,之后再收到該會話的后續(xù)報文時,直接讀取會話表項的NAT信息即可。這樣,可以大大提高會話后續(xù)報文的處理效率。
下面再結(jié)合附圖,并通過具體實施例詳細(xì)說明本發(fā)明的實現(xiàn)方式。
本發(fā)明的實現(xiàn)過程中,可以由用戶配置映射過濾模式,也可以直接默認(rèn)為一種映射過濾模式。映射過濾模式包括但不限于以下模式:外部地址無關(guān)模式、外部地址相關(guān)模式、外部地址和端口相關(guān)模式。上述三種模式為RFC5128提出的過濾模式,還可以為將來新的標(biāo)準(zhǔn)提出的過濾模式,或者用 戶自定義的映射過濾模式。
如圖6所示本發(fā)明實現(xiàn)NAT的方法流程,首先需要創(chuàng)建映射表和過濾表,其中映射表用于記錄報文從私網(wǎng)到公網(wǎng)的地址轉(zhuǎn)換關(guān)系,過濾表用于記錄從公網(wǎng)到私網(wǎng)的地址回溯信息。
然后根據(jù)地址映射過濾模式設(shè)置用于查詢映射表的第一鍵值,以及設(shè)置用于查詢過濾表的第二鍵值。
本發(fā)明報文的處理包括兩個方向:從私網(wǎng)發(fā)往公網(wǎng)和從公網(wǎng)發(fā)往私網(wǎng)。發(fā)送報文前根據(jù)方向分別進(jìn)行地址NAT轉(zhuǎn)換。
最后將經(jīng)過NAT轉(zhuǎn)換后的報文進(jìn)行轉(zhuǎn)發(fā)。
如圖7所示,報文由私網(wǎng)發(fā)往公網(wǎng)時,根據(jù)配置的映射過濾模式設(shè)置不同的第一鍵值并查詢映射表,若未查詢到對應(yīng)的映射表項,則進(jìn)入地址池獲取一個公網(wǎng)地址,并動態(tài)創(chuàng)建映射表項,將獲取的公網(wǎng)地址及報文源、目的地址等信息寫入映射表項,并將映射表項計數(shù)置1,然后根據(jù)映射過濾模式,設(shè)置相應(yīng)的第二鍵值創(chuàng)建過濾表項,將地址回溯信息寫入過濾表項;若查詢到對應(yīng)的映射表項,則直接讀取映射表項中的地址翻譯信息,并將映射表項計數(shù)加1。最后使用獲得的公網(wǎng)地址替換報文的私網(wǎng)地址完成NAT轉(zhuǎn)換,并將地址轉(zhuǎn)換信息寫入相應(yīng)的會話表。
如圖8所示,報文由公網(wǎng)發(fā)往私網(wǎng)時,根據(jù)配置的映射過濾模式設(shè)置不同的第二鍵值查詢過濾表,若查詢到對應(yīng)的過濾表項,則讀取過濾表項中的NAT地址回溯信息將目的地址替換回私網(wǎng)地址,并跳過ACL規(guī)則組查找,直接轉(zhuǎn)發(fā)報文并將地址轉(zhuǎn)換信息寫入會話表;若未查找到過濾表項,則根據(jù)ACL規(guī)則組的查詢結(jié)果處理報文。
如圖9所示,在一種實施方式中,映射表、過濾表老化由會話表的老化 觸發(fā)。具體的實現(xiàn)過程可以為:當(dāng)會話表老化時,根據(jù)需要老化的會話表項中的地址NAT轉(zhuǎn)換信息以及配置的映射過濾模式,查詢所述映射表,若找到對應(yīng)的映射表項,則將該映射表項中的計數(shù)減1;當(dāng)計數(shù)減至0時,刪除該映射表項,并刪除該映射表項關(guān)聯(lián)的過濾表項,回收NAT地址資源。
綜上,本發(fā)明提供了一種NAT映射和過濾模式的實現(xiàn)方法和裝置,提高了NAT處理效率,滿足了用戶多樣化的配置需求。同時通過過濾表實現(xiàn)了地址回溯及對私網(wǎng)主機(jī)的訪問限制,并保證了NAT條件下網(wǎng)絡(luò)的互通性。
以上內(nèi)容是結(jié)合具體的實施方式對本發(fā)明所作的進(jìn)一步詳細(xì)說明,不能認(rèn)定本發(fā)明的具體實施只局限于這些說明。對于本發(fā)明所屬技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干簡單推演或替換,都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù)范圍。