13
2025
03
16:11:49

H3C SR6602-I[IE] AI系列ICT融合网关(Comware V9)配置调测配置指导H3C SR6602-I NAT配置指导

https://www.h3c.com/cn/d_202401/2019799_30005_0.htm

03-STUN配置

本章节下载   (426.63 KB)

请您评分并反馈意见:

  录

1 STUN

1.1 STUN简介

1.1.1 STUN基本概念

1.1.2 NAT映射和过滤

1.1.3 NAT类型

1.1.4 STUN应用场景

1.1.5 STUN报文结构

1.1.6 STUN工作机制

1.1.7 私网中部署STUN服务器

1.1.8 STUN客户端重传机制

1.1.9 协议规范

1.2 STUN配置任务简介

1.3 STUN配置准备

1.4 STUN配置限制和指导

1.5 配置STUN服务器

1.6 配置STUN客户端

1.7 STUN显示和维护

1.8 STUN典型配置举例

1.8.1 SDWAN典型配置举例



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消息结构

 

1. STUN消息头

STUN消息头的结构如图1-11所示。

图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客户端的不同探测请求。

2. 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)     进入系统视图。

system-view

(2)     进入Tunnel接口视图。

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

关于本命令的详细介绍,请参见“三层技术-IP业务配置指导”中的“隧道”。

(3)     开启接口的STUN客户端功能,并设置STUN客户端连接的STUN服务器的IP和端口号。

stun client destination-ip ip-address [ destination-port port-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”。




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://sg.hqyman.cn/post/9520.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: