CN112751946A - 一种隧道建立方法、装置、设备及计算机可读存储介质 - Google Patents

一种隧道建立方法、装置、设备及计算机可读存储介质 Download PDF

Info

Publication number
CN112751946A
CN112751946A CN201911055193.XA CN201911055193A CN112751946A CN 112751946 A CN112751946 A CN 112751946A CN 201911055193 A CN201911055193 A CN 201911055193A CN 112751946 A CN112751946 A CN 112751946A
Authority
CN
China
Prior art keywords
nat
port number
message
source
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201911055193.XA
Other languages
English (en)
Other versions
CN112751946B (zh
Inventor
韩瑞波
李晗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Mobile Communications Group Co Ltd
China Mobile Communications Ltd Research Institute
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile Communications Ltd Research Institute
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Mobile Communications Group Co Ltd, China Mobile Communications Ltd Research Institute filed Critical China Mobile Communications Group Co Ltd
Priority to CN201911055193.XA priority Critical patent/CN112751946B/zh
Publication of CN112751946A publication Critical patent/CN112751946A/zh
Application granted granted Critical
Publication of CN112751946B publication Critical patent/CN112751946B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2592Translation of Internet protocol [IP] addresses using tunnelling or encapsulation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种隧道建立方法、装置、设备及计算机可读存储介质,涉及通信技术领域,以解决广域网环境GRE协议的应用范围受限的问题。该方法包括:通过第二端的NAT探测服务器确定第一端需穿越的NAT的类型;根据所述第一端需穿越的NAT的类型,配置第一端的GRE隧道信息,以建立与所述第二端之间的GRE隧道;其中,所述第二端具有公网地址。本发明实施例可扩大广域网环境GRE协议的应用范围。

Description

一种隧道建立方法、装置、设备及计算机可读存储介质
技术领域
本发明涉及通信技术领域,尤其涉及一种隧道建立方法、装置、设备及计算机可读存储介质。
背景技术
对于运行在公网上的GRE(Generic Routing Encapsulation,通用路由封装)隧道,两端必须至少一端具有公网地址,才能穿越NAT(Network Address Translation,网络地址转换)建立隧道,否则GRE隧道无法建立。因此,利用现有的方案限制了广域网环境GRE协议的应用范围。
发明内容
本发明实施例提供一种隧道建立方法、装置、设备及计算机可读存储介质,以解决广域网环境GRE协议的应用范围受限的问题。
第一方面,本发明实施例提供了一种隧道建立方法,应用于待建立的通用路由封装GRE隧道的第一端,包括:
通过第二端的网络地址转换NAT探测服务器确定第一端需穿越的NAT的类型;
根据所述第一端需穿越的NAT的类型,配置第一端的GRE隧道信息,以建立与所述第二端之间的GRE隧道;
其中,所述第二端具有公网地址。
其中,在所述第一端需穿越的NAT的类型为基本NAT的情况下,所述配置第一端的通用路由封装GRE隧道信息,包括:
配置源地址为第一端的私网地址,目的地址为第二端的公网地址。
其中,在所述第一端需穿越的NAT的类型为对称型NAT的情况下,所述配置第一端的通用路由封装GRE隧道信息,包括:
探测源用户数据报协议UDP端口号和目的UDP端口号均为预设值的报文、第一端经NAT映射后的源IP地址和源UDP端口号;
将GRE报文封装在源UDP端口号和目的UDP端口号均为所述预设值的因特网协议IP报文中,并向所述第二端发送所述IP报文;
接收所述第二端发送的报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述预设值,目的IP为第一端的IP地址、目的端口号为预设值。
其中,在所述第一端需穿越的NAT的类型为完全圆锥型NAT或者为地址限制圆锥型NAT或者为端口限制圆锥型NAT的情况下,所述配置第一端的通用路由封装GRE隧道信息,包括:
探测源UDP端口号和目的UDP端口号均为预设值的报文、第一端经NAT映射后的源IP地址和源UDP端口号;
利用第一端经NAT映射后的源IP地址、源UDP端口号和所述第二端的公网地址进行哈希计算,将得到的哈希值作为目的UDP端口号,并向所述第二端发送所述目的UDP端口号;
将GRE报文封装在源UDP端口号为所述预设值、目的端口号为所述哈希值的IP报文中,并向所述第二端发送所述IP报文;
接收所述第二端发送的报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述哈希值,目的IP为第一端的IP地址、目的端口号为预设值。
其中,在所述GRE隧道中传输的报文是通过将GRE协议包封装在UDP包中得到的。
第二方面,本发明实施例还提供一种隧道建立方法,应用于待建立的GRE隧道的第二端,所述第二端设置有NAT探测服务器,包括:
确定第一端需穿越的NAT的类型;
向所述第一端发送所述第一端需穿越的NAT的类型;
其中,所述第二端具有公网地址。
其中,所述方法还包括:
在所述第一端需穿越的NAT的类型为对称型NAT的情况下,获取所述第一端经NAT映射后的IP地址、UDP端口号,以及目的端口号,其中,所述目的端口号为预设值;
接收所述第一端发送的IP报文,其中,所述IP报文是通过将GRE报文封装在源UDP端口号和目的UDP端口号均为所述预设值的报文中得到的;
向第一端发送报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述预设值,目的IP为第一端的IP地址、目的端口号为预设值。
其中,所述方法还包括:
在所述第一端需穿越的NAT的类型为完全圆锥型NAT或者为地址限制圆锥型NAT或者为端口限制圆锥型NAT的情况下,获取所述第一端经NAT映射后的IP地址、UDP端口号,以及目的端口号,其中,所述目的端口号为将NAT映射后的源IP地址、源UDP端口号和所述第二端的公网地址进行哈希计算而得到的哈希值;
接收所述第一端发送的IP报文,其中,所述IP报文是通过将GRE报文封装在源UDP端口为所述预设值、目的端口号为所述哈希值的报文中得到的;
向第一端发送报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述哈希值,目的IP为第一端的IP地址、目的端口号为预设值。
其中,在所述GRE隧道中传输的报文是通过将GRE协议包封装在UDP包中得到的。
第三方面,本发明实施例还提供一种隧道建立装置,应用于待建立的GRE隧道的第一端,包括:
确定模块,用于通过第二端的网络地址转换NAT探测服务器确定第一端需穿越的NAT的类型;
配置模块,用于根据所述第一端需穿越的NAT的类型,配置第一端的GRE隧道信息,以建立与所述第二端之间的GRE隧道;
其中,所述第二端具有公网地址。
其中,所述配置模块具体用于,在所述第一端需穿越的NAT的类型为基本NAT的情况下,配置源地址为第一端的私网地址,目的地址为第二端的公网地址。
其中,所述配置模块可包括:
第一探测子模块,用于在所述第一端需穿越的NAT的类型为对称型NAT的情况下,探测源用户数据报协议UDP端口号和目的UDP端口号均为预设值的报文、第一端经NAT映射后的源IP地址和源UDP端口号;
第一发送子模块,用于将GRE报文封装在源UDP端口号和目的UDP端口号均为所述预设值的因特网协议IP报文中,并向所述第二端发送所述IP报文;
第一接收子模块,用于接收所述第二端发送的报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述预设值,目的IP为第一端的IP地址、目的端口号为预设值。
其中,所述配置模块可包括:
第二探测子模块,用于在所述第一端需穿越的NAT的类型为完全圆锥型NAT或者为地址限制圆锥型NAT或者为端口限制圆锥型NAT的情况下,探测源UDP端口号和目的UDP端口号均为预设值的报文、第一端经NAT映射后的源IP地址和源UDP端口号;
计算子模块,用于利用第一端经NAT映射后的源IP地址、源UDP端口号和所述第二端的公网地址进行哈希计算,将得到的哈希值作为目的UDP端口号,并向所述第二端发送所述目的UDP端口号;
第二发送子模块,用于将GRE报文封装在源UDP端口号为所述预设值、目的端口号为所述哈希值的IP报文中,并向所述第二端发送所述IP报文;
第二接收子模块,用于接收所述第二端发送的报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述哈希值,目的IP为第一端的IP地址、目的端口号为预设值。
其中,在所述GRE隧道中传输的报文是通过将GRE协议包封装在UDP包中得到的。
第四方面,本发明实施例还提供一种隧道建立装置,应用于待建立的GRE隧道的第二端,包括:
确定模块,用于确定第一端需穿越的NAT的类型;
发送模块,用于向所述第一端发送所述第一端需穿越的NAT的类型;
其中,所述第二端具有公网地址。
其中,所述装置还可包括:
第一获取子模块,用于在所述第一端需穿越的NAT的类型为对称型NAT的情况下,获取所述第一端经NAT映射后的IP地址、UDP端口号,以及目的端口号,其中,所述目的端口号为预设值;
第一接收子模块,用于接收所述第一端发送的IP报文,其中,所述IP报文是通过将GRE报文封装在源UDP端口号和目的UDP端口号均为所述预设值的报文中得到的;
第一发送子模块,用于向第一端发送报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述预设值,目的IP为第一端的IP地址、目的端口号为预设值。
其中,所述装置还可包括:
第二获取子模块,用于在所述第一端需穿越的NAT的类型为完全圆锥型NAT或者为地址限制圆锥型NAT或者为端口限制圆锥型NAT的情况下,获取所述第一端经NAT映射后的IP地址、UDP端口号,以及目的端口号,其中,所述目的端口号为将NAT映射后的源IP地址、源UDP端口号和所述第二端的公网地址进行哈希计算而得到的哈希值;
第二接收子模块,用于接收所述第一端发送的IP报文,其中,所述IP报文是通过将GRE报文封装在源UDP端口为所述预设值、目的端口号为所述哈希值的报文中得到的;
第二发送子模块,用于向第一端发送报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述哈希值,目的IP为第一端的IP地址、目的端口号为预设值。
其中,在所述GRE隧道中传输的报文是通过将GRE协议包封装在UDP包中得到的。
第五方面,本发明实施例还提供一种隧道建立装置,应用于待建立的GRE隧道的第一端,包括:处理器和收发器;
所述处理器,用于通过第二端的网络地址转换NAT探测服务器确定第一端需穿越的NAT的类型;根据所述第一端需穿越的NAT的类型,配置第一端的GRE隧道信息,以建立与所述第二端之间的GRE隧道;
其中,所述第二端具有公网地址。
其中,所述处理器1001还用于,在所述第一端需穿越的NAT的类型为基本NAT的情况下,配置源地址为第一端的私网地址,目的地址为第二端的公网地址。
其中,所述处理器1001还用于,在所述第一端需穿越的NAT的类型为对称型NAT的情况下,探测源用户数据报协议UDP端口号和目的UDP端口号均为预设值的报文、第一端经NAT映射后的源IP地址和源UDP端口号;将GRE报文封装在源UDP端口号和目的UDP端口号均为所述预设值的因特网协议IP报文中,并向所述第二端发送所述IP报文;接收所述第二端发送的报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述预设值,目的IP为第一端的IP地址、目的端口号为预设值。
其中,所述处理器1001还用于,在所述第一端需穿越的NAT的类型为完全圆锥型NAT或者为地址限制圆锥型NAT或者为端口限制圆锥型NAT的情况下,探测源UDP端口号和目的UDP端口号均为预设值的报文、第一端经NAT映射后的源IP地址和源UDP端口号;利用第一端经NAT映射后的源IP地址、源UDP端口号和所述第二端的公网地址进行哈希计算,将得到的哈希值作为目的UDP端口号,并向所述第二端发送所述目的UDP端口号;将GRE报文封装在源UDP端口号为所述预设值、目的端口号为所述哈希值的IP报文中,并向所述第二端发送所述IP报文;接收所述第二端发送的报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述哈希值,目的IP为第一端的IP地址、目的端口号为预设值。
其中,在所述GRE隧道中传输的报文是通过将GRE协议包封装在UDP包中得到的。
第六方面,本发明实施例还提供一种隧道建立装置,应用于待建立的GRE隧道的第二端,包括:处理器和收发器;
所述处理器,用于确定第一端需穿越的NAT的类型;
所述收发器,用于向所述第一端发送所述第一端需穿越的NAT的类型;
其中,所述第二端具有公网地址。
其中,所述处理器1101还用于,在所述第一端需穿越的NAT的类型为对称型NAT的情况下,获取所述第一端经NAT映射后的IP地址、UDP端口号,以及目的端口号,其中,所述目的端口号为预设值;
所述收发器1102还用于,接收所述第一端发送的IP报文,其中,所述IP报文是通过将GRE报文封装在源UDP端口号和目的UDP端口号均为所述预设值的报文中得到的;向第一端发送报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述预设值,目的IP为第一端的IP地址、目的端口号为预设值。
其中,所述处理器1101还用于,在所述第一端需穿越的NAT的类型为完全圆锥型NAT或者为地址限制圆锥型NAT或者为端口限制圆锥型NAT的情况下,获取所述第一端经NAT映射后的IP地址、UDP端口号,以及目的端口号,其中,所述目的端口号为将NAT映射后的源IP地址、源UDP端口号和所述第二端的公网地址进行哈希计算而得到的哈希值;
所述收发器1102还用于,接收所述第一端发送的IP报文,其中,所述IP报文是通过将GRE报文封装在源UDP端口为所述预设值、目的端口号为所述哈希值的报文中得到的;向第一端发送报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述哈希值,目的IP为第一端的IP地址、目的端口号为预设值。
其中,在所述GRE隧道中传输的报文是通过将GRE协议包封装在UDP包中得到的。
第七方面,本发明实施例还提供一种通信设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的程序,所述处理器执行所述程序时实现如上第一方面或者第二方面方法中的步骤。
第八方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上第一方面或者第二方面方法中的步骤。
在本发明实施例中,通过对第一端需穿越的NAT类型的判断,配置第一端的GRE隧道信息,可解决传统GRE协议不能穿越NAT的问题,从而扩大了广域网环境GRE协议的应用范围。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的隧道建立方法的流程图之一;
图2(a)是现有技术中的报文结构示意图;
图2(b)是本发明实施例提供的报文结构示意图;
图3是本发明实施例提供的隧道建立方法的流程图之二;
图4是本发明实施例提供的隧道建立系统的示意图;
图5-图7分别是本发明实施例提供的建立IPSEC隧道的示意图;
图8是本发明实施例提供的隧道建立装置的结构图之一;
图9是本发明实施例提供的隧道建立装置的结构图之二;
图10是本发明实施例提供的隧道建立装置的结构图之三;
图11是本发明实施例提供的隧道建立装置的结构图之四;
图12是本发明实施例提供的通信设备的结构图之一;
图13是本发明实施例提供的通信设备的结构图之二。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,图1是本发明实施例提供的隧道建立方法的流程图,应用于待建立的GRE隧道的第一端,如图1所示,包括以下步骤:
步骤101、通过第二端的NAT探测服务器确定第一端需穿越的NAT的类型。
其中,所述第一端和后文的第二端为待建立的GRE隧道的两端的设备,例如CPE(Customer Premise Equipment,客户前置设备)等。其中,所述第二端具有公网地址。
在本发明实施例中,通过与第二端的NAT探测服务器进行交互,确定第一端需穿越的NAT的类型。
NAT主要可以分为两类:基本NAT和NAPT(Network Address Port Translation,网络地址翻译)。
基本NAT一般是用于NAT设备拥有多个公网IP(Internet Protocol,因特网协议)的情形下,将公网IP地址与内网主机进行静态绑定。
NAPT(Network Address/Port Translators)为常用的NAT形式。NAPT将内部连接映射到外部网络中的一个单独IP地址上,同时在该地址上加上一个由NAT设备选定的端口号。根据映射方式不同,NAPT可以分为对称性NAT和圆锥型NAT,其中,圆锥型NAT包括完全圆锥型NAT、地址限制圆锥型NAT和端口限制圆锥型NAT。
(1)、完全圆锥型NAT(Full Cone NAT)
完全圆锥型NAT,将来自一个内部IP地址和端口的所有请求,都映射到相同的外部IP地址和端口。并且,任何外部主机通过向映射的外部地址发送报文,都可以实现和内部主机进行通信。这是一种比较宽松的策略,只要建立了内部网络的IP地址和端口与公网IP地址和端口的映射关系,所有的Internet上的主机都可以访问该NAT之后的主机。
(2)、地址限制圆锥型NAT(Address Restricted Cone NAT)
地址限制圆锥型NAT也是将来自相同的内部IP地址和端口的所有请求映射到相同的公网IP地址和端口。但是与完全圆锥型NAT不同,当且仅当内部主机之前已经向公网主机地址发送过报文,公网主机地址才能向内网主机发送报文。
(3)、端口限制圆锥型NAT(Port Restricted Cone NAT)
类似于地址限制圆锥型NAT,但是更严格。端口限制圆锥型NAT增加了端口号的限制,当前仅当内网主机之前已经向公网主机地址和端口号发送了报文,公网主机地址和端口号才能和此内网主机通信。
(4)、对称型NAT(Symmetric NAT)
对称型NAT把从同一内网地址和端口到相同目的地址和端口的所有请求,都映射到同一个公网地址和端口。如果同一个内网主机,用相同的内网地址和端口向另外一个目的地址发送报文,则会用不同的映射。这和端口限制型NAT不同。端口限制型NAT是所有请求映射到相同的公网IP地址和端口,而对称型NAT是不同的请求有不同的映射。
步骤102、根据所述第一端需穿越的NAT的类型,配置第一端的GRE隧道信息,以建立与所述第二端之间的GRE隧道。
根据探测结果,通过不同方式扩展GRE协议,配置第一端CPE设备的GRE隧道信息。
如图2(a)所示,为GRE隧道格式的示意图。在本发明实施例中,将GRE协议包封装到UDP包中(在原GRE协议的GRE头外添加新的UDP头),使得NAT对待它就像对待一个普通的UDP包一样,从而支持GRE与NAT共存。如图2(b)所示,为本发明实施例中GRE隧道格式的示意图。根据NAT形式不同,私网地址端设备(如第一端)通过设置不同的源UDP端口号和目的UDP端口号,可实现穿越NAT后的封装了GRE的报文在公网地址端设备(如第二端)的识别。
根据不同的探测结果,具有以下不同的处理方式:
在所述第一端需穿越的NAT的类型为基本NAT的情况下,配置源地址为第一端的私网地址,目的地址为第二端的公网地址。
在所述第一端需穿越的NAT的类型为对称型NAT的情况下,此步骤可包括:
探测源用户数据报协议UDP端口号和目的UDP端口号均为预设值的报文、第一端经NAT映射后的源IP地址和源UDP端口号;
将GRE报文封装在源UDP端口号和目的UDP端口号均为所述预设值的因特网协议IP报文中,并向所述第二端发送所述IP报文;
接收所述第二端发送的报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述预设值,目的IP为第一端的IP地址、目的端口号为预设值。
在所述第一端需穿越的NAT的类型为完全圆锥型NAT或者为地址限制圆锥型NAT或者为端口限制圆锥型NAT的情况下,此步骤可包括:
探测源UDP端口号和目的UDP端口号均为预设值的报文、第一端经NAT映射后的源IP地址和源UDP端口号;
利用第一端经NAT映射后的源IP地址、源UDP端口号和所述第二端的公网地址进行哈希计算,将得到的哈希值作为目的UDP端口号,并向所述第二端发送所述目的UDP端口号;
将GRE报文封装在源UDP端口号为所述预设值、目的端口号为所述哈希值的IP报文中,并向所述第二端发送所述IP报文;
接收所述第二端发送的报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述哈希值,目的IP为第一端的IP地址、目的端口号为预设值。
其中,在所述GRE隧道中传输的报文是通过将GRE协议包封装在UDP包中得到的。
在本发明实施例中,通过对第一端需穿越的NAT类型的判断,配置第一端的GRE隧道信息,可解决传统GRE协议不能穿越NAT的问题,从而扩大了广域网环境GRE协议的应用范围。
参见图3,图3是本发明实施例提供的隧道建立方法的流程图,应用于待建立的GRE隧道的第二端,如图3所示,包括以下步骤:
步骤301、确定第一端需穿越的NAT的类型。
步骤302、向所述第一端发送所述第一端需穿越的NAT的类型。
其中,所述第二端具有公网地址。
在上述实施例的基础上,所述方法还可包括:
在所述第一端需穿越的NAT的类型为对称型NAT的情况下,获取所述第一端经NAT映射后的IP地址、UDP端口号,以及目的端口号,其中,所述目的端口号为预设值;
接收所述第一端发送的IP报文,其中,所述IP报文是通过将GRE报文封装在源UDP端口号和目的UDP端口号均为所述预设值的报文中得到的;
向第一端发送报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述预设值,目的IP为第一端的IP地址、目的端口号为预设值。
在上述实施例的基础上,所述方法还可包括:
在所述第一端需穿越的NAT的类型为完全圆锥型NAT或者为地址限制圆锥型NAT或者为端口限制圆锥型NAT的情况下,获取所述第一端经NAT映射后的IP地址、UDP端口号,以及目的端口号,其中,所述目的端口号为将NAT映射后的源IP地址、源UDP端口号和所述第二端的公网地址进行哈希计算而得到的哈希值;
接收所述第一端发送的IP报文,其中,所述IP报文是通过将GRE报文封装在源UDP端口为所述预设值、目的端口号为所述哈希值的报文中得到的;
向第一端发送报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述哈希值,目的IP为第一端的IP地址、目的端口号为预设值。
其中,在所述GRE隧道中传输的报文是通过将GRE协议包封装在UDP包中得到的。
在本发明实施例中,通过对第一端需穿越的NAT类型的判断,配置第一端的GRE隧道信息,可解决传统GRE协议不能穿越NAT的问题,从而扩大了广域网环境GRE协议的应用范围。
参见图4,图4是本发明实施例隧道建立系统的示意图。图4中,CPEA为第一端,CPEB为第二端(具有公网地址)。其中,在CPEB设置有NAT探测服务器。NAT探测服务器可以和CPEB分开设置,也可设置在CPEB中。
在本发明实施例中,与其他协议组合,第一端通过向第二端CPE设备设置的NAT探测服务器发送报文进行交互,探测本侧网关需要穿越的NAT类型,还可获得本端经NAT映射完的公网地址。NAT类型探测完毕后,根据探测结果,第一端通过不同方式扩展GRE协议,配置本侧CPE设备的GRE隧道信息和相关地址信息。
第一种情况:第一端需穿越的NAT类型为基本NAT。参见图5,该过程可包括:
1)经过CPEA和CPEB的NAT探测服务器之间的报文交互,确认为基本NAT。
2)CPEA配置GRE采用常规封装模式,源地址为本端私网地址,目的地址为CPEB的公网地址。
3)CPEA和CPEB间经GRE隧道进行常规报文转发。
第二种情况:第一端需穿越的NAT类型为对称型NAT(Symmetric NAT)。
参见图6,该过程可包括:
1)经过CPEA和CPEB的NAT探测服务器之间的报文交互,确认为对称型NAT。
2)探测源UDP端口号和目的UDP端口号都为预设值(如59999)的报文,经NAT映射后的源IP地址和源UDP端口号,公网地址侧CPE(第二端)进行记录。
3)私网地址侧CPEA(第一端)将GRE报文封装在源UDP端口和目的UDP端口都为59999的IP报文中,发送给公网地址侧CPEB。
4)公网地址侧CPEB在UDP端口59999收到报文后,如果检测源地址和原始记录的CPEA侧地址映射结果一致,则进行报文解析,处理GRE报文;不符合,则将GRE报文进行其他流程处理。
5)公网地址侧CPEB向私网地址侧CPEA发送报文,其中,如果该报文的源地址和端口、目的地址和端口号,需与第2)步的映射记录对应,即可被私网地址侧CPEA收到。
6)私网地址侧CPEA收到报文后,如果检测收到源IP为CPEB的地址、源UDP端口号为59999和目的IP为自身、目的UDP端口号为59999的报文后,则进行报文解析,处理GRE报文;若收到与上述四源组不符合的报文,进行其他流程处理。
第三种情况:第一端需穿越的NAT类型为完全圆锥型NAT(Full Cone NAT)。参见图7,该过程可包括:
1)经过CPEA和CPEB的NAT探测服务器之间的报文交互,确认为完全圆锥型NAT。
2)探测源UDP端口为预设值(如59999)的报文,经NAT映射后的源IP地址和源UDP端口号,私网地址侧CPEA和公网地址侧CPEB进行记录。
3)私网地址侧CPEA将NAT映射后的源IP地址和源UDP端口号、所述第二端的公网地址进行hash计算,将得到的哈希值作为目的UDP端口号,并通知CPEB。
4)私网地址侧CPEA将GRE报文封装在源UDP端口号为59999、目的UDP端口号为该哈希值的IP报文中,并向公网地址侧CPEB发送报文。
5)公网地址侧CPEB在UDP端口号为该哈希值的端口收到报文后,如果检测源地址和端口号与原始记录的CPEA侧映射结果一致,则进行报文解析,处理GRE报文;不符合,则将报文进行其他流程处理。
6)公网地址侧CPEB用UDP端口为该哈希值的端口向私网地址侧CPEA发送报文,源地址和端口号、目的地址和端口号,需与第2)步的映射记录对应,即可被私网地址侧CPEA收到。
7)私网地址侧CPEA检测收到源IP为CPEB的地址、UDP端口号为该哈希值和目的IP为自身、目的UDP端口号为59999的报文后,则进行报文解析,处理GRE报文;与上述四源组不符合的报文,进行其他流程处理。
对于第一端的NAT类型为地址限制圆锥型NAT(Address Restricted Cone NAT)、端口限制圆锥型NAT(Port Restricted Cone NAT)的处理方式,和上述第三种情况的处理方式相同。
通过以上描述可以看出,利用本发明实施例的方案,解决了传统GRE协议不能穿越NAT的经典问题,加强了广域网环境GRE协议的应用范围。
本发明实施例还提供了一种隧道建立装置,应用于待建立的GRE隧道的第一端。参见图8,图8是本发明实施例提供的隧道建立装置的结构图。由于隧道建立装置解决问题的原理与本发明实施例中隧道建立方法相似,因此该隧道建立装置的实施可以参见方法的实施,重复之处不再赘述。
如图8所示,隧道建立装置包括:确定模块801,用于通过第二端的网络地址转换NAT探测服务器确定第一端需穿越的NAT的类型;配置模块802,用于根据所述第一端需穿越的NAT的类型,配置第一端的GRE隧道信息,以建立与所述第二端之间的GRE隧道;其中,所述第二端具有公网地址。
其中,所述配置模块802具体用于,在所述第一端需穿越的NAT的类型为基本NAT的情况下,配置源地址为第一端的私网地址,目的地址为第二端的公网地址。
其中,所述配置模块802可包括:
第一探测子模块,用于在所述第一端需穿越的NAT的类型为对称型NAT的情况下,探测源用户数据报协议UDP端口号和目的UDP端口号均为预设值的报文、第一端经NAT映射后的源IP地址和源UDP端口号;
第一发送子模块,用于将GRE报文封装在源UDP端口号和目的UDP端口号均为所述预设值的因特网协议IP报文中,并向所述第二端发送所述IP报文;
第一接收子模块,用于接收所述第二端发送的报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述预设值,目的IP为第一端的IP地址、目的端口号为预设值。
其中,所述配置模块802可包括:
第二探测子模块,用于在所述第一端需穿越的NAT的类型为完全圆锥型NAT或者为地址限制圆锥型NAT或者为端口限制圆锥型NAT的情况下,探测源UDP端口号和目的UDP端口号均为预设值的报文、第一端经NAT映射后的源IP地址和源UDP端口号;
计算子模块,用于利用第一端经NAT映射后的源IP地址、源UDP端口号和所述第二端的公网地址进行哈希计算,将得到的哈希值作为目的UDP端口号,并向所述第二端发送所述目的UDP端口号;
第二发送子模块,用于将GRE报文封装在源UDP端口号为所述预设值、目的端口号为所述哈希值的IP报文中,并向所述第二端发送所述IP报文;
第二接收子模块,用于接收所述第二端发送的报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述哈希值,目的IP为第一端的IP地址、目的端口号为预设值。
其中,在所述GRE隧道中传输的报文是通过将GRE协议包封装在UDP包中得到的。
本发明实施例提供的装置,可以执行上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
本发明实施例还提供了一种隧道建立装置,应用于待建立的GRE隧道的第二端。参见图9,图9是本发明实施例提供的隧道建立装置的结构图。由于隧道建立装置解决问题的原理与本发明实施例中隧道建立方法相似,因此该隧道建立装置的实施可以参见方法的实施,重复之处不再赘述。
如图9所示,隧道建立装置包括:确定模块901,用于确定第一端需穿越的NAT的类型;发送模块902,用于向所述第一端发送所述第一端需穿越的NAT的类型;其中,所述第二端具有公网地址。
其中,所述装置还可包括:
第一获取子模块,用于在所述第一端需穿越的NAT的类型为对称型NAT的情况下,获取所述第一端经NAT映射后的IP地址、UDP端口号,以及目的端口号,其中,所述目的端口号为预设值;
第一接收子模块,用于接收所述第一端发送的IP报文,其中,所述IP报文是通过将GRE报文封装在源UDP端口号和目的UDP端口号均为所述预设值的报文中得到的;
第一发送子模块,用于向第一端发送报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述预设值,目的IP为第一端的IP地址、目的端口号为预设值。
其中,所述装置还可包括:
第二获取子模块,用于在所述第一端需穿越的NAT的类型为完全圆锥型NAT或者为地址限制圆锥型NAT或者为端口限制圆锥型NAT的情况下,获取所述第一端经NAT映射后的IP地址、UDP端口号,以及目的端口号,其中,所述目的端口号为将NAT映射后的源IP地址、源UDP端口号和所述第二端的公网地址进行哈希计算而得到的哈希值;
第二接收子模块,用于接收所述第一端发送的IP报文,其中,所述IP报文是通过将GRE报文封装在源UDP端口为所述预设值、目的端口号为所述哈希值的报文中得到的;
第二发送子模块,用于向第一端发送报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述哈希值,目的IP为第一端的IP地址、目的端口号为预设值。
其中,在所述GRE隧道中传输的报文是通过将GRE协议包封装在UDP包中得到的。
本发明实施例提供的装置,可以执行上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
本发明实施例还提供了一种隧道建立装置,应用于待建立的GRE隧道的第一端。参见图10,图10是本发明实施例提供的隧道建立装置的结构图。由于隧道建立装置解决问题的原理与本发明实施例中隧道建立方法相似,因此该隧道建立装置的实施可以参见方法的实施,重复之处不再赘述。
如图10所示,隧道建立装置包括:处理器1001和收发器1002;所述处理器1001,用于通过第二端的网络地址转换NAT探测服务器确定第一端需穿越的NAT的类型;根据所述第一端需穿越的NAT的类型,配置第一端的GRE隧道信息,以建立与所述第二端之间的GRE隧道;其中,所述第二端具有公网地址。
其中,所述处理器1001还用于,在所述第一端需穿越的NAT的类型为基本NAT的情况下,配置源地址为第一端的私网地址,目的地址为第二端的公网地址。
其中,所述处理器1001还用于,在所述第一端需穿越的NAT的类型为对称型NAT的情况下,探测源用户数据报协议UDP端口号和目的UDP端口号均为预设值的报文、第一端经NAT映射后的源IP地址和源UDP端口号;将GRE报文封装在源UDP端口号和目的UDP端口号均为所述预设值的因特网协议IP报文中,并向所述第二端发送所述IP报文;接收所述第二端发送的报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述预设值,目的IP为第一端的IP地址、目的端口号为预设值。
其中,所述处理器1001还用于,在所述第一端需穿越的NAT的类型为完全圆锥型NAT或者为地址限制圆锥型NAT或者为端口限制圆锥型NAT的情况下,探测源UDP端口号和目的UDP端口号均为预设值的报文、第一端经NAT映射后的源IP地址和源UDP端口号;利用第一端经NAT映射后的源IP地址、源UDP端口号和所述第二端的公网地址进行哈希计算,将得到的哈希值作为目的UDP端口号,并向所述第二端发送所述目的UDP端口号;将GRE报文封装在源UDP端口号为所述预设值、目的端口号为所述哈希值的IP报文中,并向所述第二端发送所述IP报文;接收所述第二端发送的报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述哈希值,目的IP为第一端的IP地址、目的端口号为预设值。
其中,在所述GRE隧道中传输的报文是通过将GRE协议包封装在UDP包中得到的。
本发明实施例还提供了一种隧道建立装置,应用于待建立的GRE隧道的第二端。参见图11,图11是本发明实施例提供的隧道建立装置的结构图。由于隧道建立装置解决问题的原理与本发明实施例中隧道建立方法相似,因此该隧道建立装置的实施可以参见方法的实施,重复之处不再赘述。
如图11所示,隧道建立装置包括:处理器1101和收发器1102;所述处理器1101,用于确定第一端需穿越的NAT的类型;所述收发器1102,用于向所述第一端发送所述第一端需穿越的NAT的类型;其中,所述第二端具有公网地址。
其中,所述处理器1101还用于,在所述第一端需穿越的NAT的类型为对称型NAT的情况下,获取所述第一端经NAT映射后的IP地址、UDP端口号,以及目的端口号,其中,所述目的端口号为预设值;
所述收发器1102还用于,接收所述第一端发送的IP报文,其中,所述IP报文是通过将GRE报文封装在源UDP端口号和目的UDP端口号均为所述预设值的报文中得到的;向第一端发送报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述预设值,目的IP为第一端的IP地址、目的端口号为预设值。
其中,所述处理器1101还用于,在所述第一端需穿越的NAT的类型为完全圆锥型NAT或者为地址限制圆锥型NAT或者为端口限制圆锥型NAT的情况下,获取所述第一端经NAT映射后的IP地址、UDP端口号,以及目的端口号,其中,所述目的端口号为将NAT映射后的源IP地址、源UDP端口号和所述第二端的公网地址进行哈希计算而得到的哈希值;
所述收发器1102还用于,接收所述第一端发送的IP报文,其中,所述IP报文是通过将GRE报文封装在源UDP端口为所述预设值、目的端口号为所述哈希值的报文中得到的;向第一端发送报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述哈希值,目的IP为第一端的IP地址、目的端口号为预设值。
其中,在所述GRE隧道中传输的报文是通过将GRE协议包封装在UDP包中得到的。
如图12所示,本发明实施例的通信设备,应用于待建立的GRE隧道的第一端。包括:处理器1200,用于读取存储器1220中的程序,执行下列过程:
通过第二端的NAT探测服务器确定第一端需穿越的NAT的类型;
根据所述第一端需穿越的NAT的类型,配置第一端的GRE隧道信息,以建立与所述第二端之间的GRE隧道;
其中,所述第二端具有公网地址。
收发机1212,用于在处理器1200的控制下接收和发送数据。
其中,在图12中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器1200代表的一个或多个处理器和存储器1220代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。收发机1212可以是多个元件,即包括发送机和收发机,提供用于在传输介质上与各种其他装置通信的单元。处理器1200负责管理总线架构和通常的处理,存储器1220可以存储处理器1200在执行操作时所使用的数据。
处理器1200负责管理总线架构和通常的处理,存储器1220可以存储处理器1200在执行操作时所使用的数据。
处理器1200还用于读取所述程序,执行如下步骤:
在所述第一端需穿越的NAT的类型为基本NAT的情况下,配置源地址为第一端的私网地址,目的地址为第二端的公网地址。
处理器1200还用于读取所述程序,执行如下步骤:
在所述第一端需穿越的NAT的类型为对称型NAT的情况下,探测源用户数据报协议UDP端口号和目的UDP端口号均为预设值的报文、第一端经NAT映射后的源IP地址和源UDP端口号;
将GRE报文封装在源UDP端口号和目的UDP端口号均为所述预设值的因特网协议IP报文中,并向所述第二端发送所述IP报文;
接收所述第二端发送的报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述预设值,目的IP为第一端的IP地址、目的端口号为预设值。
处理器1200还用于读取所述程序,执行如下步骤:
在所述第一端需穿越的NAT的类型为完全圆锥型NAT或者为地址限制圆锥型NAT或者为端口限制圆锥型NAT的情况下,探测源UDP端口号和目的UDP端口号均为预设值的报文、第一端经NAT映射后的源IP地址和源UDP端口号;
利用第一端经NAT映射后的源IP地址、源UDP端口号和所述第二端的公网地址进行哈希计算,将得到的哈希值作为目的UDP端口号,并向所述第二端发送所述目的UDP端口号;
将GRE报文封装在源UDP端口号为所述预设值、目的端口号为所述哈希值的IP报文中,并向所述第二端发送所述IP报文;
接收所述第二端发送的报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述哈希值,目的IP为第一端的IP地址、目的端口号为预设值。
其中,在所述GRE隧道中传输的报文是通过将GRE协议包封装在UDP包中得到的。
如图13所示,本发明实施例的通信设备,应用于待建立的GRE隧道的第二端。包括:处理器1300,用于读取存储器1320中的程序,执行下列过程:
确定第一端需穿越的NAT的类型;
向所述第一端发送所述第一端需穿越的NAT的类型;
其中,所述第二端具有公网地址。
收发机1313,用于在处理器1300的控制下接收和发送数据。
其中,在图13中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器1300代表的一个或多个处理器和存储器1320代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。收发机1313可以是多个元件,即包括发送机和收发机,提供用于在传输介质上与各种其他装置通信的单元。处理器1300负责管理总线架构和通常的处理,存储器1320可以存储处理器1300在执行操作时所使用的数据。
处理器1300负责管理总线架构和通常的处理,存储器1320可以存储处理器1300在执行操作时所使用的数据。
处理器1300还用于读取所述程序,执行如下步骤:
在所述第一端需穿越的NAT的类型为对称型NAT的情况下,获取所述第一端经NAT映射后的IP地址、UDP端口号,以及目的端口号,其中,所述目的端口号为预设值;
接收所述第一端发送的IP报文,其中,所述IP报文是通过将GRE报文封装在源UDP端口号和目的UDP端口号均为所述预设值的报文中得到的;
向第一端发送报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述预设值,目的IP为第一端的IP地址、目的端口号为预设值。
处理器1300还用于读取所述程序,执行如下步骤:
在所述第一端需穿越的NAT的类型为完全圆锥型NAT或者为地址限制圆锥型NAT或者为端口限制圆锥型NAT的情况下,获取所述第一端经NAT映射后的IP地址、UDP端口号,以及目的端口号,其中,所述目的端口号为将NAT映射后的源IP地址、源UDP端口号和所述第二端的公网地址进行哈希计算而得到的哈希值;
接收所述第一端发送的IP报文,其中,所述IP报文是通过将GRE报文封装在源UDP端口为所述预设值、目的端口号为所述哈希值的报文中得到的;
向第一端发送报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述哈希值,目的IP为第一端的IP地址、目的端口号为预设值。
其中,在所述GRE隧道中传输的报文是通过将GRE协议包封装在UDP包中得到的。
此外,本发明实施例的计算机可读存储介质,用于存储计算机程序,所述计算机程序可被处理器执行实现以下步骤:
通过第二端的NAT探测服务器确定第一端需穿越的NAT的类型;
根据所述第一端需穿越的NAT的类型,配置第一端的GRE隧道信息,以建立与所述第二端之间的GRE隧道;
其中,所述第二端具有公网地址。
其中,在所述第一端需穿越的NAT的类型为基本NAT的情况下,所述配置第一端的通用路由封装GRE隧道信息,包括:
配置源地址为第一端的私网地址,目的地址为第二端的公网地址。
其中,在所述第一端需穿越的NAT的类型为对称型NAT的情况下,所述配置第一端的通用路由封装GRE隧道信息,包括:
探测源用户数据报协议UDP端口号和目的UDP端口号均为预设值的报文、第一端经NAT映射后的源IP地址和源UDP端口号;
将GRE报文封装在源UDP端口号和目的UDP端口号均为所述预设值的因特网协议IP报文中,并向所述第二端发送所述IP报文;
接收所述第二端发送的报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述预设值,目的IP为第一端的IP地址、目的端口号为预设值。
其中,在所述第一端需穿越的NAT的类型为完全圆锥型NAT或者为地址限制圆锥型NAT或者为端口限制圆锥型NAT的情况下,所述配置第一端的通用路由封装GRE隧道信息,包括:
探测源UDP端口号和目的UDP端口号均为预设值的报文、第一端经NAT映射后的源IP地址和源UDP端口号;
利用第一端经NAT映射后的源IP地址、源UDP端口号和所述第二端的公网地址进行哈希计算,将得到的哈希值作为目的UDP端口号,并向所述第二端发送所述目的UDP端口号;
将GRE报文封装在源UDP端口号为所述预设值、目的端口号为所述哈希值的IP报文中,并向所述第二端发送所述IP报文;
接收所述第二端发送的报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述哈希值,目的IP为第一端的IP地址、目的端口号为预设值。
其中,在所述GRE隧道中传输的报文是通过将GRE协议包封装在UDP包中得到的。
此外,本发明实施例的计算机可读存储介质,用于存储计算机程序,所述计算机程序可被处理器执行实现以下步骤:
确定第一端需穿越的NAT的类型;
向所述第一端发送所述第一端需穿越的NAT的类型;
其中,所述第二端具有公网地址。
其中,所述方法还包括:
在所述第一端需穿越的NAT的类型为对称型NAT的情况下,获取所述第一端经NAT映射后的IP地址、UDP端口号,以及目的端口号,其中,所述目的端口号为预设值;
接收所述第一端发送的IP报文,其中,所述IP报文是通过将GRE报文封装在源UDP端口号和目的UDP端口号均为所述预设值的报文中得到的;
向第一端发送报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述预设值,目的IP为第一端的IP地址、目的端口号为预设值。
其中,所述方法还包括:
在所述第一端需穿越的NAT的类型为完全圆锥型NAT或者为地址限制圆锥型NAT或者为端口限制圆锥型NAT的情况下,获取所述第一端经NAT映射后的IP地址、UDP端口号,以及目的端口号,其中,所述目的端口号为将NAT映射后的源IP地址、源UDP端口号和所述第二端的公网地址进行哈希计算而得到的哈希值;
接收所述第一端发送的IP报文,其中,所述IP报文是通过将GRE报文封装在源UDP端口为所述预设值、目的端口号为所述哈希值的报文中得到的;
向第一端发送报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述哈希值,目的IP为第一端的IP地址、目的端口号为预设值。
其中,在所述GRE隧道中传输的报文是通过将GRE协议包封装在UDP包中得到的。
在本申请所提供的几个实施例中,应该理解到,所揭露方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述收发方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (15)

1.一种隧道建立方法,应用于待建立的通用路由封装GRE隧道的第一端,其特征在于,包括:
通过第二端的网络地址转换NAT探测服务器确定第一端需穿越的NAT的类型;
根据所述第一端需穿越的NAT的类型,配置第一端的GRE隧道信息,以建立与所述第二端之间的GRE隧道;
其中,所述第二端具有公网地址。
2.根据权利要求1所述的方法,其特征在于,在所述第一端需穿越的NAT的类型为基本NAT的情况下,所述配置第一端的通用路由封装GRE隧道信息,包括:
配置源地址为第一端的私网地址,目的地址为第二端的公网地址。
3.根据权利要求1所述的方法,其特征在于,在所述第一端需穿越的NAT的类型为对称型NAT的情况下,所述配置第一端的通用路由封装GRE隧道信息,包括:
探测源用户数据报协议UDP端口号和目的UDP端口号均为预设值的报文、第一端经NAT映射后的源IP地址和源UDP端口号;
将GRE报文封装在源UDP端口号和目的UDP端口号均为所述预设值的因特网协议IP报文中,并向所述第二端发送所述IP报文;
接收所述第二端发送的报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述预设值,目的IP为第一端的IP地址、目的端口号为所述预设值。
4.根据权利要求1所述的方法,其特征在于,在所述第一端需穿越的NAT的类型为完全圆锥型NAT或者为地址限制圆锥型NAT或者为端口限制圆锥型NAT的情况下,所述配置第一端的通用路由封装GRE隧道信息,包括:
探测源UDP端口号和目的UDP端口号均为预设值的报文、第一端经NAT映射后的源IP地址和源UDP端口号;
利用第一端经NAT映射后的源IP地址、源UDP端口号和所述第二端的公网地址进行哈希计算,将得到的哈希值作为目的UDP端口号,并向所述第二端发送所述目的UDP端口号;
将GRE报文封装在源UDP端口号为所述预设值、目的端口号为所述哈希值的IP报文中,并向所述第二端发送所述IP报文;
接收所述第二端发送的报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述哈希值,目的IP为第一端的IP地址、目的端口号为所述预设值。
5.根据权利要求1所述的方法,其特征在于,在所述GRE隧道中传输的报文是通过将GRE协议包封装在UDP包中得到的。
6.一种隧道建立方法,应用于待建立的GRE隧道的第二端,所述第二端设置有NAT探测服务器,其特征在于,包括:
确定第一端需穿越的NAT的类型;
向所述第一端发送所述第一端需穿越的NAT的类型;
其中,所述第二端具有公网地址。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在所述第一端需穿越的NAT的类型为对称型NAT的情况下,获取所述第一端经NAT映射后的IP地址、UDP端口号,以及目的端口号,其中,所述目的端口号为预设值;
接收所述第一端发送的IP报文,其中,所述IP报文是通过将GRE报文封装在源UDP端口号和目的UDP端口号均为所述预设值的报文中得到的;
向第一端发送报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述预设值,目的IP为第一端的IP地址、目的端口号为所述预设值。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在所述第一端需穿越的NAT的类型为完全圆锥型NAT或者为地址限制圆锥型NAT或者为端口限制圆锥型NAT的情况下,获取所述第一端经NAT映射后的IP地址、UDP端口号,以及目的端口号,其中,所述目的端口号为将NAT映射后的源IP地址、源UDP端口号和所述第二端的公网地址进行哈希计算而得到的哈希值;
接收所述第一端发送的IP报文,其中,所述IP报文是通过将GRE报文封装在源UDP端口为所述预设值、目的端口号为所述哈希值的报文中得到的;
向第一端发送报文,其中,所述报文的源IP为所述第二端的IP、源UDP端口号为所述哈希值,目的IP为第一端的IP地址、目的端口号为所述预设值。
9.根据权利要求6所述的方法,其特征在于,在所述GRE隧道中传输的报文是通过将GRE协议包封装在UDP包中得到的。
10.一种隧道建立装置,应用于待建立的GRE隧道的第一端,其特征在于,包括:
确定模块,用于通过第二端的网络地址转换NAT探测服务器确定第一端需穿越的NAT的类型;
配置模块,用于根据所述第一端需穿越的NAT的类型,配置第一端的GRE隧道信息,以建立与所述第二端之间的GRE隧道;
其中,所述第二端具有公网地址。
11.一种隧道建立装置,应用于待建立的GRE隧道的第二端,其特征在于,包括:
确定模块,用于确定第一端需穿越的NAT的类型;
发送模块,用于向所述第一端发送所述第一端需穿越的NAT的类型;
其中,所述第二端具有公网地址。
12.一种隧道建立装置,应用于待建立的GRE隧道的第一端,其特征在于,包括:处理器和收发器;
所述处理器,用于通过第二端的网络地址转换NAT探测服务器确定第一端需穿越的NAT的类型;根据所述第一端需穿越的NAT的类型,配置第一端的GRE隧道信息,以建立与所述第二端之间的GRE隧道;
其中,所述第二端具有公网地址。
13.一种隧道建立装置,应用于待建立的GRE隧道的第二端,其特征在于,包括:处理器和收发器;
所述处理器,用于确定第一端需穿越的NAT的类型;
所述收发器,用于向所述第一端发送所述第一端需穿越的NAT的类型;
其中,所述第二端具有公网地址。
14.一种通信设备,包括:收发机、存储器、处理器及存储在所述存储器上并可在所述处理器上运行的程序;其特征在于,
所述处理器,用于读取存储器中的程序实现如权利要求1至5中任一项所述的方法中的步骤;或者实现如权利要求6至9中任一项所述的方法中的步骤。
15.一种计算机可读存储介质,用于存储计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5中任一项所述的方法中的步骤;或者实现如权利要求6至9中任一项所述的方法中的步骤。
CN201911055193.XA 2019-10-31 2019-10-31 一种隧道建立方法、装置、设备及计算机可读存储介质 Active CN112751946B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911055193.XA CN112751946B (zh) 2019-10-31 2019-10-31 一种隧道建立方法、装置、设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911055193.XA CN112751946B (zh) 2019-10-31 2019-10-31 一种隧道建立方法、装置、设备及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN112751946A true CN112751946A (zh) 2021-05-04
CN112751946B CN112751946B (zh) 2023-11-24

Family

ID=75644726

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911055193.XA Active CN112751946B (zh) 2019-10-31 2019-10-31 一种隧道建立方法、装置、设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN112751946B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1567873A (zh) * 2003-07-08 2005-01-19 华为技术有限公司 一种虚拟私有网上的数据传输方法
CN1633100A (zh) * 2003-12-24 2005-06-29 华为技术有限公司 多媒体业务网络地址转换穿越的方法及其系统
CN1863171A (zh) * 2005-09-28 2006-11-15 华为技术有限公司 移动ip网络中实现信令穿越网络地址转换设备的方法
CN1870568A (zh) * 2005-05-23 2006-11-29 华为技术有限公司 实现网络地址转换/防火墙穿越的方法
CN101119273A (zh) * 2007-09-10 2008-02-06 杭州华三通信技术有限公司 实现通用路由封装隧道穿越的方法及设备
CN101488904A (zh) * 2009-02-27 2009-07-22 杭州华三通信技术有限公司 Gre隧道穿越网络地址转换设备的方法和网络地址转换设备
CN101800781A (zh) * 2009-02-11 2010-08-11 中国科学院计算机网络信息中心 一种穿越nat的隧道过渡方法及系统
CN101938532A (zh) * 2010-09-17 2011-01-05 北京神州泰岳软件股份有限公司 基于udp的穿越nat设备的方法及系统
CN104023022A (zh) * 2014-06-13 2014-09-03 杭州华三通信技术有限公司 一种IPSec SA的获取方法和装置
CN108306986A (zh) * 2018-03-28 2018-07-20 北京大米科技有限公司 多类型媒体数据网络地址转换穿越方法、终端及系统

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1567873A (zh) * 2003-07-08 2005-01-19 华为技术有限公司 一种虚拟私有网上的数据传输方法
CN1633100A (zh) * 2003-12-24 2005-06-29 华为技术有限公司 多媒体业务网络地址转换穿越的方法及其系统
CN1870568A (zh) * 2005-05-23 2006-11-29 华为技术有限公司 实现网络地址转换/防火墙穿越的方法
CN1863171A (zh) * 2005-09-28 2006-11-15 华为技术有限公司 移动ip网络中实现信令穿越网络地址转换设备的方法
CN101119273A (zh) * 2007-09-10 2008-02-06 杭州华三通信技术有限公司 实现通用路由封装隧道穿越的方法及设备
CN101800781A (zh) * 2009-02-11 2010-08-11 中国科学院计算机网络信息中心 一种穿越nat的隧道过渡方法及系统
CN101488904A (zh) * 2009-02-27 2009-07-22 杭州华三通信技术有限公司 Gre隧道穿越网络地址转换设备的方法和网络地址转换设备
CN101938532A (zh) * 2010-09-17 2011-01-05 北京神州泰岳软件股份有限公司 基于udp的穿越nat设备的方法及系统
CN104023022A (zh) * 2014-06-13 2014-09-03 杭州华三通信技术有限公司 一种IPSec SA的获取方法和装置
CN108306986A (zh) * 2018-03-28 2018-07-20 北京大米科技有限公司 多类型媒体数据网络地址转换穿越方法、终端及系统

Also Published As

Publication number Publication date
CN112751946B (zh) 2023-11-24

Similar Documents

Publication Publication Date Title
US10212022B2 (en) Enhanced network virtualization using metadata in encapsulation header
US8549286B2 (en) Method and system for forwarding data between private networks
CN105939239B (zh) 虚拟网卡的数据传输方法及装置
US20150188888A1 (en) Virtual private network gateway and method of secure communication therefor
US20150381563A1 (en) Relay system for transmitting ip address of client to server and method therefor
JP2004350188A (ja) データ転送装置及びプログラム
US8724630B2 (en) Method and system for implementing network intercommunication
CN112351115B (zh) 对称型nat设备的端口预测方法及装置
CN111431787B (zh) 一种隧道建立方法、装置及计算机可读存储介质
US11799827B2 (en) Intelligently routing a response packet along a same connection as a request packet
JP2016508682A (ja) ドメインにまたがるvpnトラフィックのqosによる区別のための方法および配置構成
JP2023530190A (ja) IPv6ネットワーク通信方法、装置、及びシステム
CN103095608B (zh) 一种dns数据包的代理转发方法
CN114024741A (zh) 请求处理方法、装置、流量代理端、设备及可读存储介质
CN110392066A (zh) 一种访问服务的方法和装置
CN113067910B (zh) 一种nat穿越方法、装置、电子设备和存储介质
CN110430478B (zh) 组网通信方法、装置、终端设备及存储介质
CN112398796B (zh) 一种信息处理方法、装置、设备及计算机可读存储介质
CN110351394B (zh) 网络数据的处理方法及装置、计算机装置及可读存储介质
CN112751946A (zh) 一种隧道建立方法、装置、设备及计算机可读存储介质
US9497088B2 (en) Method and system for end-to-end classification of level 7 application flows in networking endpoints and devices
CN108337331B (zh) 网络穿透方法、装置、系统及网络连通性检查方法
CN112751816B (zh) 一种隧道建立方法、装置、设备及计算机可读存储介质
CN113596192A (zh) 一种基于网闸组网的通信方法、装置、设备及介质
US8036218B2 (en) Technique for achieving connectivity between telecommunication stations

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant