中文字幕无码日韩视频无码三区

用于使用本地ip地址和不可轉換端口地址的局域網的網址轉換網關的制作方法

文檔序號:7652034閱讀:179來源:國知局
專利名稱:用于使用本地ip地址和不可轉換端口地址的局域網的網址轉換網關的制作方法
技術領域
虛擬專用網絡(VPN)采用TCP/IP協議,利用Internet作為通信介質,能夠使遠程計算站點之間進行安全、高速通信。可以使用多種安全措施來保護Internet上站點之間流動的信息,防止不希望的竊聽者或惡意黑客攔截。有效的安全措施必須(至少)具有以下確保任何或全部防護的功能防止傳輸過程中無意或惡意修改數據以保持數據完整性;使用抗重復措施防止拒絕服務(DOS,denial-of-service)攻擊;源認證;傳輸過程中源地址和其它報頭信息的機密性;以及防止有害竊聽保護分組的有效負載。提供Internet安全的標準模型之一是IPSec(因特網協議安全組)。IPSec與TCP/IP傳輸協議一起工作,為連接在Internet或自身連接到Internet的專用局域網(LAN)上的設備之間提供安全通信。
背景技術
TCP/IP(傳輸控制協議/網際協議)協議組利用IP地址識別網絡上的每個設備。全球性IP地址唯一地確定Internet上的設備。該設備可以是計算機,打印機,路由器,交換器,網關,或其它網絡設備。在Internet上,擁有全球性IP地址的設備可以作為源或目的地被直接訪問。但是,TCP/IP通信協議并非專門用于Internet,而也可用于專用局域網。使用TCP/IP的專用局域網通常為網絡設備使用“本地”IP地址。盡管專用局域網中沒有兩個設備可以共用同一個本地IP地址,專用局域網還是與Internet隔絕,并且從Internet上也看不見局域網上的本地設備。因此,本地設備的IP地址不需要“全球性”的唯一性。使用本地IP地址的局域網可以通過網關連接到Internet上,網關是一種可以對局域網和Internet之間的消息進行過濾或路由的設備。由于網關直接連接在Internet上,并由Internet上可視,所以為通過Internet進行通信,網關必須擁有全球唯一的IP地址。然而,由于從Internet不能直接看到局域網,所以局域網上的本地機器并不需要全球唯一的IP地址。
TCP/IP是Internet上使用的通信協議。使用TCP/IP進行通信的信息包含在“數據報”中。數據報由添加了一個或多個報頭的離散信息“分組”構成。報頭含有TCP/IP所需要的信息,用來引導分組到達其預期目的地并確保其在傳輸過程中得到正確處理。每個數據報都單獨設定地址,可以是面向連接的TCP數據報,也可以是無連接的UDP(用戶數據報協議)數據報。每個UDP數據報都含有一個IP報頭和一個UDP報頭。IP報頭至少含有“源”IP地址和“目的地”IP地址,而UDP報頭含有源服務地址和目的地服務地址(端口地址,以數字形式給出)。在IPv4中,IP地址的長度是32位,其格式是現在所熟悉的xxx.xxx.xxx.xxx。該格式中,每三個數字的字段是一個介于0和255之間的二進制八位字節(binary octet)。完整的IP地址將合理的網絡或網段地址與網絡“節點”(設備)地址結合在一起。網絡或網段的地址可以包括IP地址的前3,6或9位數。網絡或網段上的設備由節點地址(含有網絡或網段地址中沒有使用的那些其余數字)識別。
包含在UDP報頭中的源服務地址和目的地服務地址是16位的數字,在不同情況下被稱為“端口”或“接口(socket)”,用來把分組導引到發送或接收設備中運行的預期進程中。此處所用的術語“端口”或“端口地址”涉及到UDP報頭中的服務地址字段。雖然理論上16位的數中有多少端口就有同樣多的地址,但根據慣例通常為所建立的進程預留了許多端口地址。因此,例如,端口80為HTTP預留,端口20和21為FTP預留。通過使用端口地址,數據抵達運行著多于一個進程的本地設備后,可以被導引到預期的進程中。當本地主機上運行的進程不是所預留進程之一時,本地主機將從大量的未預留的端口號中挑選任一端口號來識別“源”進程。涉及“目的地”字段中該端口號的回復分組將被直接引導進該進程中。
隨著最近十年Internet應用的爆炸性增長和未來的預期增長,全球唯一性IP地址已經成為稀缺資源。另外,許多維持專用局域網的企業很少或根本不需要其局域網上的計算機和設備擁有全球唯一的IP地址。在任何情況下,許多這樣的企業更寧愿維持他們計算機IP地址的機密性。許多專用局域網給局域網上的設備使用本地IP地址,而不是給每個本地設備提供一個全球唯一IP地址,浪費有限的全球性資源。為了提供到Internet的連通性,這種局域網將在分隔其與Internet的網關上使用一個全球唯一的地址。
通過應用網址轉換技術(NAT),分隔局域網與Internet的網關設備能夠提供防火墻的安全性,使擁有本地IP地址的機器能夠通過網關的全球唯一地址訪問Internet。局域網上的設備可以擁有靜態本地IP地址,也可以擁有登錄時動態分配的本地IP地址。網關用局域網上每個設備的本地IP地址維持轉換表。由本地機器發往Internet的UDP分組含有本地IP地址和端口地址,它們分別在IP和UDP報頭的源字段中識別。網關接收來自本地機器的分組,并把外部全球唯一IP地址和新的端口地址(從大量的未使用也未預留的端口地址中挑選)代入IP和UDP報頭的源字段中。接下來,網關將更新循環冗余校驗(CRC),并為保證數據完整進行所必需的任何其它改變,然后向Internet發送分組。作為處理過程的一部分,網關將用以下內容更新其本地轉換表以對應本地機器的IP地址該機器最初報告的源端口地址;分配給Internet范圍傳播的分組的新源端口地址;以及目的地IP地址。接收到來自Internet的回應后,網關將從分組報頭中識別出它自己的IP地址,并檢查所接收分組的目的地端口地址。若發現目的地端口地址位于其內部表中,網關將把對照后的本地機器IP地址和原始端口地址代入分組的目的地字段中,并將更新CRC以及其它任何所必須更新的參數,然后把分組分派到局域網,在那里分組將被本地機器接收并導引到合適的進程中。通過這種方式,僅擁有本地IP地址的局域網上的一系列計算機就可以通過一個全球唯一的IP地址與Internet通信。
雖然應用網址轉換技術(NAT)的網關提供了防火墻安全性,防止從Internet直接訪問局域網,但其不能在Internet上傳輸過程中防止截聽或更改發往局域網的分組,也不能確保源自局域網本地的詢問的可信性。因此,對于連接到Internet時必須保持安全性的局域網,由IPSec提供的安全性是其必要保護。
通常,實施IPSec是為由至少一個主計算站點和一個或多個遠程局域網構成的虛擬專用網絡(VPN)提供安全性。主站點和遠程局域網通過Internet連接,用這種高速介質代替明顯昂貴的專用租借線路來實現站點之間的通信。但是,用Internet作為傳輸介質的缺點是其與生俱來的不安全性,以及很少或根本沒有內在保護來防止偵聽,探測,欺騙,或超級偷竊,以及黑客更改或轉移信息。因此,需要安全數據傳輸的地方就需要全面的安全措施。IPSec協議實行安全措施以確保數據認證和數據完整。
IPSec協議組在多層OSI(開放系統互聯)網絡參考模型的網絡層上實現安全性。該組包含一些相互關聯的獨立協議,用來確保攜帶信息穿越Internet的UDP數據報的安全。IPSec兼容系統的基本體系由RFC2401(《Security Architecture for the Internet Protocol》S.Kent和R.Atkinson著,1998年11月)解釋。AH(驗證報頭)協議確保數據完整,源認證,并結合“抗重復”措施阻止拒絕服務(DOS)攻擊。ESP(封裝安全載荷)協議提供了與AH協議相似的防護,但增加了有效負載加密的其它特征。AH和ESP報頭都有SPI(安全參數索引)字段。SPI是一個偽隨機的32位數值,用來為數據報識別SA(安全聯盟)。關于這些協議的更多信息可以在RFC1826(《IP AuthenticationHeader》R.Atkinson著,1995年8月)和RFC2406(《IP EncapsulatingSecurity Payload(ESP),S.Kent和R.Atkinson著,1998年11月》)中找到。ISAKMP/Oakley(因特網安全協會和密鑰管理協議,一般還稱為因特網密鑰交換-IKE)是一個握手協議,用來為兩主機之間的安全會話設立參數,并交換密鑰和其它安全信息,用來實現安全會話并允許傳輸加密數據。ISAKMP/Oakley協議(此后簡稱為ISAKMP)包括未加密消息的原始交換,用來為兩主機提供原始數據,由這些原始數據可以建立認證并產生加密數據的密鑰。所述處理過程的解釋可以在RFC2409(《The Internet Key Exchange》,D.Harkins和D.Carrel,1998年11月)中找到。一旦安全參數足以確定在主機之間的SA(安全聯盟)已經交換后,所有后來的傳輸將被加密并根據所述協議進行充分認證。此時ISAKMP協議終止。根據該會話中每臺機器的IP地址和機器的SPI進行后續尋址工作。每個會話中每臺機器的SPI是唯一的。專用局域網的網關將維持一個內部表,其中SPI-In在對應于本地機器IP地址的數值中,SPI-Out對應于與本地機器通信的Internet上機器的IP地址。每臺機器的SPI由ISAKMP傳輸過程中交換的信息計算出,并在附加于UDP分組的AH或ESP報頭中攜帶。因為IPSec協議可以通過嵌套為多種環境提供安全性,所以一個單獨的數據報可以包含AH和ESP報頭,也可以加密某些報頭信息。
所述每個安全協議都通過以下方式修改UDP分組在分組上放置新報頭信息,為遵守所用協議修改分組的特定字段,某些情況下加密有效負載以及部分或全部其它分組的報頭。因此,IPSec中,當UDP數據報離開“安全”區域而在不可信賴的網絡上傳輸時,IPSec通常包括IP報頭,AH或ESP報頭(或二者皆有),以及加密的有效負載。報頭信息將包括目的地地址,SPI,和足夠的SA信息,用來確保數據報能夠到達其目的地并被目的地主機認證。加密有效負載確保包含在有效負載中的信息可以拒絕不需要的竊聽者和黑客。數據報的原始目的地主機可以是路由器,網關,或局域網與Internet之間的防火墻。到達局域網和Internet的邊界的設備后,數據報可以被打開,檢驗,部分或全部解密,為尋求更多地址信息而進行分析,向LAN上的本地IP地址進行路由引導。
IPSec中應用的ISAKMP握手協議要求建立安全會話的兩臺主機都使用特殊進程端口(地址端口500)進行原始消息交換。因此,端口500就被專門分配給ISAKMP協議專用了。通常,試圖使用ISAKMP協議協商安全通信參數的計算機必須直接通過每臺計算機的端口500進行通信。即,來自任一計算機的ISAKMP信息必須把端口500識別為源和目的地端口地址。若任一計算機接收到的分組的源和目的地都沒有指定為端口500,則該分組將被丟棄。
但是,這種協議僅確保兩臺主機之間相互通信,而當其中一臺主機位于使用本地IP地址和NAT網關的局域網上時,則該協議不能實行。例如,主機A,在由NAT網關保護的的遠程LAN上擁有本地IP地址,希望與主機B建立安全會話,主機B位于主辦公計算站點上。主機A將通過向主機B發送未加密的UDP數據報啟用該協議,同時給出主機B的IP地址作為目的地,以及端口500作為目的地端口地址。然而,當數據報到達把遠程局域網連接到Internet的網關時,該網關將把目的地端口地址轉換為任意端口號。當數據報到達主機B時,ISAKMP協議將不被識別,主機B也沒有響應。計算機將不能建立安全會話。迄今為止,由于這種困難,人們一直相信ISAKMP協議不能用來建立使用NAT網關并且遠程LAN上的每臺計算機都使用本地而非全球性IP地址的VPN(虛擬專用網)。
因此,本發明的一個目的是提供一種網關,通過使用Internet作為傳輸介質,該網關允許擁有非全球性IP地址的計算機與主計算機之間利用ISAKMP協議進行認證并交換密鑰。
本發明更深一層的目的是提供一種允許使用本地IP地址的專用LAN上任意數量的計算機都能使用ISAKMP協議通過Internet發送和接收消息的網關。
本發明的另一個目的是提供一種能夠在Internet上兩個或多個LAN站點之間使用虛擬專用網、使用ISAKMP協議發送安全通信的方法。
本發明的所述和其它目的在下面的描述中顯而易見。

發明內容
根據本發明,連接到外部網絡(例如通過NAT網關連接到Internet)的遠程局域網上使用本地IP地址的計算機將利用ISAKMp協議交換密鑰并建立SA(安全聯盟),這將支持IPSec下的安全會話。對于非ISAKMP業務,網關象平常一樣進行地址轉換。然而,只要局域網上的機器發出ISAKMP協議信息,網關將識別含有端口500的端口地址的數據報。遇到這樣的數據報時,網關將轉換源IP地址,但不轉換源端口地址,將其預留在端口500,并把分組和端口500(指定為源和目的地端口地址)發往Internet。網關也將更新其內部表以將端口500綁定到本地IP地址,并在預定長度時間內將綁定與目的地機器的外部IP地址結合起來。如果預定長度時間內沒有接收到有效回復,端口500和本地IP地址之間的綁定將被解除。這種特征對確保端口500不被不確定性地占用是必要的,例如,在ISAKMP協議傳輸被發往錯誤的目的地IP地址的情況下。這種條件下,網關將接收不到有效回復。若在沒接收到有效回復的一定時間后,定時器沒有釋放端口500,則網關重新啟動以前該端口將被束縛在本地IP地址上。大多數情況下,等待有效回復時,2秒鐘足以保持端口500和本地IP地址之間的綁定。
在端口500被綁定到本地IP地址上的那段時間內,網關一邊等待有效回復,一邊繼續處理沒有端口500地址的數據報。有效回復是含有源IP地址的數據報,其源IP地址和與端口500相關的外部IP地址相同,而且源和目的地端口地址皆為端口500。等待有效回復時,網關將忽略來自外部網絡的源和目的地端口地址皆為端口500的其它UDP數據報,但正確的源IP地址除外。同樣,當端口500綁定到本地IP地址后,含有源和目的地端口地址皆為端口500的來自局域網的數據報將經歷常規的地址轉換,其中,端口500源端口地址在發往外部網絡前將被轉換為任意未使用的端口地址。因為這種數據報的源和目的地端口地址不都是端口500的,所以它不是有效的ISAKMP數據報,其到達目的地IP地址后將被忽略。若綁定端口500到本地IP地址的時間終止,而網關仍然沒有接收到有效數據報,綁定將被解除,下一個源和目的地端口地址皆為端口500的數據報將可以使用端口500。
端口500被綁定時,接收到含有源和目的地端口地址皆為端口500以及正確的源IP地址的有效回復數據報后,網關將把本地機器的IP地址代入數據報報頭的目的地IP地址字段,從而處理數據報,然后將數據報傳播到局域網以發送給本地機器。數據報離開網關后,網關將釋放本地IP地址與端口500的綁定,并恢復常規的數據報處理。
若從外部網絡沒有收到含有正確源IP地址且端口地址為端口500的回復,網關在短的預定時間后將終止連接。若網關在收到有效回復之前終止連接,那個ISAKMP消息交換就不能完成并需要重發。
ISAKMP協議一旦完成、且加密安全會話正在進行時,網關將通過參照流入和流出的數據報的ESP報頭的SPI執行本地地址轉換。網關也將確保流過網關的數據報的每個分組的類型(ESP分組的類型是50)正確。有時候,跨越VPN的安全會話會被打斷,或啟動新會話。網關對這種情況第一個表示將是接收到50型數據報,其中IP地址可以識別,而其內部表中沒有出現與目的地相關聯的SPI。發生這種情況時,網關將用新的SPI將數據報發往目的地IP地址,在表中把目的地SPI值(根據傳輸方向選擇SPI-In或SPI-Out)設為新的值,并把源SPI值設置為0。收到傳輸的回應后,網關將用目的地IP地址的新SPI替換SPI字段表中的0。
因為本發明的網關不加密或解密消息,僅把有效負載(其可以加密或不加密)傳輸給局域網或Internet在接收機器上進行處理,其不需要強大的處理功能,并可以在需要考慮安裝和維護費用和易用性的專用LAN中使用。


在優選實施例的詳細說明中聯系附圖可以發現本發明的其它目的和優點。其中圖1描述了虛擬專用網,其中,使用本地IP地址的遠程局域網通過外部網絡(可以是Internet)與主計算站點聯網;局域網通過NAT網關連接到外部網絡;圖2描述了本發明的網關為處理來自局域網發往Internet的數據報所使用的決策圖;圖3描述了本發明的網關處理來自Internet發往局域網設備的數據報的步驟的決策圖;圖4為后圖如圖5,6和7提供了參考;圖4是一個表,含有局域網(從L-1到L-3)上本地機器的IP地址,網關的本地和外部IP地址,以及外部網絡上外部機器(從目標T-1到T-3)的IP地址;圖5a-5c顯示了網關內部表的典型字段,用于認證加密數據報的安全參數索引(SPI)對照局域網(L-1,L-2,……L-x)上機器的本地IP地址和外部設備(T-1到T-3)的外部IP地址。SPI-Out代表由網關發往Internet上的設備的加密數據報的SPI,而SPI-In則代表發往局域網本地機器的加密數據報的SPI;表a,b和c表示了源報頭值,目的地的報頭值,以及不同時間點的SPI;數值的變化表示本地機器和目標機器之間開始了新會話;圖6表示了在一臺本地機器和外部網絡上的一臺設備之間交換的數據報報頭的典型字段。報頭值由本發明網關處理后修正。
圖7表示了在LAN上在三臺本地機器(L-1到L-3)和外部網絡上的三個目標(T-1到T-3)之間交換的數據報報頭的典型字段。報頭值由本發明的網關處理后修正。
圖8是一個示意圖,顯示了數據報處理功能和定時器之間流動的信號。
優選實施例說明圖1顯示了虛擬專用網(VPN),其中,專用局域網(LAN)10連接到Internet 50上的計算站點30。LAN10使用本地IP地址,通過本發明的網址轉換網關(NAT)20連接到Internet50。計算站點30可以是商業總部,或跨國公司的任一專用LAN,教育設備,或遠程頻繁訪問的任何站點。這些站點通常有能夠運行加密或其它安全程序的防火墻或網關35。這種網關可以打開分組,解密,或訪問其內容,并執行地址轉換,形成路由,解封,以及數據處理功能。雖然這些設備可以支持ISAKMP和其它IPSec協議,但是它們要通過打開并解密分組以及處理數據才能夠支持ISAKMP及其它IPSec協議,并且一般來說,它們因為太昂貴和功能過于強大而基本上不會被需要在主計算站點上建立VPN的遠程局域網站點有效地采用。
主站點的服務器40運行VPN服務器軟件程序。遠程站點的每臺計算機15都運行適當的VPN客戶端軟件程序,這種程序在每臺計算機上都執行IPSec安全協議。
LAN10上的計算機15通過網關20向計算站點30的服務器40發送IP數據報,從而與Internet上的設備進行通信。
根據圖2和3所示的決策圖處理網關20接收的數據報。雖然流程2和3都顯示了處理步驟和步驟順序,但執行某些功能的順序并不嚴格,某些步驟能夠以不同于流程圖所示的順序執行,而不影響最終結果。例如,圖2和3顯示了網關接收到數據報后的第一步是判斷數據報類型,而最后一步是執行數據報傳送到網關前所必須進行的IP地址轉換。然而,某些實施例,可以把地址轉換步驟在處理過程中提前放置,這將不影響處理結果。由于對整個過程而言,IP地址的轉換的順序并不嚴格,決定何時執行轉換步驟是工程選擇的事情。
如圖2所示,接收到來自LAN的數據報后,網關將檢查數據報是否加密。網關通過檢查IP地址的“下一個報頭”字段而判斷它所處理的數據報的類型,并判斷數據報是否被加密。50型數據報(ESP)表明數據報已經加密,端口地址信息不可用。
繼續進行圖2的決策樹,若數據報加密,網關將檢查數據報的SPI,了解其是否出現在網關的內部表的SPI-Out字段中。這種表的典型字段如圖5a-5c所示。若數據報的SPI出現在內部表的SPI-Out字段中,網關將把數據報的源IP地址修改為網關的外部IP地址,并把數據報發往外部網絡,傳輸給外部設備。
若數據報加密,但SPI沒有出現在網關的內部表中,那么,根據圖2的決策圖,網關將假定數據報正在啟動新會話。這種情況下,網關將把內部表的SPI-In字段設置為0,并把SPI-Out設置為來自數據報的新SPI。圖5a和5b反應了內部表的這些修改,其中,圖5b顯示了“新”SPI(14662,其在圖5a網關內部表SPI-Out字段中沒有出現)已經進入SPI-Out字段,而且SPI-In已經設置為0。源IP地址由本地設備的IP地址轉換為網關的外部IP地址后,加密數據報將被發往外部網關。圖5b和5c顯示了這些步驟。
繼續如圖2的決策圖,若數據報沒有加密,接下來,網關將檢查數據報的目的地端口地址。若端口地址不是端口500,網關將把源端口地址加入其內部表中,用(本地)源IP地址對照此表,然后把任一沒使用的端口地址代入到IP報頭的源端口地址字段中。網關也將把新的端口地址加入其內部表,重復對照(本地)源IP地址。該處理過程,其用于端口地址不是端口500的未加密數據報,被稱為源自LAN的數據報的“常規地址轉換”。圖6的第1和第2行顯示了這種轉換。數據報將被發往Internet,并向目的地IP地址導引路由。
圖2中,所接收數據報的源和目的地端口地址都是端口500,接下來,網關必須檢查其表,判斷端口500是否已經綁定到IP地址上。若端口500空閑,那么,網關將把端口500綁定到數據報的(本地)源IP地址上,在端口和(外部)目的地IP地址之間制造關聯,并發送信號啟動本地定時器。網關也通過用網關的外部IP地址替換源IP地址字段的本地IP地址的方式處理數據報。但是,網關不轉換源端口地址。通過延緩源端口地址的“常規”轉換,網關確保目標機器能夠把數據報識別為ISAKMP數據報。圖6的第5行和第6行顯示了所述步驟。
圖2中,若來自LAN的數據報的源和目的地端口都是端口500,但端口500已經被綁定到其它本地IP地址,那么,網關不能為所處理的消息綁定端口500。這種情況下,網關將“正常”處理數據報,好像它不是ISAKMP數據報。即,網關將把數據報的源端口地址轉換為任意數值,并把源IP地址轉換為網關外部IP地址。然后,網關將向Internet發送數據報,在這里因其不符合ISAKMP數據報而將被目標機器拒絕接收。圖7的第15行和第16行描述了所述事件。
圖3顯示的是決策圖,其概述了網關在處理來自Internet的數據報時所遵循的步驟。接收到數據報后,網關將首先檢查其類型,并且,若數據報加密,將檢查SPI是否出現在其內部表中。若識別出SPI,其目的地IP地址將被轉換為本地設備的IP地址,數據報被傳給LAN,并向本地機器傳送。若沒有識別出SPI,接下來,網關將檢查對應于數據報的源IP地址的SPI-In字段是否為0。若SPI-In是0,網關將假定該數據報是新會話的第一個回復,并用數據報的SPI替換SPI-In字段中的0。網關將把目的地IP地址轉換為LAN上設備的本地IP地址,并向LAN發送數據報以備傳送。圖5b和5c顯示了這個事件。圖5b中,本地機器L-1的SPI-In已被設置為0。網關在接收到來自Internet的SPI為3288的數據報后,在SPI-In字段中網關找不到此SPI。接下來,網關將判斷SPI-In字段是否保持為0。若判斷本地機器L-1的SPI-In為0,網關將用數據報的SPI(“3288”)替換0,并把數據報發往LAN。圖5c顯示了所述內容。
圖3中,若來自Internet的數據報沒有加密,網關將檢查并判斷其端口地址是否為500。若否,數據報將經歷對來自外部網絡的數據報進行的“常規”地址轉換,即,LAN上設備的本地端口地址和本地IP地址將被替換為數據報的目的字段,數據報被發往LAN。圖6第3行和第4行顯示了這種來自Internet的數據報的“常規”地址轉換。
仍然參考圖3,若數據報的端口地址的確是500,接下來,網關必須檢查端口500是否被綁定到本地IP地址上,以及是否與數據報的(外部)源IP地址相關聯。若是,那么,該數據報有效,在目的地IP地址由外部網關的IP地址轉換為本地設備的IP地址后,數據報被發往LAN。數據報傳往LAN后,網關將釋放端口500。圖6的第7行和第8行解釋了所述事件。
圖3中,若端口500被綁定到本地IP地址,并與外部IP地址相關聯,而不是出現在數據報的源IP地址中,那么,該數據報無效,隨后也不會被網關處理。圖7的25-31行可以看到此事件。在第25-26行,本地機器L-1向目標T-1發送ISAKMP數據報。此時,端口500與本地機器L-1的IP地址綁定,并與目標T-1的IP地址相關聯,但是,如圖7所示,網關收到來自T-1的回復之前定時器已經超時,而且,在第27行,端口500被釋放。在第28行和第29行,本地機器L-3向目標T-3發送ISAKMP數據報,將端口500綁定到L-3的IP地址上,并與T-3的IP地址相關聯。端口500綁定后,接收到來自T-1的回復。但是,因為端口500被綁定,并與T-3的IP地址相關聯,來自T-1的回復被丟棄。圖7的第30和31行顯示了所述內容。
圖5a-5c描述了網關的內部表,其中維持著本地計算機與Internet目標之間進行加密通信所使用的IP地址和SPI號碼。簡單起見,“L-1”,“L-2”,“L-x”以及“T-1”到“T-3”包含的字段不在網關的內部表中出現。圖5中,在與LAN上特定計算機安全會話中,“SPI-Out”字段為每臺目標機器預留SPI。“SPI-In”字段給出了相應的SPI,其將被本地計算機識別,表示期望的有效數據報。圖5a表示了初始階段的表。在表中數據存在期間,8臺本地計算機與3個目標(T-1到T-3)一起參與保密會話。這通過每臺本地機器有一個與其IP地址相關聯的SPI-In字段的事實表現出來。雖然表中僅表示了3臺目標,但可以注意到,每臺目標機器與每臺本地機器進行通信時都使用不同的SPI-Out。這樣,目標機器就可以知道從哪個源產生了加密數據報。
圖5b顯示了與圖5a相同的本地和目標計算機。但是,在這里,L-1和T-1之間會話的SPI-Out是新的SPI,其表明計算機之間的新會話。表明產生新會話的網關的第一個表示是其從LAN接收的加密數據報,其SPI(“14662”)不在表中。網關向Internet傳輸數據報,但也為該數據報修改數據報的表,在源和目的地IP地址相關的SPI-Out字段中設置新SPI。網關也把SPI-In字段設置為0,以此作為標記,表明需要新SPI-In。圖5c顯示了來自T-1的數據報含有新SPI(“3288”)。該SPI已進入網關的SPI-In字段,本會話中,L-1和T-1之間的后續通信將使用這些SPI來認證它們的消息。
利用LAN上的一臺計算機與Internet上一臺遠程目標進行通信,圖6表明了流經本發明網關的典型數據報的流程。圖表的每一行代表到達帶有網關的LAN接口或帶有網關的Internet接口的數據報的信息。連續的行代表進入網關的一端又從另一端流出的數據。網關有一個IP地址,它可以是本地IP地址(在與LAN的接口)和一個全球性IP地址(在與Internet的接口)。圖6的列描述了數據報穿過的網關邊緣,數據報類型,數據報的源IP地址和端口地址,數據報的目的地IP地址和端口地址,以及使用ESP(封閉安全載荷)協議的50型加密數據報的安全參數索引(SPI)。
圖6第一行顯示了到達網關本地接口的UDP數據報,該數據報有對應于本地計算機L-1的源IP地址,和Internet上目標T-1的目的地IP地址。為方便閱讀,對應于本地名稱L-1到L-3和目標名稱T-1到T-3,圖4提供了IP地址列表。L-1的源端口地址是端口6404,其目標機器的端口是端口80。由于數據報沒有加密,也沒有表示出端口500號,數據報經歷了常規轉換,其中,任意端口號,如端口10425,被代入源端口地址字段,網關的外部IP地址由數據報的源IP地址所代替。雖說轉換后的源端口地址是“任意”的,但其通常是網關所維護的大量的未預留且目前也未使用的端口地址序列中的下一個端口地址。
在數據報離開網關時,如圖6第2行所示,網關的地址轉換功能把網關的外部IP地址代入數據報報頭,成為源IP地址,并把一個任意號碼分配給源端口。第3行和第4行顯示了來自目標的回復數據報。第3行中,來自目標的UDP數據報顯示了目的地IP地址,即為網關的外部IP地址,也顯示了目的地端口,即由網關分配的任意端口地址。由于數據報沒有加密,也沒有端口地址500,數據報經歷了目的地端口地址和IP地址的常規轉換,然后被發往LAN。第4行中,在數據報被發往LAN之前,網關將本地計算機的本地IP地址和端口地址代入報頭的目的地字段。
圖6第5行中,本地計算機與目標之間啟用了ISAKMP協議。所示數據報類型是ISAKMP。源和目的地端口地址皆為端口500。網關判斷目的地端口地址是端口500時,將檢查端口500是否正綁定到任何IP地址上。因為端口500沒有綁定,網關將傳送該數據報,并僅轉換源IP地址字段以表示出網關的外部IP地址,但不改變源端口地址。
圖6的5-16行表示了6個標準ISAKMP握手數據報的交換,這對建立安全聯盟(SA)以支持數據報的全面加密和認證是必須的。雖然ISAKMP的某些模型使用較少交換,圖6描述了主要的模型。SA建立后,本地計算機和目標開始使用ESP協議加密數據報進行通信。這里,通過使用數據報報頭的SPI字段中的安全參數索引(SPI)號碼維護數據報的有效性。每臺主機都可以識別對應于其SPI“尋址”的數據報,在會話中,當需要確保連續安全性時,雙方主機都同意后可以修改數據報。當加密數據報流過網關時,如圖6中第17和18行所示,雖然數據報的源IP地址被轉換為網關的外部IP地址,但源和目的地SPI都沒有被網關修改。
因此,當網關接收到加密數據報時,數據報將被表示為50型數據報(ESP)。遇到這種類型的數據報時,網關將檢查數據報的安全參數索引(SPI),判斷該SPI是否被記錄在網關的內部表中。若是,網關將適當轉換數據報的源或目的地IP地址,并根據傳輸方向給LAN或Internet發送數據報。然而,若來自LAN的數據報的SPI沒有出現在網關的內部表中,且源和目的地是已識別的IP地址,網關將假定已經啟用新會話。這種情況下,網關將給外部網絡傳送數據報,使新SPI完整無缺,但在其內部表的“SPI-Out”字段中記錄新的SPI,并在“SPI-In”字段中寫入0。在第25和26行中,可以發現已經出現了表明新會話的新SPI。圖5b對應于這個事件,其中,“SPI-In”字段中的0對應于新SPI-Out中的“14662”。在第27和28行中,來自外部網絡的回復分組表明“老”的SPI“9802”已經被“新”的SPI“3288”所代替。
圖7說明了數據報所經過的本發明網關的通道。除此之外,圖7與圖6相似,這些數據報在LAN上三臺計算機(命名為L-1,L-2和L-3)與Internet上有全球唯一IP地址的三臺目標(命名為T-1T-2和T-3)之間傳輸。為簡化起見,圖4中給出了含有所述設備IP地址的表。如圖7所示,命名為“L-1out”的傳輸代表從L-1本地計算到網關的傳輸。“T-1in”代表從網關到目標T-1的傳輸。“T-1out”代表從目標T-1到網關的傳輸,而“L-1in”代表從網關到L-1計算機的傳輸。
如圖7第1-8行所示,L-1和L-2計算機與目標T-1he T-2之間進行“不受阻礙”(in the clear)的通信。在第9行,L-1開始與T-1進行ISAKMP會話。9-14行顯示了ISAKMP協議中L-1和T-1之間交換的頭三個信息。在第15行,L-3計算機開始與T-3計算機進行ISAKMP-1消息交換。然而,此時,端口500被綁定到L-1,且與T-1的IP地址相關聯,等待來自T-1的ISAKMP-4回復。在這種情況下,來自L-3的數據報不可能綁定端口500,其源端口地址也將被轉換。象這樣,L-3就完不成第15行開始的傳輸。
此后,在第17-1 8行,T-1的回復(ISAKMP-4)由網關接收并發送給L-1,且端口500立刻可用。因此,在第19行,當L-3再次嘗試其ISAKMP-1傳輸時,傳輸就成功了。
在圖7的第19-20行,L-3的ISAKMP-1傳輸將端口500與L-3的IP地址綁定在一起。因此,當K-1嘗試其ISAKMP-5傳輸時,在第21-22行,端口500不可用,網關僅將目的地端口地址由端口500轉換為任意端口號(此時為“9603”),并將數據報發往Internet,在這里目標T-1將不會將其識別為ISAKMP數據報。然而,在第23-24行,L-3釋放端口500后,L-1的下一步傳輸ISAKMP-5被T-1成功接收。但是,T-1的回復很慢,在第27行,端口500從其與L-1的綁定中釋放出來,在第28-29行,為進行ISAKMP-3傳輸,端口500被L-3迅速奪取。因此,當T-1的ISAKMP-6回復到達網關后,如第30和31行所示,端口500被阻塞,數據報就被忽視了。此后,L-1沒有收到對其ISAKMP-5信息的回復,就再次發送,如第34-35行所示,在第36-37行,L-1收到T-1的回復。在38-39和42-43行,根據其ISAKMP握手,通過使用ESP協議,L-1和T-1能夠安全通信。
圖7的38-57行說明了網關對許多本地計算機與目標之間的多種數據報的處理過程。第40-41行顯示了UDP數據報,第42-43行和52-53行顯示了ESP數據報,第44-45行顯示了ISAKMP數據報。雖然圖7顯示了每臺設備的不同IP地址,但實際上,許多處理過程可以在其它相同設備上運行。網關對唯一源端口的替換,以及使用SPI區分不同加密傳輸確保了源自一臺機器上運行的多個進程的數據報不會被誤導。
圖8描述了數據報處理電路100和定時器110之間的信號的初始化和傳輸。當出現需要將端口地址綁定到IP地址的事件時,信號120將被發往定時器110開始記時。當超過合適的時間間隔后,定時器110將發送信號140,表示時間已到,這種情況下,被綁定的所有端口都將被釋放。在過渡時期,若預期的數據報到達,并且先前綁定的端口將要被釋放,失效信號130將被發往定時器110,表明定時器110需要重新記時并等待下一個信號開始記時。顯然,本領域中有許多已知記時電路,圖8所示的特定配置僅是許多可能的實施例中的一種。
由上所述,本領域的技術人員可以理解,這里所描述的優選實施例并非是實現本發明的唯一方法,并且在不脫離本發明的精神和范圍的情況下,可用許多其它實施例來實現本發明。例如,所述優選實施例涉及端口500(為使用ISAKMP協議而專門預留),可以用相同方式使用本發明處理指定其它端口地址的數據報,這些端口將來可以被分配給其它進程或協議。特別的,許多Internet上玩的游戲需要在本地和外部機器上使用特定端口,其地址不能被正常轉換。另外,雖然本發明已被描述為主要關于專用LAN和Internet之間的通信,很顯然,本發明的網關能夠使用在兩個網絡間的任何接口,并擁有前述相同的功能。
到此為止,所附權利要求意在涵蓋本發明的精神和范圍內的修改和變化。
權利要求
1.一種把LAN連接到外部網絡的網址轉換網關,所述LAN使用本地IP地址,所述網關具有本地IP地址,其可被所述LAN上的設備看見,以及外部IP地址,其可被所述外部網絡上的設備看見,所述網關包括多個內部表,它和所述LAN上本地設備的本地IP地址、所述外部網絡上外部設備的外部IP地址、SPI-In值、SPI-Out值、源端口地址、目的地端口地址、預留端口地址的組合相關聯,并維持預留端口地址的列表,一種裝置,用于對從所述LAN流向所述外部網絡,以及從所述外部網絡流向所述LAN的數據報進行常規地址轉換,一種裝置,用于通過接收來自所述LAN上本地設備的打算發往所述外部網絡上的外部設備的數據報,把來自所述LAN上的本地設備的數據報傳送到所述外部網絡上的外部設備,并且確定所述數據報的目的地端口地址是否包含在所述預留端口地址列表中,若所述目的地端口地址不包括在所述預留端口地址列表中,則對所述數據報執行常規地址轉換,并將該數據報傳送到所述外部網絡,以便路由并發往所述外部設備,若所述目的地端口地址包含在所述預留端口地址列表內,則確定所述目的地端口地址是否綁定到所述本地設備的所述本地IP地址,若所述目的地端口地址綁定到所述本地IP地址,則對該數據報執行常規地址轉換,并將該數據報傳送到所述外部網絡,以便路由并發往所述外部設備,若所述目的地端口地址沒有綁定到所述本地設備的本地IP地址,則把所述數據報的所述源IP地址修改為所述網關的所述外部IP地址,并把所述目的地端口地址綁定到所述本地設備的本地IP地址,創建所述目的地端口地址與所述外部設備的外部IP地址之間的關聯,并把該數據報傳送到所述外部網絡,以便路由并發送給所述外部設備。
2.根據權利要求1所述的網址轉換網關,其中,所述用于把來自所述LAN上的本地設備的數據報傳送到外部設備的裝置還包括用于確定所述數據報是否加密的裝置,若所述數據報加密,則確定所述數據報的SPI是否被記錄在所述內部表的SPI-Out字段中,若所述SPI被記錄在所述SPI-Out字段中,則把所述數據報的源IP地址修改為所述網關的所述外部IP地址,并將該數據報傳送到所述外部網絡,以便路由并發送給所述外部設備。
3.根據權利要求2所述的網址轉換網關,還包括一種裝置,若所述SPI沒有記錄在所述內部表的所述SPI-Out字段中,則把對應于所述本地設備的本地IP地址的SPI-In字段設置為0,并設置所述SPI-Out字段等于所述SPI,把所述數據報的所述源IP地址修改為所述網關的所述外部IP地址,并將該數據報傳送到所述外部網絡,以便路由并發送給所述外部設備。
4.根據權利要求1所述的網址轉換網關,其中,該網址轉換網關還包括一種裝置,用于通過接收來自所述外部網絡上的外部設備的打算發送給所述LAN上的所述本地設備的數據報,把來自所述外部設備的數據報發送到所述本地設備;一種裝置,用于確定所述數據報是否加密,若所述數據報加密,則確定該數據報的SPI是否被記錄在所述內部表的所述SPI-In字段中,若所述SPI被記錄在所述SPI-In字段中,則把所述數據報的目的地IP地址修改為所述本地設備的本地IP地址,并把該數據報傳送到所述LAN,以便路由并發送給所述本地設備,若所述SPI沒有記錄在所述內部表的所述SPI-In字段中,則確定對應于所述外部設備的所述IP地址的所述SPI-In字段是否為0,若所述SPI-In字段不是0,則丟棄該數據報,若所述SPI-In字段為0,則設置所述SPI-In字段等于所述SPI,把所述數據報的目的地IP地址修改為所述本地設備的本地IP地址,并把該數據報傳送到所述LAN,以便路由并發送給所述本地設備,若所述數據報沒有加密,則確定所述數據報的目的地端口地址是否包含在所述預留端口地址列表中,若所述目的地端口地址沒有包含在所述預留端口地址列表中,則對所述數據報執行常規地址轉換,并將該數據報傳送到所述LAN,以發送給所述本地設備,若所述目的地端口地址包含在所述預留端口地址列表中,則判斷所述目的地端口地址是否綁定到所述本地設備的本地IP地址,若所述目的地端口地址沒有綁定到所述本地IP地址,則丟棄該數據報,若所述目的地端口地址綁定到所述本地IP地址,則把所述數據報的目的地IP地址修改為所述本地設備的所述本地IP地址,并釋放所述目的地端口地址與所述本地IP地址的綁定,然后將該數據報傳送到所述LAN以發送給所述本地設備。
5.根據權利要求1所述的網址轉換網關,還包含定時器,其中,收到表明端口地址已經綁定到IP地址的信號時,所述定時器將開始在一段預定長度時間內記時,當超過所述預定長度時間后,定時器將發出信號,使所述端口地址與所述IP地址松開綁定,當收到表示所述端口地址已經與所述IP地址松開綁定的信號后,所述定時器將停止記時并復位。
6.根據權利要求1所述的網址轉換網關,其中,所述外部網絡是Internet。
7.根據權利要求6所述的網址轉換網關,其中,所述LAN是虛擬專用網。
8.一種處理從使用本地IP地址的LAN上的本地設備經過網址轉換網關發往外部網絡上外部設備的IP數據報的方法,包含以下步驟維持多個和所述LAN上的本地設備的本地IP地址、所述外部網絡上外部設備的外部IP地址、所述本地設備的端口地址、所述外部設備的端口地址、SPI-In值、SPI-Out值、預留的端口地址相關聯的表,以及預留端口地址的列表,接收來自所述LAN的數據報,判斷所述數據報的目的地端口地址是否被包含在所述預留端口地址列表中,若所述目的地端口地址沒有包含在所述預留端口地址列表中,則對所述數據報執行常規地址轉換,并將該數據報傳送到所述外部網絡,以便路由并發送給所述外部設備,若所述目的地端口地址包含在所述預留端口地址列表中,則判斷所述目的地端口地址是否綁定到一個IP地址,若所述目的地端口地址綁定在一個IP地址,則對所述數據報執行常規地址轉換,并將該數據報傳送到所述外部網絡,以便路由并發送給所述外部設備,若所述目的地端口地址沒有綁定到IP地址,則把所述源IP地址修改為所述外部設備的所述外部IP地址,把所述目的地端口地址綁定到所述本地設備的本地IP地址,創建所述目的地端口地址與所述外部設備的所述外部IP地址之間的關聯,并將該數據報傳送到所述外部網絡,以便路由并發送給所述外部設備。
9.根據權利要求8所述的方法,還包含下述步驟判斷所述數據報是否加密,若所述數據報加密,則判斷所述數據報的SPI是否被記錄在所述多個內部表的其中一個內部表的SPI-Out字段中,若所述SPI記錄在所述內部表的所述SPI-Out字段中,則把源IP地址修改為所述網關的外部IP地址,并將該數據報傳送到所述外部網絡,以便路由并發送給所述外部設備,若所述SPI沒有記錄在所述內部表的SPI-Out字段中,則把對應于所述外部設備的IP地址的所述SPI-Out字段設置為與所述SPI相等,并把所述內部表的所述SPI-In字段設為0,把所述源IP地址修改為所述網關的所述外部IP地址,并將該數據報傳送到所述外部網絡,以便路由并發送給所述外部設備。
10.一種處理從外部網絡上的外部設備經過網址轉換網關傳送到使用本地IP地址的LAN上本地設備的數據報的方法,該方法包括以下步驟維持多個和所述LAN上本地設備的本地IP地址、所述外部網絡上外部設備的外部IP地址、所述本地設備的端口地址、所述外部設備的端口地址、SPI-In值、SPI-Out值、以及預留端口地址相關聯的表,以及預留端口地址的列表,接收來自所述外部網絡的數據報,判斷所述數據報是否加密,若所述數據報沒有加密,則判斷所述數據報的目的地端口地址是否包含在所述預留端口地址列表中,若所述目的地端口地址沒有包含在所述預留端口地址列表中,則執行常規地址轉換,并將該數據報傳送到所述LAN,以便路由并發送給所述本地設備,若所述目的地端口地址包含在所述預留端口地址列表中,則判斷所述數據報的所述目的地端口地址是否綁定到所述本地IP地址,若所述目的地端口沒有綁定到所述本地IP地址,則丟棄該數據報,若所述目的地端口地址綁定到所述本地IP地址,則把所述目的地IP地址修改為所述本地設備的本地IP地址,釋放所述目的地端口地址與所述本地IP地址之間的綁定,并將該數據報傳送到所述LAN,以便路由并發送給所述本地設備。
11.根據權利要求10所述的方法,其中,如果所述數據報加密,則該方法還包括以下步驟判斷所述數據報的SPI是否被記錄在所述多個內部表的其中一個內部表的SPI-In字段中,若所述SPI被記錄在所述內部表的SPI-In字段中,則把目的地IP地址修改為所述本地設備的本地IP地址,并將該數據報傳送到所述LAN,以便路由并發送給所述本地設備,若所述SPI沒有記錄在所述內部表的所述SPI-In字段中,則判斷對應于所述外部設備的IP地址的所述SPI-In字段是否為0,若所述SPI-In字段不是0,則丟棄該數據報,若所述SPI-In字段為0,則把所述SPI-In字段修改為所述SPI,把所述目的地IP地址修改為所述本地設備的本地IP地址,并將該數據報傳送到所述LAN,以便路由并發送給所述本地設備。
12.根據權利要求11所述的處理IP數據報的方法,還包括以下步驟當所述目的地端口地址綁定到所述本地設備的所述本地IP地址時,啟動定時器,當所述目的地端口地址釋放后,復位所述的定時器,當所述定時器在工作且從定時器記時開始的預定長度時間超時時,發出信號。
13.根據權利要求12所述的處理IP數據報的方法,該方法還包括以下步驟當所述目的地端口地址綁定到所述本地設備的所述本地IP地址時,啟動定時器,當所述目的地端口地址釋放后,復位所述的定時器,當所述定時器在工作且從定時器記時開始的預定長度時間超時時,發出信號。
14.根據權利要求11所述的處理IP數據報的方法,其中,所述外部網絡是Internet。
15.根據權利要求12所述的處理IP數據報方法,其中,所述外部網絡是Internet。
16.根據權利要求11所述的處理IP數據報的方法,其中,所述LAN是虛擬專用網。
17.根據權利要求12所述的處理IP數據報的方法,其中,所述LAN是虛擬專用網。
18.一種機器可讀存儲器,其中存儲著含有多個代碼段的計算機程序,這些代碼段可由計算機執行,用于通過網址轉換網關把LAN連接到外部網絡,其中所述網關具有所述LAN上本地設備可視的本地IP地址和所述外部網絡上設備可視的外部IP地址,所述網關還包含多個和所述LAN本地設備的本地IP地址、所述外部網絡上外部設備的外部IP地址、源端口地址、目的地端口地址、預留端口地址的組合相關聯的內部表,以及預留端口地址列表,以幫助機器執行下述步驟通過接收來自所述LAN上本地設備的打算傳輸到所述外部網絡上外部設備的數據報,把來自所述LAN上本地設備的數據報傳送到所述外部網絡上的外部設備;判斷所述數據報的目的地端口地址是否包含在所述預留端口地址列表中,并判斷所述目的地端口地址是否綁定到所述本地設備的本地IP地址;若所述目的地端口地址沒有包含在所述預留端口地址列表中,則對所述數據報執行常規地址轉換,并將該數據報傳送到所述外部網絡,以便路由并發送給所述外部設備;若所述目的地端口地址包含在所述預留端口地址列表中,且所述目的地端口地址已經綁定到所述本地IP地址,則對所述數據報執行常規地址轉換,并將該數據報傳送到所述外部網絡,以便路由并發送給所述外部設備;以及若所述目的地端口地址沒有綁定到所述本地設備的本地IP地址,則把所述數據報的所述源IP地址修改為所述網關的所述外部IP地址,把所述目的地端口地址綁定到所述本地設備的本地IP地址,并創建所述目的地端口地址與所述外部設備的外部IP地址之間的關聯,并將該數據報傳送到所述外部網絡,以便路由并發送給所述外部設備。
全文摘要
一種網絡地址轉換網關(20),為從使用本地IP地址的局域網(10)向外部網絡(30)傳播的IP數據報提供常規網絡轉換,但當端口為特定協議預留時,例如作為IPSec協議模型一部分的ISAKMP“握手”協議,卻掛起源服務地址(端口)的轉換(圖2和圖3)。ISAKMP交換需要源計算機和目標計算機都使用相同的服務地址(端口)。通過提供不轉換源服務地址(端口)的網絡接口,本網關能夠發起并維持在使用本地IP地址的局域網和Internet服務器之間使用IPSec協議的安全加密傳輸。
文檔編號H04L12/46GK1408088SQ01805938
公開日2003年4月2日 申請日期2001年2月27日 優先權日2000年3月3日
發明者伊斯拉埃爾·達尼埃爾·蘇丹 申請人:能聯有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1