穿越NAT的SDWAN技术实现(上)

电子说

1.3w人已加入

描述

在SDWAN网络中,为了节省IP地址资源,分支站点的用户经常会使用私网IP地址。通过NAT将私网IP地址转换为公网IP地址后,该站点的用户才能访问其他站点。CPE发出的报文在经过NAT设备后,IP地址会发生变化。如果无法获取NAT转换后的IP地址,则CPE与CPE/RR之间无法建立SDWAN通道。为了解决此问题,需要使用静态NAT或STUN(Session Traversal Utilities for NAT,NAT环境下的会话传输)技术获取NAT相关信息,并穿越NAT在CPE之间建立SDWAN隧道。

静态NAT技术

静态NAT技术是指在NAT设备上采用静态NAT转换方式的场景中,管理员通过在CPE/RR上部署静态NAT技术,手工指定隧道的源IP地址和端口号(即SDWAN报文封装时的源UDP端口号)NAT转换后的公网IP地址和公网端口号,而无需部署STUN功能来探测NAT转换后的公网IP地址和公网端口号。

STUN技术

STUN是一种处理NAT穿越问题的协议,用来为隧道模块确定网络中是否存在NAT设备,以及NAT设备为通信端点分配的IP地址和端口号。STUN基于UDP传输协议报文,默认使用的端口号为3478。

STUN典型组网

STUN采用C/S模式,由STUN客户端(STUN Client)和STUN服务器(STUN Server)组成,典型组网如图所示。

·STUN客户端:STUN探测的发起者,主动向STUN服务器发送探测请求,根据服务器的响应报文判断NAT设备是否存在,并获取NAT信息。通常部署在CPE设备上。

·STUN服务器:STUN探测的响应者,接收来自STUN客户端的探测请求,并通过在响应报文内填充特定的地址和端口信息向客户端提供判断的依据。通常部署在公网上。

STUN典型组网

sdwan

STUN客户端和STUN服务器通过交互捆绑请求和捆绑响应协议报文,探测NAT转换后的IP地址和端口号,以及NAT类型。

NAT映射和过滤

1. 概念介绍

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设备会对外网主动发到内网的报文进行过滤,即过滤非法报文,转发正常通信报文。

2. NAT映射类型

NAT映射类型包括三种:EIM、ADM和APDM。下面以图为例,详细介绍三种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映射,不考虑报文的目的IP地址和端口号,即同一个内网Endpoint发送到外部网络的任何报文,NAT映射后的结果均相同。如图3-2所示,对于内网Endpoint(X,x),NAT映射后的外网Endpoint均为(Y,y)。

EIM示意图

sdwan

ADM(Address-Dependent Mapping,外部地址相关映射):根据内网Endpoint和报文的目的IP地址进行NAT映射,不考虑报文的目的端口号。即,同一个内网Endpoint发送到外部网络中相同IP地址、任意端口号的报文,NAT映射后的结果相同;同一个内网Endpoint发送到外部网络中不同IP地址的报文,NAT映射后的结果不同。如图所示,对于内网Endpoint(X,x)访问Host B上Endpoint(M,m1)和Endpoint(M,m2)的报文,NAT映射后的外网Endpoint均为(Y1,y1)。

ADM示意图

sdwan

APDM(Address and Port-Dependent Mapping,外部地址和端口相关映射):根据内网Endpoint和外网Endpoint进行NAT映射。即,同一个内网Endpoint发送到同一外网Endpoint的报文,NAT映射后的结果相同;同一个内网Endpoint发送到不同外网Endpoint的报文,NAT映射后的结果不同。如图所示,对于内网Endpoint(X,x)访问Host B的报文,NAT映射后的外网Endpoint为(Y1,y1);内网Endpoint(X,x)访问Host C的报文,NAT映射后的外网Endpoint为(Y2,y2)。

APDM示意图

sdwan

NAT过滤方式

NAT过滤方式包括三种:EIF、ADF和APDF。下面以图3-5、图3-6和图3-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),只要它曾经向某个外网主机发送过数据,该外网主机收到数据报文后就可以根据报文的源IP和源端口获取到内网主机NAT映射后的外网Endpoint(Y,y)。那么,对于任意外部网络主机发送到Endpoint(Y,y)的报文,NAT设备都会进行地址转换并转发到内网。NAT设备接收到外部网络主机发送的报文后,若NAT设备上的映射表中不存在该报文目的Endpoint对应的表项,则NAT设备会将此类报文丢弃。

EIF示意图

sdwan

ADF(Address-Dependent Filtering,外部地址相关过滤):对于内网Endpoint(X,x),只有它曾经向IP地址为M的外网主机Host B发送过报文,NAT设备才会对外网主机Host B使用外网地址M、任意端口号发送到Endpoint(Y,y)的报文进行地址转换。除此之外的外部网络报文都会被NAT设备过滤。

ADF示意图

sdwan

APDF(Address and Port-Dependent Filtering,外部地址和端口相关过滤):对于内网Endpoint(X,x),如果它仅向外网Endpoint(M1,m1)发送过报文,那么NAT设备只会对Endpoint(M1,m1)发送到Endpoint(Y,y)的报文进行地址转换并转发到内网。除此之外的外部网网络报文都会被NAT设备丢弃。

APDF示意图

sdwan

NAT类型

NAT类型是由映射类型和过滤方式组合而成的,有如下四种组合方式:

· Full Cone NAT(完全锥型NAT):EIM和EIF的组合。

所有从同一个私网IP地址和端口(IP1:Port1)发送到NAT设备的报文的地址和端口都会被映射成同一个公网IP地址和端口(IP:Port)。并且,任何外部主机都可以通过该公网IP地址和端口(IP:Port)与内部主机进行通信。

Restricted Cone NAT(限制锥型NAT):EIM和ADF的组合。

所有从同一个私网IP地址和端口(IP1:Port1)发送到NAT设备的报文的地址和端口都会被映射成同一个公网IP和端口号(IP:Port)。与Full Cone NAT不同的是,只有内部主机之前已经访问过的外部主机可以与内部主机通信,其余外部主机不能与内部主机通信。

· Port Restricted Cone NAT(端口限制锥型NAT):EIM和APDF的组合。

所有从同一个私网IP地址和端口(IP1:Port1)发送到NAT设备的报文的地址和端口都会被映射成同一个公网IP和端口号(IP:Port)。与Restricted Cone NAT不同的是,一台公网主机(IP2:Port2)能够与内网主机进行通信的前提是,内网主机曾经通过(IP2:Port2)访问过该公网主机。

Symmetric NAT(对称NAT):APDM和APDF的组合。

所有从同一个私网IP地址和端口(IP1:Port1)发送到一个特定目的IP地址和端口的报文的地址和端口,都会被映射到同一个公网IP地址和端口。如果同一台私网主机使用相同的源地址和端口号发送报文,但是发往不同的目的地,NAT将会使用不同的映射。公网主机(IP2:Port2)与某个内网主机(IP1:Port1)通信的前提是,内网主机(IP1:Port1)曾经通过(IP2:Port2)访问过该公网主机。

(部分内容素材来源于网络,侵权请联系删除)

审核编辑 黄昊宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分