• 產品與解決方案
  • 行業解決方案
  • 服務
  • 支持
  • 合作夥伴
  • 關於我們

07-三層技術-IP業務配置指導

目錄

24-STUN配置

本章節下載 24-STUN配置  (433.07 KB)

24-STUN配置


1 STUN

1.1  STUN簡介

STUN(Session Traversal Utilities for NAT,NAT環境下的會話傳輸)是一種處理NAT穿越問題的協議,為隧道模塊提供了確定網絡中是否存在NAT設備,以及NAT設備為通信端點分配的IP地址和端口號的方法。STUN基於UDP傳輸協議報文,默認使用的端口號為3478。

1.1.1  STUN基本概念

STUN采用C/S模式,由STUN客戶端(STUN Client)和STUN服務器(STUN Server)組成,典型組網如圖1-1所示。

·     STUN客戶端:是一個發送STUN捆綁請求和接受STUN捆綁響應的設備。

·     STUN服務器:是一個發送STUN捆綁響應和接受STUN捆綁請求的設備。STUN服務器通常部署在公網上。

圖1-1 STUN典型組網

 

STUN客戶端和STUN服務器通過交互如下類型的協議報文,探測NAT轉換後的IP地址和端口號,以及NAT類型。STUN客戶端和STUN服務器交互的協議報文類型包括如下兩種:

·     Binding Request:捆綁請求。

·     Binding Response:捆綁響應。

1.1.2  NAT映射和過濾

NAT映射和NAT過濾是NAT穿越技術裏經常用到的兩個概念。在STUN裏,需要通過NAT映射類型和NAT過濾方式來判斷NAT類型,從而確定STUN是否能正常工作。

相關術語如下:

·     Endpoint:指一對IP地址和端口號的組合。例如,Endpoint(X,x)表示IP地址為X、端口號為x。

·     NAT映射:指NAT設備對內網主動發到外網的報文進行映射。當內網主機向外網主機發起訪問時,NAT設備會建立內網Endpoint和外網Endpoint之間的映射關係表,並根據該映射關係將報文的內網Endpoint轉換成外網Endpoint轉發出去。

·     NAT過濾:指NAT設備對外網主動發到內網的報文進行過濾。為了防止內網主機受到攻擊,NAT設備會對外網主動發到內網的報文進行過濾,即過濾非法報文,轉發正常通信報文。

1. NAT映射類型

NAT映射類型包括三種:EIM、ADM和APDM。下麵以圖1-2圖1-3圖1-4為例,詳細介紹三種NAT映射類型。假設內網主機Host A的內網Endpoint為(X,x),經過NAT映射後的外網Endpoint為(Y,y)。外網Host B的Endpoint為(M,m),外網Host C的Endpoint為(N,n)。

·     EIM(Endpoint-Independent Mapping,外部地址無關映射):同一個內網Endpoint發送到任何外部網絡的報文,NAT映射後的結果相同。如圖1-2所示,對於內網Endpoint(X,x),NAT映射後的外網Endpoint均為(Y,y)。

圖1-2 EIM示意圖

 

·     ADM(Address-Dependent Mapping,外部地址相關映射):同一個內網Endpoint發送到外部網絡中相同IP地址、任意端口號的報文,NAT映射後的結果相同。如圖1-3所示,對於內網Endpoint(X,x)訪問Host B的報文,NAT映射後的外網Endpoint為(Y1,y1);內網Endpoint(X, x)訪問Host C的報文,NAT映射後的外網Endpoint為(Y2,y2)。隻要M=N,無論m和n是否相同,都有Endpoint(Y1,y1)=Endpoint(Y2,y2)。

圖1-3 ADM示意圖

 

·     APDM(Address and Port-Dependent Mapping,外部地址和端口相關映射):同一個內網Endpoint發送到外部網絡中的同一個外網Endpoint,NAT映射後的結果相同。如圖1-4所示,對於內網Endpoint(X,x)訪問Host B的報文,NAT映射後的外網Endpoint為(Y1,y1);內網Endpoint(X,x)訪問Host C的報文,NAT映射後的外網Endpoint為(Y2,y2)。隻有當M=N,且m=n時,才有Endpoint(Y1, y1)=Endpoint(Y2, y2)。

圖1-4 APDM示意圖

 

2. NAT過濾方式

NAT過濾方式包括三種:EIF、ADF和APDF。下麵以圖1-5圖1-6圖1-7為例,詳細介紹三種NAT過濾類型。假設內網主機Host A的內網Endpoint為(X,x),經過NAT映射後的外網Endpoint為(Y,y)。外網Host B的Endpoint為(M,m),外網Host C的Endpoint為(N,n)。

·     EIF(Endpoint-Independent Filtering,外部地址無關過濾):對於內網Endpoint(X,x),隻要它曾經向外網發送過數據,外網主機就可以獲取到NAT映射後的外網Endpoint(Y,y)。那麼,對於任意外部網絡的主機發送到Endpoint(Y,y)的報文,NAT設備都會進行地址轉換並轉發到內網。除此之外的外部報文都會被NAT設備過濾。

圖1-5 EIF示意圖

 

·     ADF(Address-Dependent Filtering,外部地址相關過濾):對於內網Endpoint(X,x),隻有它曾經向IP地址為M的外網主機Host B發送過報文,NAT設備才會對外網主機Host B使用外網地址M、任意端口號發送到Endpoint(Y,y)的報文進行地址轉換。除此之外的外部網絡報文都會被NAT設備過濾。

圖1-6 ADF示意圖

 

 

·     APDF(Address and Port-Dependent Filtering,外部地址和端口相關過濾):對於內網Endpoint(X,x),如果它僅向外網Endpoint(M1,m1)發送過報文,那麼NAT設備隻會對Endpoint(M1,m1)發送到Endpoint(Y,y)的報文進行地址轉換並轉發到內網。除此之外的外網網絡報文都會被NAT設備過濾。

圖1-7 APDF示意圖

 

1.1.3  NAT類型

NAT類型是由映射類型和過濾方式組合而成的,有如下四種組合方式:

·     Full Cone NAT是EIM和EIF的組合。

·     Restricted Cone NAT是EIM和ADF的組合。

·     Port Restricted Cone NAT是EIM和APDF的組合。

·     Symmetric NAT是APDM和APDF的組合。

不同類型的NAT的工作機製不同,具體如下:

·     Full Cone NAT(完全錐型NAT):所有從同一個私網IP地址和端口(IP1:Port1)發送到NAT設備的報文都會被映射成同一個公網IP地址和端口(IP:Port)。並且,任何外部主機都可以通過該公網IP地址和端口(IP:Port)和內部主機進行通信。

·     Restricted Cone NAT(限製錐型NAT)。所有從同一個私網IP地址和端口(IP1:Port1)發送到NAT設備的報文都會被映射成同一個公網IP和端口號(IP:Port)。與Full Cone NAT不同的是,不是所有外部主機都可以通過(IP:Port)和內部主機進行通信,除非內部主機之前已經向此外部主機發送過報文。

·     Port Restricted Cone NAT(端口限製錐型NAT)。所有從同一個私網IP地址和端口(IP1:Port1)發送到NAT設備的報文都會被映射成同一個公網IP和端口號(IP:Port)。與Restricted Cone NAT不同的是,一台公網主機(IP2:Port2)能夠和內網主機進行通信的前提是,這台公網主機通過(IP2:Port2)收到內網主機發送的數據包。

·     Symmetric NAT(對稱NAT)。所有從同一個私網IP地址和端口(IP1:Port1)發送到一個特定的目的IP地址和端口的報文,都會被映射到同一個IP地址和端口。如果同一台私網主機使用相同的源地址和端口號發送報文,但是發往不同的目的地,NAT將會使用不同的映射。此外,公網主機與某個內網主機通信的前提是,這台公網主機收到該內網主機發送的數據報文。

1.1.4  STUN應用場景

在如圖1-8所示的SDWAN場景中,為了節約IP地址資源,CPE經常使用私網IP地址,需要經過NAT設備轉換才能訪問總部。由於CPE發出的報文在經過NAT設備後,IP地址會發生變化,如果無法獲取報文轉換後的IP地址,則CPE之間無法建立數據通道。

為了使CPE之間能夠建立數據通道,需要在CPE和RR上使用STUN來探測CPE之間是否存在NAT設備,並確定經過NAT設備轉換後的IP地址和端口號。在CPE和RR上的STUN配置如下:

·     在CPE上配置STUN客戶端功能,CPE通過發送STUN捆綁請求報文發起STUN探測請求。

·     在RR上配置STUN服務器功能,RR通過發送STUN捆綁響應報文回應STUN探測請求。

完成上述配置後,CPE和RR之間通過交互STUN協議報文探測到轉換後的IP地址和端口號後,CPE 1和CPE 2使用對方轉換後的IP地址作為建立數據通道的目的IP地址。

關於穿越NAT的SDWAN隧道的詳細介紹,請參見“IP業務配置指導”中的“SDWAN”。

圖1-8 穿越NAT的SDWAN隧道示意圖

 

1.1.5  STUN報文結構

STUN基於UDP傳輸協議報文,協議報文的封裝格式如圖1-9所示。

圖1-9 STUN報文結構

 

圖1-10所示,STUN消息(STUN Message)包括STUN消息頭和STUN消息屬性兩部分。STUN消息頭的長度為20字節,後麵跟著零個或多個屬性。

圖1-10 STUN消息結構

 

2. STUN消息頭

STUN消息頭的結構如圖1-12所示。

圖1-11 STUN消息頭結構

 

STUN消息頭包含如下字段:

·     STUN Message Type:STUN消息類型,長度為14比特。當前僅支持STUN捆綁請求和STUN捆綁響應兩種類型的消息。

·     Message Length:STUN消息長度,長度為16比特(不包括消息頭長度)。

·     Magic Cookie:魔術字,長度為32比特。魔術字包含固定值0x2112A442,用於STUN服務器檢測STUN客戶端是否可以識別特定屬性。此外,當STUN與其他協議使用相同的端口號時,通過魔術字可以將STUN和其他協議區分開。

·     Transaction ID:事務ID,長度為96比特,用於唯一標識一次STUN探測。事務ID由STUN客戶端來選擇,在一次STUN探測中,STUN服務器收到STUN的捆綁請求消息後,以同樣的事務ID返回STUN捆綁響應消息。同時,STUN服務器根據事務ID來唯一標識STUN客戶端的不同探測請求。

3. STUN消息屬性

STUN消息屬性采用TLV(Type/Length/Value,類型/長度/值)格式,結構如圖1-12所示。其中,Type和Length字段的長度均為16比特,Value字段的長度可變。

圖1-12 STUN消息屬性結構

 

常見的STUN消息屬性包括如下幾種:

·     CHANGE-REQUEST:捆綁請求中攜帶的消息屬性,STUN客戶端使用此屬性來請求STUN服務器使用不同的IP地址或端口號來發送捆綁響應。

·     MAPPED-ADDRESS:捆綁響應中攜帶的消息屬性,表示經過地址轉換後的STUN客戶端的IP地址和端口。

·     XOR-MAPPED-ADDRESS:捆綁響應中攜帶的消息屬性,表示經過地址轉換後的STUN客戶端的IP地址和端口。與MAPPED-ADDRESS不同的是,XOR-MAPPED-ADDRESS屬性中攜帶的IP地址經過了異或(XOR)處理。

·     RESPONSE-ORIGIN:捆綁響應中攜帶的消息屬性,表示STUN服務器發送數據的IP地址和端口。

·     OTHER-ADDRESS:捆綁響應中攜帶的消息屬性,表示STUN服務器的另一個IP地址和端口號。假設STUN服務器的IP地址為Y1,替代IP地址為Y2,端口號為YP1,替代端口號為YP2。Da表示STUN客戶端發送捆綁請求的目的IP地址,Dp表示STUN客戶端發送捆綁請求的目的端口號。如果Da為Y1,那麼OTHER-ADDRESS中的IP地址為Y2;如果Da為Y2,那麼OTHER-ADDRESS中的IP地址為Y1。如果Dp為YP1,那麼OTHER-ADDRESS中的端口號為YP2;如果Dp為YP2,那麼OTHER-ADDRESS中的端口號為YP1。

當STUN客戶端要求STUN服務器使用不同的IP地址發送捆綁響應時,如果Da為Y1,則捆綁響應報文OTHER-ADDRESS中的IP地址為Y2;如果Da為Y2,則OTHER-ADDRESS中的IP地址為Y1。類似地,當STUN客戶端要求STUN服務器使用不同的端口號發送捆綁響應時,如果Dp為YP1,那麼OTHER-ADDRESS中的端口號為YP2;如果Dp為YP2,那麼OTHER-ADDRESS中的端口號為YP1。

如果STUN服務器未指定替代IP地址,則捆綁響應報文中不會攜帶OTHER-ADDRESS屬性,這種情況下,STUN客戶端無法判斷NAT類型。

1.1.6  STUN工作機製

STUN客戶端通過和STUN服務器之間交互STUN協議報文,探測網絡中NAT設備上的NAT映射的類型和NAT過濾的方式,並根據探測結果判斷NAT類型。

1. NAT映射類型探測

假設STUN服務器的IP地址為Y1,替代IP地址為Y2,端口號為YP1,替代端口號為YP2。STUN客戶端的IP地址和端口號為(X,XP)。STUN進行NAT映射探測的流程如圖1-13所示,具體步驟為:

(1)     STUN客戶端以Endpoint(X,XP)為源地址和源端口向STUN服務器的外網Endpoint(Y1,YP1)發送捆綁請求。STUN服務器使用Endpoint(Y1,YP1)給STUN客戶端發送捆綁響應,響應內容包括:STUN客戶端經過NAT映射後的外網Endpoint(X1,XP1),以及STUN服務器的另一個外網Endpoint(Y2,YP2)。

(2)     STUN客戶端收到STUN服務器發送的捆綁響應報文後,判斷NAT映射後的Endpoint(X1,XP1)是否與內網Endpoint(X,XP)相同:

a.     如果Endpoint(X1,XP1)與Endpoint(X,XP)相同,則SUTN客戶端認為不存在NAT映射。

b.     如果Endpoint(X1,XP1)與Endpoint(X,XP)不同,則STUN客戶端使用第(3)步進行探測。

(3)     STUN客戶端以Endpoint(X,XP)給STUN服務器的外網Endpoint(Y2,YP1)發送捆綁請求。STUN服務器使用Endpoint(Y2,YP1)給STUN客戶端發送捆綁響應,響應內容包括:STUN客戶端經過NAT映射後的外網Endpoint(X2,XP2)。

(4)     STUN客戶端收到STUN服務器發送的捆綁響應報文後,判斷NAT映射後的Endpoint(X2,XP2)是否與第(1)步中NAT映射後的Endpoint(X1,XP1)相同:

a.     如果Endpoint(X2,XP2)與Endpoint(X1,XP1)相同,則STUN客戶端認為NAT映射類型為EIM。

b.     如果Endpoint(X2,XP2)與Endpoint(X1,XP1)不同,則STUN客戶端使用第(5)步進行探測。

(5)     STUN客戶端以Endpoint(X,XP)給STUN服務器的外網Endpoint(Y2,YP2)發送捆綁請求。STUN服務器使用Endpoint(Y2,YP2)給STUN客戶端發送捆綁響應,響應內容包括:STUN客戶端經過NAT映射後的外網Endpoint(X3,XP3)。

(6)     STUN客戶端收到STUN服務器發送的捆綁響應報文後,判斷NAT映射後的Endpoint(X3,XP3)是否與第(3)步中NAT映射後的Endpoint(X2,XP2)相同:

a.     如果Endpoint(X3,XP3)與Endpoint(X2,XP2)相同,則STUN客戶端認為NAT映射類型為ADM。

b.     如果Endpoint(X3,XP3)與Endpoint(X2,XP2)不同,則STUN客戶端認為NAT映射類型為APDM。

圖1-13 NAT映射類型探測流程圖

 

2. NAT過濾方式探測

假設STUN服務器的IP地址為Y1,替代IP地址為Y2,端口號為YP1,替代端口號為YP2。STUN客戶端的IP地址和端口號為(X,XP)。STUN進行NAT映射探測的流程如圖1-14所示,具體步驟為:

(1)     STUN客戶端以Endpoint(X,XP)為源地址和源端口向STUN服務器的外網Endpoint(Y1,YP1)發送捆綁請求,請求報文中攜帶CHANGE-REQUEST屬性,即要求STUN服務器改變IP地址和端口號來發送捆綁響應。STUN服務器發送給STUN客戶端的捆綁響應中,OTHER-ADDRESS為(Y2,YP2),捆綁響應的源地址和源端口為(Y2,YP2)。

(2)     STUN客戶端根據是否能收到響應報文進行如下判斷:

a.     如果STUN客戶端收到了捆綁響應報文,則STUN客戶端認為NAT過濾類型為EIF。

b.     如果STUN客戶端未收到捆綁響應報文,則STUN客戶端使用第(3)步進行探測。

(3)     STUN客戶端以Endpoint(X,XP)給STUN服務器的外網Endpoint(Y1,YP1)發送捆綁請求,請求報文中攜帶CHANGE-REQUEST屬性,即要求STUN服務器改變端口號來發送捆綁響應。STUN服務器發送給STUN客戶端的捆綁響應中,OTHER-ADDRESS為(Y2,YP2),捆綁響應的源地址和源端口為(Y1,YP2)。

(4)     STUN客戶端根據是否能收到響應報文進行如下判斷:

a.     如果STUN客戶端收到了捆綁響應報文,則STUN客戶端認為NAT過濾類型為ADF。

b.     如果STUN客戶端未收到捆綁響應報文,則STUN客戶端認為NAT過濾類型為APDF。

圖1-14 NAT過濾方式探測流程圖

 

1.1.7  私網中部署STUN服務器

STUN服務器通常部署在公網上,STUN服務器收到STUN客戶端發送的捆綁請求報文後,向STUN客戶端發送捆綁響應報文,且捆綁響應報文載荷中的IP地址為STUN服務器的公網地址。如果STUN服務器部署在私網,STUN服務器發送的捆綁響應報文載荷中的IP地址為STUN服務器的私網地址。由於STUN服務器側的NAT設備不會將捆綁響應報文載荷中的私網IP地址轉換為公網IP,需要網絡設備做如下配合才能滿足STUN探測需求:

·     STUN服務器上手工指定經過地址轉換後的STUN服務器的IP地址、替代IP地址。

·     STUN服務器側的NAT設備上使用公私網映射關係唯一的地址轉換規則。

基於此,STUN客戶端就不會感知STUN服務器的私網IP地址,仍然通過STUN服務器的公網IP地址與之互通,且STUN服務器發送給客戶端的STUN協議報文載荷中的地址也會填充為STUN服務器的公網IP地址。

圖1-15 STUN服務器部署在私網的典型組網

 

1.1.8  STUN客戶端重傳機製

STUN基於UDP傳輸協議報文,STUN協議報文有可能在傳輸過程中被丟棄。STUN請求/響應事務的可靠性是通過STUN客戶端的重傳機製來實現的,具體機製如下:

(1)     STUN客戶端發送捆綁請求報文後,如果在一定時間沒有收到捆綁響應報文,STUN客戶端會以一定的時間間隔重傳捆綁請求報文。

(2)     當STUN客戶端收到捆綁響應報文,或者重傳STUN報文的次數達到最大,STUN客戶端將停止重傳。

(3)     如果STUN客戶端重傳STUN報文的次數達到最大後,還未收到捆綁響應報文,則STUN客戶端認為捆綁請求報文傳輸失敗,無法進行STUN探測。

1.1.9  協議規範

與STUN相關的協議規範有:

·     RFC 3489:STUN - Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs)

·     RFC 5389:Session Traversal Utilities for NAT (STUN)

·     RFC 5780:NAT Behavior Discovery Using Session Traversal Utilities for NAT (STUN)

1.2  STUN配置任務簡介

(1)     配置STUN服務器

(2)     配置STUN客戶端

1.3  STUN配置準備

STUN主要用於解決SDWAN網絡中的NAT穿越問題。在SDWAN網絡中,STUN的探測結果需要在SDWAN隧道中傳輸。因此在配置STUN服務器和STUN客戶端前,需要完成SDWAN的配置。關於SDWAN配置的詳細介紹,請參見“三層技術-IP業務配置指導”中的“SDWAN”。

1.4  STUN配置限製和指導

為了STUN探測功能能夠正常工作,需要保證STUN客戶端到STUN服務器的IP地址和替代IP地址均路由可達。

1.5  配置STUN服務器

(1)     進入係統視圖。

system-view

(2)     開啟STUN服務器功能,並指定STUN服務器的IP地址和UDP端口號。

stun server ip ip-address [ port port-number ] [ alternative-ip ip-address [ alternative-port port-number ] ] [ vpn-instance vpn-instance-name ] [ global-ip global-ip-address [ global-port port-number ] [ global-alternative-ip ip-address [ global-alternative-port port-number ] ] ]

缺省情況下,STUN服務器功能處於關閉狀態。

1.6  配置STUN客戶端

1. 功能簡介

配置本功能後,設備將作為STUN客戶端與本功能中指定的STUN服務器建立連接,然後向STUN服務器發送捆綁請求報文。STUN客戶端通過與STUN服務器交互協議報文獲取NAT轉換後的IP地址和端口號,並判斷NAT類型。

STUN客戶端上可以指定多個STUN服務器進行探測,工作機製如下:

(1)     STUN客戶端向所有指定的STUN服務器發送捆綁請求報文。

(2)     STUN客戶端同一時刻隻能處理一個STUN服務器發送的捆綁響應報文。隻要STUN客戶端通過處理其中一個STUN服務器發送的捆綁響應報文確定了NAT類型、NAT轉換後的Public IP和端口號,則不會通過其他STUN服務器進行探測。

(3)     如果探測失敗,則STUN客戶端重複步驟(1)(2)

2. 配置限製和指導

STUN客戶端上指定多個STUN服務器時,需要保證指定的多個STUN服務器位於同一台NAT設備後,否則無法保證探測結果的準確性。

3. 配置步驟

(1)     進入係統視圖。

system-view

(2)     進入Tunnel接口視圖。

interface tunnel number [ mode { advpn { gre | udp } [ ipv6 ] | ds-lite-aftr | eogre | eogre-udp | evi | gre [ ipv6 ] | gre-p2mp [ ipv6 ] | ipsec [ ipv6 ] | ipv4-ipv4 | ipv6-ipv4 [ 6rd | 6to4 | auto-tunnel | isatap ] mgre | mpls-te | sdwan udp [ ipv6 ] | sdwan-ex gre [ ipv6 ] | sr ipv6 | vxlan [ ipv6 ] } ]

關於本命令的詳細介紹,請參見“三層技術-IP業務配置指導”中的“隧道”。

(3)     開啟接口的STUN客戶端功能,並設置STUN客戶端連接的STUN服務器的IP和端口號。

stun client destination-ip ip-address [ destination-port port-number ] [ out-interface interface-type interface-number ]

缺省情況下,接口的STUN客戶端功能處於關閉狀態。

1.7  STUN顯示和維護

在完成上述配置後,在任意視圖下執行display命令可以顯示STUN配置後的運行情況,通過查看顯示信息驗證配置的效果。

在用戶視圖下,執行reset命令可以清除STUN表項。

表1-1 NAT顯示和維護

操作

命令

查看STUN客戶端收發報文的統計信息

display stun client info

查看STUN服務器收發報文的統計信息

display stun server packet-statistics

清除STUN客戶端的報文統計信息

reset stun client statistics

清除STUN服務器的報文統計信息

reset stun server packet-statistics

 

1.8  STUN典型配置舉例

1.8.1  SDWAN典型配置舉例

SDWAN典型配置舉例中,使用STUN來穿越NAT。關於此典型配置舉例的具體內容,請參見“SDWAN配置指導”中的“SDWAN”。

不同款型規格的資料略有差異, 詳細信息請向具體銷售和400谘詢。H3C保留在沒有任何通知或提示的情況下對資料內容進行修改的權利!

BOB登陆
官網
聯係我們