• 产品与解决方案
  • 行业解决方案
  • 服务
  • 支持
  • 合作伙伴
  • 关于我们

18-NAT与IPv6过渡技术配置指导

目录

04-STUN配置

本章节下载 04-STUN配置  (528.05 KB)

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

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 [ ipv6 ] | gre [ ipv6 ] | gre-p2mp [ ipv6 ] | ipsec [ ipv6 ] | ipv4-ipv4 | ipv4-ipv6 | 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 ] [ 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  穿越NAT建立SDWAN隧道配置举例

1. 组网需求

站点网络通过CPE接入SDWAN网络,通过SDWAN实现不同站点网络跨越广域网互通。

在CPE与RR之间部署STUN功能,探测两者之间是否存在NAT设备以及NAT类型。其中CPE作为STUN客户端,RR作为STUN服务器。SDWAN client与SDWAN server之间建立SSL连接完成CPE与RR之间控制通道的建立。RR作为路由反射器,在CPE之间反射通过控制通道接收到的TTE信息和私网路由,完成CPE之间的数据通道的建立和私网路由的发布。通过配置IPsec功能,对SDWAN隧道上转发的报文进行安全保护。

站点网络1和站点网络4属于VPN 1,站点网络2和站点网络3属于VPN 2,通过VPN实现不同租户之间的隔离。

2. 组网图

图1-16 SDWAN网络组网图

 

设备

接口

IP地址

设备

接口

IP地址

CE 1

GE0/0/1

10.1.1.1/24

CE 2

GE0/0/2

10.1.2.1/24

CE 3

GE0/0/1

10.1.3.1/24

CE 4

GE0/0/2

10.1.4.1/24

CPE 1

Loop0

1.1.1.10/32

CPE 2

Loop0

1.1.1.30/32

 

GE0/0/1

10.1.1.2/24

 

GE0/0/1

10.1.3.2/24

 

GE0/0/2

10.1.2.2/24

 

GE0/0/2

10.1.4.2/24

 

GE0/0/3

11.1.1.1/24

 

GE0/0/3

14.1.1.1/24

 

GE0/0/4

12.1.1.1/24

 

GE0/0/4

13.1.1.1/24

STUN server

Loop0

6.6.6.1/32

RR

Loop0

1.1.1.20/32

 

Loop1

6.6.6.2/32

 

GE0/0/3

11.1.1.2/24

 

GE0/0/3

14.1.1.2/24

 

GE0/0/4

13.1.1.2/24

 

GE0/0/4

12.1.1.2/24

 

 

 

 

3. 配置步骤

(1)     配置各接口的IP地址。

按照图1-16配置各接口的IP地址和掩码,具体配置过程略。

(2)     配置OSPF协议发布接口所在网段的路由。CPE和RR无需发布Systerm IP所在接口的网段路由。

(3)     配置站点信息和设备信息。

# 配置CPE 1。

<CPE1> system-view

[CPE1] sdwan site-id 20

[CPE1] sdwan site-name beijing

[CPE1] sdwan site-role cpe

[CPE1] sdwan device-id 20

[CPE1] sdwan system-ip loopback0

[CPE1] sdwan encapsulation global-udp-port 3000

# 配置CPE 2。

<CPE2> system-view

[CPE2] sdwan site-id 30

[CPE2] sdwan site-name nanjing

[CPE2] sdwan site-role cpe

[CPE2] sdwan device-id 30

[CPE2] sdwan system-ip loopback0

[CPE2] sdwan encapsulation global-udp-port 3000

# 配置RR。

<RR> system-view

[RR] sdwan site-id 10

[RR] sdwan site-name shanghai

[RR] sdwan site-role rr

[RR] sdwan device-id 10

[RR] sdwan system-ip loopback0

[RR] sdwan encapsulation global-udp-port 3000

(4)     配置CPE(SDWAN client)与RR(SDWAN server)之间的SSL连接。

请根据组网需要选择一种方式进行SSL配置,本举例以安全方式进行举例:

¡     简便方式:RR上无需配置SSL服务器端策略,RR使用自签名证书(RR自己生成的证书,无需从CA获取)、各SSL参数的缺省值与CPE/NAT transfer建立SSL连接。这种方式简化了配置,但是存在安全隐患。

¡     安全方式:设备需要配置SSL服务器端策略、PKI域等配置。还需要通过FTP、TFTP等协议将证书文件传送到SDWAN server的存储介质中,并配置pki import命令将CA证书、本地证书导入到SDWAN server上指定的PKI域中。这种方式配置复杂,但是具有更高的安全性。

# 配置CPE 1。

[CPE1] ssl client-policy plc1

[CPE1-ssl-client-policy-plc1] prefer-cipher rsa_aes_256_cbc_sha

[CPE1-ssl-client-policy-plc1] undo server-verify enable

[CPE1-ssl-client-policy-plc1] quit

[CPE1] sdwan ssl-client-policy plc1

[CPE1] sdwan server system-ip 1.1.1.20 ip 11.1.1.2 port 1234

# 配置CPE 2。

[CPE2] ssl client-policy plc1

[CPE2-ssl-client-policy-plc1] prefer-cipher rsa_aes_256_cbc_sha

[CPE2-ssl-client-policy-plc1] undo server-verify enable

[CPE2-ssl-client-policy-plc1] quit

[CPE2] sdwan ssl-client-policy plc1

[CPE2] sdwan server system-ip 1.1.1.20 ip 13.1.1.2 port 1234

# 配置RR。

[RR] pki domain dm1

[RR-pki-domain-1] public-key rsa general name dm1 length 2048

[RR-pki-domain-1] undo crl check enable

[RR-pki-domain-1] quit

[RR] ssl server-policy plc1

[RR-ssl-server-policy-plcl] pki-domain dm1

[RR-ssl-server-policy-plcl] quit

[RR] sdwan server port 1234

[RR] sdwan ssl-server-policy plc1

[RR] sdwan server enable

(5)     配置CPE与RR之间的BGP连接,并配置在二者之间发布IPv4 Tnl-encap-ext路由。

# 配置CPE 1。

[CPE1] bgp 100

[CPE1-bgp-default] peer 1.1.1.20 as-number 100

[CPE1-bgp-default] peer 1.1.1.20 connect-interface Loopback0

[CPE1-bgp-default] address-family ipv4 tnl-encap-ext

[CPE1-bgp-default-ipv4] peer 1.1.1.20 enable

[CPE1-bgp-default-ipv4] quit

[CPE1-bgp-default] quit

# 配置CPE 2。

[CPE2] bgp 100

[CPE2-bgp-default] peer 1.1.1.20 as-number 100

[CPE2-bgp-default] peer 1.1.1.20 connect-interface Loopback0

[CPE2-bgp-default] address-family ipv4 tnl-encap-ext

[CPE2-bgp-default-ipv4] peer 1.1.1.20 enable

[CPE2-bgp-default-ipv4] quit

[CPE2-bgp-default] quit

# 配置RR。

[RR] bgp 100

[RR-bgp-default] peer 1.1.1.10 as-number 100

[RR-bgp-default] peer 1.1.1.10 connect-interface Loopback0

[RR-bgp-default] peer 1.1.1.30 as-number 100

[RR-bgp-default] peer 1.1.1.30 connect-interface Loopback0

[RR-bgp-default] address-family ipv4 tnl-encap-ext

[RR-bgp-default-ipv4] peer 1.1.1.10 enable

[RR-bgp-default-ipv4] peer 1.1.1.30 enable

[RR-bgp-default-ipv4] peer 1.1.1.10 reflect-client

[RR-bgp-default-ipv4] peer 1.1.1.30 reflect-client

[RR-bgp-default-ipv4] quit

[RR-bgp-default] quit

(6)     配置SDWAN隧道。

# 配置CPE 1。

[CPE1] interface tunnel 1 mode sdwan udp

[CPE1-Tunnel1] source gigabitethernet 0/0/3

[CPE1-Tunnel1] tunnel out-interface gigabitethernet 0/0/3

[CPE1-Tunnel1] sdwan routing-domain rda id 10

[CPE1-Tunnel1] sdwan transport-network tna id 10

[CPE1-Tunnel1] sdwan interface-id 35

[CPE1-Tunnel1] ip address unnumbered interface gigabitethernet 0/0/3

# 配置CPE 2。

[CPE2] interface tunnel 2 mode sdwan udp

[CPE2-Tunnel2] source gigabitethernet 0/0/4

[CPE2-Tunnel2] tunnel out-interface gigabitethernet 0/0/4

[CPE2-Tunnel2] sdwan routing-domain rda id 10

[CPE2-Tunnel2] sdwan transport-network tnb id 20

[CPE2-Tunnel2] sdwan interface-id 30

[CPE2-Tunnel2] ip address unnumbered interface gigabitethernet 0/0/4

# 配置RR。

[RR] interface tunnel 1 mode sdwan udp

[RR-Tunnel1] source  gigabitethernet 0/0/3

[RR-Tunnel1] tunnel out-interface gigabitethernet 0/0/3

[RR-Tunnel1] sdwan routing-domain rda id 10

[RR-Tunnel1] sdwan transport-network tna id 10

[RR-Tunnel1] sdwan interface-id 30

[RR-Tunnel1] ip address unnumbered interface gigabitethernet 0/0/3

[RR-Tunnel1] quit

[RR] interface tunnel 2 mode sdwan udp

[RR-Tunnel2] source gigabitethernet 0/0/4

[RR-Tunnel2] tunnel out-interface gigabitethernet 0/0/4

[RR-Tunnel2] sdwan routing-domain rda id 10

[RR-Tunnel2] sdwan transport-network tnb id 20

[RR-Tunnel2] sdwan interface-id 40

[RR-Tunnel2] ip address unnumbered interface gigabitethernet 0/0/4

[RR-Tunnel2] quit

(7)     配置STUN功能。

# 开启CPE 1上接口tunnel 1的STUN客户端功能,并设置STUN客户端连接的STUN服务器的IP和端口号。

[CPE1-Tunnel1] stun client destination-ip 6.6.6.1 destination-port 20000

[CPE1-Tunnel1] quit

# 开启CPE 2上接口tunnel 2的STUN客户端功能,并设置STUN客户端连接的STUN服务器的IP和端口号。

[CPE2-Tunnel2] stun client destination-ip 6.6.6.1 destination-port 20000

[CPE2-Tunnel2] quit

# 开启STUN服务器功能,并指定STUN服务器的IP地址和UDP端口号。

[STUN] stun server ip 6.6.6.1 port 20000 alternative-ip 6.6.6.2

(8)     配置IPsec保护SDWAN隧道。

# 配置CPE 1。

[CPE1] ipsec transform-set tran1

[CPE1-transform-set-tran1] encapsulation-mode transport

[CPE1-transform-set-tran1] esp encryption-algorithm 3des-cbc

[CPE1-transform-set-tran1] esp authentication-algorithm md5

[CPE1-transform-set-tran1] quit

[CPE1] ipsec profile prf1 sdwan

[CPE1-ipsec-profile-sdwan-prf1] transform-set tran1

[CPE1-ipsec-profile-sdwan-prf1] quit

[CPE1] interface tunnel 1

[CPE1-Tunnel1] tunnel protection ipsec profile prf1

# 配置CPE 2。

[CPE2] ipsec transform-set tran1

[CPE2-transform-set-tran1] encapsulation-mode transport

[CPE2-transform-set-tran1] esp encryption-algorithm 3des-cbc

[CPE2-transform-set-tran1] esp authentication-algorithm md5

[CPE2-transform-set-tran1] quit

[CPE2] ipsec profile prf1 sdwan

[CPE2-ipsec-profile-sdwan-prf1] transform-set tran1

[CPE2-ipsec-profile-sdwan-prf1] quit

[CPE2] interface tunnel 2

[CPE2-Tunnel2] tunnel protection ipsec profile prf1

# 配置RR。

[RR] ipsec transform-set tran1

[RR-transform-set-tran1] encapsulation-mode transport

[RR-transform-set-tran1] esp encryption-algorithm 3des-cbc

[RR-transform-set-tran1] esp authentication-algorithm md5

[RR-transform-set-tran1] quit

[RR] ipsec profile prf1 sdwan

[RR-ipsec-profile-sdwan-prf1] transform-set tran1

[RR-ipsec-profile-sdwan-prf1] quit

[RR] interface tunnel 1

[RR-Tunnel1] tunnel protection ipsec profile prf1

[RR-Tunnel1] quit

[RR] interface tunnel 2

[RR-Tunnel2] tunnel protection ipsec profile prf1

[RR-Tunnel2] quit

(9)     在CPE设备上配置VPN实例,将CE接入CPE

# 配置CPE 1。

[CPE1] ip vpn-instance vpn1

[CPE1-vpn-instance-vpn1] route-distinguisher 1:1

[CPE1-vpn-instance-vpn1] vpn-target 1:1 import-extcommunity

[CPE1-vpn-instance-vpn1] vpn-target 1:1 export-extcommunity

[CPE1-vpn-instance-vpn1] sdwan vn-id 100

[CPE1-vpn-instance-vpn1] quit

[CPE1] ip vpn-instance vpn2

[CPE1-vpn-instance-vpn2] route-distinguisher 2:2

[CPE1-vpn-instance-vpn2] vpn-target 2:2 import-extcommunity

[CPE1-vpn-instance-vpn2] vpn-target 2:2 export-extcommunity

[CPE1-vpn-instance-vpn2] sdwan vn-id 200

[CPE1-vpn-instance-vpn2] quit

[CPE1] interface gigabitethernet 0/0/1

[CPE1-GigabitEthernet0/0/1] ip binding vpn-instance vpn1

[CPE1-GigabitEthernet0/0/1] quit

[CPE1] interface gigabitethernet 0/0/2

[CPE1-GigabitEthernet0/0/2] ip binding vpn-instance vpn2

[CPE1-GigabitEthernet0/0/2] quit

# 配置CPE 2。

[CPE2] ip vpn-instance vpn1

[CPE2-vpn-instance-vpn1] route-distinguisher 1:1

[CPE2-vpn-instance-vpn1] vpn-target 1:1 import-extcommunity

[CPE2-vpn-instance-vpn1] vpn-target 1:1 export-extcommunity

[CPE2-vpn-instance-vpn1] sdwan vn-id 100

[CPE2-vpn-instance-vpn1] quit

[CPE2] ip vpn-instance vpn2

[CPE2-vpn-instance-vpn2] route-distinguisher 2:2

[CPE2-vpn-instance-vpn2] vpn-target 2:2 import-extcommunity

[CPE2-vpn-instance-vpn2] vpn-target 2:2 export-extcommunity

[CPE2-vpn-instance-vpn2] sdwan vn-id 200

[CPE2-vpn-instance-vpn2] quit

[CPE2] interface gigabitethernet 0/0/1

[CPE2-GigabitEthernet0/0/1] ip binding vpn-instance vpn2

[CPE2-GigabitEthernet0/0/1] quit

[CPE2] interface gigabitethernet 0/0/2

[CPE2-GigabitEthernet0/0/2] ip binding vpn-instance vpn1

[CPE2-GigabitEthernet0/0/2] quit

(10)     在CPE与CE之间建立EBGP对等体,引入VPN路由

# 配置CE 1。

<CE1> system-view

[CE1] bgp 200

[CE1-bgp-default] peer 10.1.1.2 as-number 100

[CE1-bgp-default] address-family ipv4 unicast

[CE1-bgp-default-ipv4] peer 10.1.1.2 enable

[CE1-bgp-default-ipv4] import-route direct

[CE1-bgp-default-ipv4] quit

[CE1-bgp-default] quit

# 配置CE 2。

<CE2> system-view

[CE2] bgp 300

[CE2-bgp-default] peer 10.1.2.2 as-number 100

[CE2-bgp-default] address-family ipv4 unicast

[CE2-bgp-default-ipv4] peer 10.1.2.2 enable

[CE2-bgp-default-ipv4] import-route direct

[CE2-bgp-default-ipv4] quit

[CE2-bgp-default] quit

# 配置CE 3。

<CE3> system-view

[CE3] bgp 400

[CE3-bgp-default] peer 10.1.3.2 as-number 100

[CE3-bgp-default] address-family ipv4 unicast

[CE3-bgp-default-ipv4] peer 10.1.3.2 enable

[CE3-bgp-default-ipv4] import-route direct

[CE3-bgp-default-ipv4] quit

[CE3-bgp-default] quit

# 配置CE 4。

<CE4> system-view

[CE4] bgp 500

[CE4-bgp-default] peer 10.1.4.2 as-number 100

[CE4-bgp-default] address-family ipv4 unicast

[CE4-bgp-default-ipv4] peer 10.1.4.2 enable

[CE4-bgp-default-ipv4] import-route direct

[CE4-bgp-default-ipv4] quit

[CE4-bgp-default] quit

# 配置CPE 1。

[CPE1] bgp 100

[CPE1-bgp-default] ip vpn-instance vpn1

[CPE1-bgp-default-vpn1] peer 10.1.1.1 as-number 200

[CPE1-bgp-default-vpn1] address-family ipv4 unicast

[CPE1-bgp-default-ipv4-vpn1] peer 10.1.1.1 enable

[CPE1-bgp-default-ipv4-vpn1] import-route direct

[CPE1-bgp-default-ipv4-vpn1] quit

[CPE1-bgp-default-vpn1] quit

[CPE1-bgp-default] ip vpn-instance vpn2

[CPE1-bgp-default-vpn2] peer 10.1.2.1 as-number 300

[CPE1-bgp-default-vpn2] address-family ipv4 unicast

[CPE1-bgp-default-ipv4-vpn2] peer 10.1.2.1 enable

[CPE1-bgp-default-ipv4-vpn2] import-route direct

[CPE1-bgp-default-ipv4-vpn2] quit

[CPE1-bgp-default-vpn1] quit

[CPE1-bgp-default] quit

# 配置CPE 2。

[CPE2] bgp 100

[CPE2-bgp-default] ip vpn-instance vpn1

[CPE2-bgp-default-vpn1] peer 10.1.4.1 as-number 500

[CPE2-bgp-default-vpn1] address-family ipv4 unicast

[CPE2-bgp-default-ipv4-vpn1] peer 10.1.4.1 enable

[CPE2-bgp-default-ipv4-vpn1] import-route direct

[CPE2-bgp-default-ipv4-vpn1] quit

[CPE2-bgp-default-vpn1] quit

[CPE2-bgp-default] ip vpn-instance vpn2

[CPE2-bgp-default-vpn2] peer 10.1.3.1 as-number 400

[CPE2-bgp-default-vpn2] address-family ipv4 unicast

[CPE2-bgp-default-ipv4-vpn2] peer 10.1.3.1 enable

[CPE2-bgp-default-ipv4-vpn2] import-route direct

[CPE2-bgp-default-ipv4-vpn2] quit

[CPE2-bgp-default-vpn1] quit

[CPE2-bgp-default] quit

(11)     配置通过IP前缀路由发布站点的私网路由。

# CPE 1。

[CPE1] ip vpn-instance vpn1

[CPE1-vpn-instance-vpn1] address-family ipv4

[CPE1-vpn-ipv4-vpn1] evpn sdwan routing-enable

[CPE1-vpn-ipv4-vpn1] quit

[CPE1-vpn-instance-vpn1] quit

[CPE1] ip vpn-instance vpn2

[CPE1-vpn-instance-vpn2] address-family ipv4

[CPE1-vpn-ipv4-vpn2] evpn sdwan routing-enable

[CPE1-vpn-ipv4-vpn2] quit

[CPE1-vpn-instance-vpn2] quit

[CPE1] bgp 100

[CPE1-bgp-default] address-family l2vpn evpn

[CPE1-bgp-default-evpn] peer 1.1.1.20 enable

[CPE1-bgp-default-evpn] peer 1.1.1.20 advertise encap-type sdwan

[CPE1-bgp-default-evpn] quit

[CPE1-bgp-default] quit

# CPE 2。

[CPE2] ip vpn-instance vpn1

[CPE2-vpn-instance-vpn1] address-family ipv4

[CPE2-vpn-ipv4-vpn1] evpn sdwan routing-enable

[CPE2-vpn-ipv4-vpn1] quit

[CPE2-vpn-instance-vpn1] quit

[CPE2] ip vpn-instance vpn2

[CPE2-vpn-instance-vpn2] address-family ipv4

[CPE2-vpn-ipv4-vpn2] evpn sdwan routing-enable

[CPE2-vpn-ipv4-vpn2] quit

[CPE2-vpn-instance-vpn2] quit

[CPE2] bgp 100

[CPE2-bgp-default] address-family l2vpn evpn

[CPE2-bgp-default-evpn] peer 1.1.1.20 enable

[CPE2-bgp-default-evpn] peer 1.1.1.20 advertise encap-type sdwan

[CPE2-bgp-default-evpn] quit

[CPE2-bgp-default] quit

# RR。

[RR] bgp 100

[RR-bgp-default] address-family l2vpn evpn

[RR-bgp-default-evpn] undo policy vpn-target

[RR-bgp-default-evpn] peer 1.1.1.10 enable

[RR-bgp-default-evpn] peer 1.1.1.10 reflect-client

[RR-bgp-default-evpn] peer 1.1.1.10 advertise encap-type sdwan

[RR-bgp-default-evpn] peer 1.1.1.30 enable

[RR-bgp-default-evpn] peer 1.1.1.30 reflect-client

[RR-bgp-default-evpn] peer 1.1.1.30 advertise encap-type sdwan

4. 验证配置

# 以CPE 1为例,其他设备(CPE 2、RR)与此类似。查看设备上TTE连接的信息,可以看到CPE 1与RR、CPE 2分别建立了TTE连接。

[CPE1] display sdwan tte connection

Destination SiteID/DevID/IfID/SysIP: 10/10/30/1.1.1.20

Destination IP/port: 11.1.1.2/3000

Source SiteID/DevID/IfID/SysIP: 20/20/35/1.1.1.10

Source IP/port: 11.1.1.1/3000

Created at: 2024/07/19 16:11:41

Status: Reachable

State changed at: 2024/07/19 16:11:52

 

Destination SiteID/DevID/IfID/SysIP: 10/10/40/1.1.1.20

Destination IP/port: 13.2.1.1/3000

Source SiteID/DevID/IfID/SysIP: 20/20/35/1.1.1.10

Source IP/port: 11.1.1.1/3000

Created at: 2024/07/19 16:11:39

Status: Reachable

State changed at: 2024/07/19 16:11:39

 

Destination SiteID/DevID/IfID/SysIP: 30/30/20/1.1.1.30

Destination IP/port: 13.2.1.1/3000

Source SiteID/DevID/IfID/SysIP: 20/20/35/1.1.1.10

Source IP/port: 11.1.1.1/3000

Created at: 2024/07/19 16:11:39

Status: Reachable

State changed at: 2024/07/19 16:11:39

 

Number of connections: 3

# 以CPE 1为例,CPE 2设备与此类似。在设备上执行display ip routing-table vpn-instance命令,可以看到去往对端CE 4的路由。

[CPE1] display ip routing-table vpn-instance vpn1

 

Destinations : 14       Routes : 14

 

Destination/Mask   Proto   Pre Cost        NextHop         Interface

0.0.0.0/32         Direct  0   0           127.0.0.1       InLoop0

10.1.1.0/24        Direct  0   0           10.1.1.1        GE0/0/1

10.1.1.2/32        Direct  0   0           127.0.0.1       InLoop0

10.1.1.255/32      Direct  0   0           10.1.1.1        GE0/0/1

10.1.2.0/24        Direct  0   0           10.1.2.1        GE0/0/2

10.1.2.2/32        Direct  0   0           127.0.0.1       InLoop0

10.1.2.255/32      Direct  0   0           10.1.2.1        GE0/0/2

10.1.4.1/24        BGP     255 0           1.1.1.30        Tun1

127.0.0.0/8        Direct  0   0           127.0.0.1       InLoop0

127.0.0.1/32       Direct  0   0           127.0.0.1       InLoop0

127.255.255.255/32 Direct  0   0           127.0.0.1       InLoop0

224.0.0.0/4        Direct  0   0           0.0.0.0         NULL0

224.0.0.0/24       Direct  0   0           0.0.0.0         NULL0

255.255.255.255/32 Direct  0   0           127.0.0.1       InLoop0

# CE 1与CE 4之间可以互访,且CE 2和CE 3之间也可以互访。

不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!

新华三官网
联系我们