CN116436731A - 一种多内网二层数据流通信方法 - Google Patents
一种多内网二层数据流通信方法 Download PDFInfo
- Publication number
- CN116436731A CN116436731A CN202310708504.8A CN202310708504A CN116436731A CN 116436731 A CN116436731 A CN 116436731A CN 202310708504 A CN202310708504 A CN 202310708504A CN 116436731 A CN116436731 A CN 116436731A
- Authority
- CN
- China
- Prior art keywords
- tunnel
- data packet
- interface
- client
- server
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 66
- 238000004891 communication Methods 0.000 title abstract description 11
- 230000008569 process Effects 0.000 claims description 42
- 230000004044 response Effects 0.000 claims description 42
- 238000012544 monitoring process Methods 0.000 claims description 21
- 238000012545 processing Methods 0.000 claims description 10
- 238000004806 packaging method and process Methods 0.000 claims description 9
- 239000007787 solid Substances 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 238000004590 computer program Methods 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4633—Interconnection of networks using encapsulation techniques, e.g. tunneling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0823—Network architectures or network communication protocols for network security for authentication of entities using certificates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/164—Adaptation or special uses of UDP protocol
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3263—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
- H04L9/3268—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements using certificate validation, registration, distribution or revocation, e.g. certificate revocation list [CRL]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明公开了一种多内网二层数据流通信方法。本发明在隧道客户端与隧道服务器之间架设起一个二层通道,在隧道客户端下的内网和隧道服务器下的内网之间建立了一个新的局域网,访问对端网络的网络资源就像访问本端网络的网络资源一样,实现了内部网络的互联互通,为工业互联网万物互联提供了坚实的网络架构,而且增加或减少内网数量也不会影响正常的业务,具有很好的扩展性。
Description
技术领域
本发明涉及计算机网络领域,具体涉及一种多内网二层数据流通信方法。
背景技术
远程访问内网资源是一种隧道技术,在互联网上架设了一个二层通道,建立了一个新的局域网,实现不同网关的内部网络的互联互通。
此技术具有以下优势:
(1)可扩展性:新设备可以动态的添加,不会影响已组网的设备;
(2)高安全性:隧道通信流量使用SSL加密, 防止数据被监听;
(3)可管理性:服务端可以决定是否允许客户端的连接;
(4)透明性:对用户而言,访问对端网络的内部网络资源就像访问本端网络的资源一样,用户感知不到,也不关心具体的网络结构,增加或者减少设备数量都不会影响正常的业务。
如图1所示,当因特网上有三个内网A、B、C,内网里分别建立了一个WEB服务,一个打印服务,一个文件共享服务,他们之间想要互相访问彼此的服务,且又不想把服务开放给互联网时,传统的VPN技术无法满足这个需求,传统的VPN只能将VPN服务器统一部署在一个地方,客户端从其他地方访问。使用传统的VPN,B和C能访问A处的WEB服务,但B和C无法互相访问对方的服务,A也无法访问B和C处的打印机和文件共享服务。
发明内容
针对现有技术中的上述不足,本发明提供了一种多内网二层数据流通信方法。
为了达到上述发明目的,本发明采用的技术方案为:
一种多内网二层数据流通信方法,包括以下步骤:
A1、在一个本端网关设备和至少一个对端网关设备之间建立二层通道;
A2、以对端网关设备作为隧道客户端,接收来自内网的数据包,并采用SSL协议将数据包进行加密,封装在UDP报文中通过socket系统调用发送数据包;
A3、以本端网关设备作为隧道服务端,通过socket系统接收隧道客户端发送的数据包,并使用SSL协议进行解密,同时记录原始报文的源mac和访问终端连接的对应关系,向应用服务器转发数据包;
A4、响应于应用服务器的应答包,利用隧道服务端根据目的mac向对应的隧道客户端发送应答包;
A5、利用隧道客户端通过UDP端口监听隧道服务端发送的应答包,并采用SSL协议将应答包进行解密,得到原始报文,向应用服务器转发数据包。
作为可选地,步骤A1具体包括:
在本端网关设备和至少一个对端网关设备分别创建一个tap设备和对应的tap隧道接口;
将本端网关设备的tap隧道接口和LAN侧接口通过同一网桥连接;
将对端网关设备的tap隧道接口和LAN侧接口通过同一网桥连接;
将本端网关设备的LAN侧设备IP地址和对端网关设备的LAN侧设备IP地址设置在同一子网中。
作为可选地,步骤A2具体包括:
响应于需要访问隧道服务端LAN侧应用服务器的隧道客户端LAN侧访问终端发出的ARP广播包,判断ARP广播包的目的地址是否为网桥mac;若是,则通过隧道客户端的LAN侧接口向同一网桥下的tap隧道接口转发ARP广播包;否则将ARP广播包转交给隧道客户端上层协议处理;
利用隧道客户端的tap隧道接口中的虚拟网卡驱动把从TCP/IP协议栈收到的数据包结构skb放入tap字符设备的读取队列,并利用隧道客户端的用户进程通过调用字符设备接口read获取完整的以太网数据帧,将核心态的skb传递给用户进程;
在隧道客户端的用户进程接收到数据包后使用SSL协议将以太网数据帧进行加密,然后封装在UDP报文中通过socket系统调用发送到隧道服务端。
作为可选地,步骤A3具体包括:
利用隧道服务端的用户进程在设定UDP端口上监听隧道客户端发送的数据包,在收到隧道客户端发送的数据包后先使用SSL协议进行解密,得到原始报文,然后记录下原始报文的源mac和连接的对应关系;
再调用虚拟网卡的字符处理程序write写入虚拟网卡的字符设备,设备驱动程序完成数据从用户态到核心态的复制,并将数据写入skb链表,然后调用网卡netif_rx()接收程序,数据包再次进入系统TCP/IP协议栈,并通过网桥转发到隧道服务端的LAN侧接口,由隧道服务端的LAN侧接口将数据包转发给应用服务器。
作为可选地,步骤A5具体包括:
利用隧道客户端的用户进程在设定UDP端口上监听隧道服务端发送的ARP应答包,在收到隧道服务端发送的ARP应答包后先使用SSL协议进行解密,得到原始报文,然后通过隧道客户端的tap隧道接口向同一网桥下的LAN侧接口转发ARP应答包,由隧道客户端的LAN侧接口将数据包转发给隧道客户端LAN侧应用服务器,得到隧道服务端LAN侧应用服务器的mac地址。
一种多内网二层数据流通信方法,包括以下步骤:
B1、在一个本端网关设备和至少两个对端网关设备之间建立二层通道;
B2、以一个对端网关设备作为访问隧道客户端,接收来自内网的数据包,并采用SSL协议将数据包进行加密,封装在UDP报文中通过socket系统调用发送数据包;
B3、以本端网关设备作为隧道服务端,通过socket系统接收访问隧道客户端发送的数据包,并使用SSL协议进行解密,同时记录原始报文的源mac和访问终端连接的对应关系,向其它隧道客户端转发数据包;
B4、以另一个对端网关设备作为目标隧道客户端,通过UDP端口监听隧道服务端发送的数据包,并采用SSL协议将数据包进行解密,得到原始报文,向应用服务器转发数据包;
B5、响应于应用服务器的应答包,利用目标隧道客户端采用SSL协议将数据包进行加密,封装在UDP报文中通过socket系统调用发送数据包;
B6、利用隧道服务端通过socket系统接收目标隧道客户端发送的数据包,并使用SSL协议进行解密,根据目的mac向访问隧道客户端发送应答包;
B7、利用访问隧道客户端通过UDP端口监听隧道服务端发送的应答包,并采用SSL协议将应答包进行解密,得到原始报文,向应用服务器转发数据包。
作为可选地,步骤B1具体包括:
在本端网关设备和至少两个对端网关设备分别创建一个tap设备和对应的tap隧道接口;
将本端网关设备的tap隧道接口和LAN侧接口通过同一网桥连接;
将对端网关设备的tap隧道接口和LAN侧接口通过同一网桥连接;
将本端网关设备的LAN侧设备IP地址和对端网关设备的LAN侧设备IP地址设置在同一子网中。
作为可选地,步骤B2具体包括:
响应于访问隧道客户端LAN侧访问终端发出的ARP广播包,判断ARP广播包的目的地址是否为网桥mac;若是,则通过访问隧道客户端的LAN侧接口向同一网桥下的tap隧道接口转发ARP广播包;否则将ARP广播包转交给隧道客户端上层协议处理;
利用访问隧道客户端的tap隧道接口中的虚拟网卡驱动把从TCP/IP协议栈收到的数据包结构skb放入tap字符设备的读取队列,并利用隧道客户端的用户进程通过调用字符设备接口read获取完整的以太网数据帧,将核心态的skb传递给用户进程;
在访问隧道客户端的用户进程接收到数据包后使用SSL协议将以太网数据帧进行加密,然后封装在UDP报文中通过socket系统调用发送到隧道服务端。
作为可选地,步骤B3具体包括:
利用隧道服务端的用户进程在设定UDP端口上监听访问隧道客户端发送的数据包,在收到访问隧道客户端发送的数据包后先使用SSL协议进行解密,得到原始报文,然后记录下原始报文的源mac和连接的对应关系;
再调用虚拟网卡的字符处理程序write写入虚拟网卡的字符设备,设备驱动程序完成数据从用户态到核心态的复制,并将数据写入skb链表,然后调用网卡netif_rx()接收程序,数据包再次进入系统TCP/IP协议栈,并通过网桥转发到隧道服务端的LAN侧接口,由隧道服务端的LAN侧接口将数据包转发给应用服务器。
作为可选地,步骤B4具体包括:
利用目标隧道客户端的用户进程在设定UDP端口上监听隧道服务端发送的ARP广播包,在收到隧道服务端发送的ARP广播包后先使用SSL协议进行解密,得到原始报文,然后通过目标隧道客户端的tap隧道接口向同一网桥下的LAN侧接口转发ARP广播包,由目标隧道客户端的LAN侧接口将数据包转发给目标隧道客户端LAN侧应用服务器。
本发明具有以下有益效果:
(1)本发明在隧道客户端与隧道服务器、隧道客户端之间架设起一个二层通道,在隧道客户端下的内网和隧道服务器下的内网之间建立了一个新的局域网,访问对端网络的网络资源就像访问本端网络的网络资源一样,实现了内部网络的互联互通,为工业互联网万物互联提供了坚实的网络架构,而且增加或减少内网数量也不会影响正常的业务,具有很好的扩展性。
(2)本发明采用1对n的组网方式,能够很方便的扩充局域网设备。
(3)本发明的多个隧道客户端之间既可以配置成能够互相访问,也可以配置成相互隔离。如果配置成互相访问,这时隧道客户端的内网设备既能访问隧道服务端的内网资源,又能访问其它隧道客户端的内网资源;如果配置成相互隔离,这时隧道客户端的内网设备只能访问服务端的内网资源。
(4)本发明通过SSL证书进行鉴权,每个隧道客户端可以有不同的证书,隧道服务端可以决定是否允许客户端的连接,提高安全性。
(5)本发明的隧道通信流量使用TLS/SSL加密, 保证数据传输的安全。
(6)本发明通过数据的压缩,提高数据传输的速度。
(7)本发明使用特定的udp或tcp端口实现隧道客户端和隧道服务端之间的连接。
附图说明
图1为多内网网络拓扑示意图;
图2为本实施例1中一种多内网二层数据流通信方法流程示意图;
图3为本实施例1中应用场景示意图;
图4为本实施例1中数据包收发流程示意图;
图5为本实施例1中隧道客户端发送流程图;
图6为本实施例1中隧道服务端发送流程图;
图7为本实施例2中一种多内网二层数据流通信方法流程示意图。
具体实施方式
下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
由于当前VPN技术基本都是在三层上进行互联,对于有二层互联需求的客户无法满足,更为重要的是,不支持在VPN客户端内部网络之间的互相访问,VPN服务器端的内网设备也无法访问客户端的内部网络,因此本发明为了解决该问题提出了一种实现多内网之间互访,透传二层数据流的技术方案。
实施例1:
如图2至图6所示,本发明实施例提供了一种多内网二层数据流通信方法,包括以下步骤A1至A5:
A1、在一个本端网关设备和至少一个对端网关设备之间建立二层通道;
在本实施例中,步骤A1具体包括:
在本端网关设备和至少一个对端网关设备分别创建一个tap设备和对应的tap隧道接口;
将本端网关设备的tap隧道接口和LAN侧接口通过同一网桥连接;
将对端网关设备的tap隧道接口和LAN侧接口通过同一网桥连接;
将本端网关设备的LAN侧设备IP地址和对端网关设备的LAN侧设备IP地址设置在同一子网中。
具体而言,如图3所示,分别位于互联网不同地方的内网A、B、C,他们在自己本地的网络中分别装有WEB服务器、文件共享服务器、打印服务器,他们都通过网关连接到互联网上。其中内网A的网关作为隧道服务端,内网B和C的网关作为隧道客户端。
以隧道客户端B的访问终端访问隧道服务端A的WEB服务器为例,在隧道服务端A和隧道客户端B的支持tap设备的网关设备上,创建一个tap设备,一个tap设备既是一个虚拟网卡设备,也是一个字符设备。隧道客户端B向隧道服务端A发起连接,当隧道客户端B成功连接到隧道服务端A后,创建一个tap隧道接口,使用如下命令:
brctl addif br-lan tap0
brctl addif br-lan eth0
将该tap隧道接口和LAN侧的eth0接口放在同一个网桥br-lan下面,这样数据包就能在LAN接口和tap设备接口之间进行转发。
并且配置隧道客户端B和隧道服务端A的LAN侧设备的IP在同一个子网中,这样它们就能够像在同一个局域网中一样互相访问,从而建立在隧道服务端A和隧道客户端B虚拟网卡之上的虚拟局域网网络。
A2、以对端网关设备作为隧道客户端,接收来自内网的数据包,并采用SSL协议将数据包进行加密,封装在UDP报文中通过socket系统调用发送数据包;
在本实施例中,步骤A2具体包括:
响应于需要访问隧道服务端LAN侧应用服务器的隧道客户端LAN侧访问终端发出的ARP广播包,判断ARP广播包的目的地址是否为网桥mac;若是,则通过隧道客户端的LAN侧接口向同一网桥下的tap隧道接口转发ARP广播包;否则将ARP广播包转交给隧道客户端上层协议处理;
利用隧道客户端的tap隧道接口中的虚拟网卡驱动把从TCP/IP协议栈收到的数据包结构skb放入tap字符设备的读取队列,并利用隧道客户端的用户进程通过调用字符设备接口read获取完整的以太网数据帧,将核心态的skb传递给用户进程;
在隧道客户端的用户进程接收到数据包后使用SSL协议将以太网数据帧进行加密,然后封装在UDP报文中通过socket系统调用发送到隧道服务端。
具体而言,当隧道客户端B的访问终端在浏览器中输入192.168.1.10想要访问隧道服务端A的LAN侧的WEB服务时,由于192.168.1.10和隧道客户端B的访问终端的ip地址在同一个子网,所以隧道客户端B的访问终端首先会发送一个ARP广播包,请求192.168.1.10的mac地址。
然后隧道客户端B在LAN侧的eth0接口收到该ARP广播包后,会向eth0接口所在网桥的其他接口转发该报文。由于之前在配置时已将隧道客户端B的tap0接口加入该网桥,所以会执行到tap0接口的发送函数。
tap接口的虚拟网卡驱动把从TCP/IP协议栈收到的数据包结构skb放于tap字符设备的读取队列,然后隧道客户端B的用户进程通过调用字符设备接口read获取完整的以太网数据帧,字符驱动read函数的功能是从设备的读取队列读取数据,将核心态的skb传递给用户进程。
隧道客户端B的用户进程接收到数据包后使用SSL协议将这些以太网数据帧进行加密,然后封装在UDP报文中通过socket系统调用发送到隧道服务端A。
A3、以本端网关设备作为隧道服务端,通过socket系统接收隧道客户端发送的数据包,并使用SSL协议进行解密,同时记录原始报文的源mac和访问终端连接的对应关系,向应用服务器转发数据包;
在本实施例中,步骤A3具体包括:
利用隧道服务端的用户进程在设定UDP端口上监听隧道客户端发送的数据包,在收到隧道客户端发送的数据包后先使用SSL协议进行解密,得到原始报文,然后记录下原始报文的源mac和连接的对应关系;
再调用虚拟网卡的字符处理程序write写入虚拟网卡的字符设备,设备驱动程序完成数据从用户态到核心态的复制,并将数据写入skb链表,然后调用网卡netif_rx()接收程序,数据包再次进入系统TCP/IP协议栈,并通过网桥转发到隧道服务端的LAN侧接口,由隧道服务端的LAN侧接口将数据包转发给应用服务器。
具体而言,隧道服务端A的用户进程在指定的UDP端口上面进行监听,当收到隧道客户端B过来的数据包时,先使用SSL协议进行解密,得到原始报文,然后记录下原始报文的源mac和连接的对应关系。
然后调用虚拟网卡的字符处理程序write写入虚拟网卡的字符设备,设备驱动程序完成数据从用户态到核心态的复制,并将数据写入skb链表,然后调用网卡netif_rx()接收程序,数据包再次进入系统TCP/IP协议栈,此时协议栈收到的数据包就是隧道客户端LAN侧的收到的数据包,由于之前已经将隧道服务端的LAN接口和tap接口配置在同一个网桥下面,所以收到的数据包会通过网桥转发到隧道服务端的LAN侧接口。由于收到的是广播包,所以会向所有的隧道客户端连接转发该数据包,同时也会向隧道服务端tap接口所在的网桥转发该数据包。
A4、响应于应用服务器的应答包,利用隧道服务端根据目的mac向对应的隧道客户端发送应答包;
在本实施例中,当arp广播包经过隧道服务端A的LAN侧接口eth0到达WEB服务器后,由于WEB服务器的地址就是arp请求的地址,所以WEB服务器会发送arp应答。
隧道服务端A收到arp应答后,根据目的mac找到对应客户端的连接发送该数据包。
A5、利用隧道客户端通过UDP端口监听隧道服务端发送的应答包,并采用SSL协议将应答包进行解密,得到原始报文,向应用服务器转发数据包。
在本实施例中,步骤A5具体包括:
利用隧道客户端的用户进程在设定UDP端口上监听隧道服务端发送的ARP应答包,在收到隧道服务端发送的ARP应答包后先使用SSL协议进行解密,得到原始报文,然后通过隧道客户端的tap隧道接口向同一网桥下的LAN侧接口转发ARP应答包,由隧道客户端的LAN侧接口将数据包转发给隧道客户端LAN侧应用服务器,得到隧道服务端LAN侧应用服务器的mac地址。
具体而言,隧道客户端B的用户进程在指定的UDP端口上面进行监听,当收到隧道服务端A过来的应答包时,先使用SSL协议进行解密,得到原始报文,然后向网桥上的其它接口转发该ARP应答包。
当隧道客户端B的访问终端收到了该应答包后,就完成了一次数据的交互,此时隧道客户端B的访问终端也知道了WEB服务器端的mac地址,然后就可以开始进行http报文的交互过程了。
实施例2:
如图7所示,本发明实施例提供了一种多内网二层数据流通信方法,包括以下步骤B1至B8:
B1、在一个本端网关设备和至少两个对端网关设备之间建立二层通道;
在本实施例中,步骤B1具体包括:
在本端网关设备和至少两个对端网关设备分别创建一个tap设备和对应的tap隧道接口;
将本端网关设备的tap隧道接口和LAN侧接口通过同一网桥连接;
将对端网关设备的tap隧道接口和LAN侧接口通过同一网桥连接;
将本端网关设备的LAN侧设备IP地址和对端网关设备的LAN侧设备IP地址设置在同一子网中。
具体而言,分别位于互联网不同地方的内网A、B、C,他们在自己本地的网络中分别装有WEB服务器、文件共享服务器、打印服务器,他们都通过网关连接到互联网上。其中内网A的网关作为隧道服务端,内网B的网关作为目标隧道客户端,内网C的网关作为访问隧道客户端。
以访问隧道客户端C的访问终端访问目标隧道客户端B的文件共享服务器为例,目标隧道客户端B和访问隧道客户端C向隧道服务端A发起连接,当隧道客户端成功连接到隧道服务端后,创建一个tap隧道接口,分别使用如下命令:
brctl addif br-lan tap0
brctl addif br-lan eth0
将该tap隧道接口和LAN侧的eth0接口放在一个网桥br-lan下面,这样数据包就能在LAN接口和tap设备接口之间进行转发。
并且配置目标隧道客户端B、访问隧道客户端C和隧道服务端A的LAN侧设备的IP在同一个子网中,这样它们就能够像在同一个局域网中一样互相访问,从而建立在目标隧道客户端B、访问隧道客户端C和隧道服务端A之上的虚拟局域网网络。
B2、以一个对端网关设备作为访问隧道客户端,接收来自内网的数据包,并采用SSL协议将数据包进行加密,封装在UDP报文中通过socket系统调用发送数据包;
在本实施例中,步骤B2具体包括:
响应于访问隧道客户端LAN侧访问终端发出的ARP广播包,判断ARP广播包的目的地址是否为网桥mac;若是,则通过访问隧道客户端的LAN侧接口向同一网桥下的tap隧道接口转发ARP广播包;否则将ARP广播包转交给隧道客户端上层协议处理;
利用访问隧道客户端的tap隧道接口中的虚拟网卡驱动把从TCP/IP协议栈收到的数据包结构skb放入tap字符设备的读取队列,并利用隧道客户端的用户进程通过调用字符设备接口read获取完整的以太网数据帧,将核心态的skb传递给用户进程;
在访问隧道客户端的用户进程接收到数据包后使用SSL协议将以太网数据帧进行加密,然后封装在UDP报文中通过socket系统调用发送到隧道服务端。
具体而言,当访问隧道客户端C的访问终端想要访问目标隧道客户端B的 LAN侧的文件共享服务器时,由于文件共享服务器的IP和访问隧道客户端C的ip地址在同一个子网,所以访问隧道客户端C的访问终端首先会发送一个ARP广播包,请求文件共享服务器的mac地址。
访问隧道客户端C在eth0口收到该ARP广播包后,会向eth0所在网桥的其他接口转发该报文。由于之前在配置时已将隧道客户端的tap0接口加入该网桥,所以会执行到tap0接口的发送函数。
tap接口的虚拟网卡驱动把从TCP/IP协议栈收到的数据包放入tap字符设备的读取队列,访问隧道客户端C的用户进程通过调用字符设备接口read获取完整的以太网数据帧。
访问隧道客户端C的用户进程接收到数据包后使用SSL协议将这些以太网数据帧进行加密,然后封装在UDP报文中通过socket系统调用发送到隧道服务端。
B3、以本端网关设备作为隧道服务端,通过socket系统接收访问隧道客户端发送的数据包,并使用SSL协议进行解密,同时记录原始报文的源mac和访问终端连接的对应关系,向其它隧道客户端转发数据包;
在本实施例中,步骤B3具体包括:
利用隧道服务端的用户进程在设定UDP端口上监听访问隧道客户端发送的数据包,在收到访问隧道客户端发送的数据包后先使用SSL协议进行解密,得到原始报文,然后记录下原始报文的源mac和连接的对应关系;
再调用虚拟网卡的字符处理程序write写入虚拟网卡的字符设备,设备驱动程序完成数据从用户态到核心态的复制,并将数据写入skb链表,然后调用网卡netif_rx()接收程序,数据包再次进入系统TCP/IP协议栈,并通过网桥转发到隧道服务端的LAN侧接口,由隧道服务端的LAN侧接口将数据包转发给应用服务器。
具体而言,隧道服务端A的用户进程在指定的UDP端口上面进行监听,当收到访问隧道客户端C过来的数据包时,先使用SSL协议进行解密,得到原始报文,然后记录下原始报文的源mac和连接的对应关系。由于收到的是广播包,所以会向所有的隧道客户端连接转发该数据包,同时也会向隧道服务端tap接口所在的网桥转发该数据包。
B4、以另一个对端网关设备作为目标隧道客户端,通过UDP端口监听隧道服务端发送的数据包,并采用SSL协议将数据包进行解密,得到原始报文,向应用服务器转发数据包;
在本实施例中,步骤B4具体包括:
利用目标隧道客户端的用户进程在设定UDP端口上监听隧道服务端发送的ARP广播包,在收到隧道服务端发送的ARP广播包后先使用SSL协议进行解密,得到原始报文,然后通过目标隧道客户端的tap隧道接口向同一网桥下的LAN侧接口转发ARP广播包,由目标隧道客户端的LAN侧接口将数据包转发给目标隧道客户端LAN侧应用服务器。
具体而言,目标隧道客户端B的用户进程在指定的UDP端口上面进行监听,当收到隧道服务端A过来的ARP广播包时,先使用SSL协议进行解密,得到原始报文,然后向网桥上的其它接口转发该ARP应答包。
B5、响应于应用服务器的应答包,利用目标隧道客户端采用SSL协议将数据包进行加密,封装在UDP报文中通过socket系统调用发送数据包;
在本实施例中,当文件共享服务器收到了ARP请求包后,由于所请求的地址就是它自己的地址,所以文件共享服务器会发送一个ARP应答包。
目标隧道客户端B收到来自LAN侧接口的ARP应答包后,会通过socket系统发送给隧道服务端A。
B6、利用隧道服务端通过socket系统接收目标隧道客户端发送的数据包,并使用SSL协议进行解密,根据目的mac向访问隧道客户端发送应答包;
B7、利用访问隧道客户端通过UDP端口监听隧道服务端发送的应答包,并采用SSL协议将应答包进行解密,得到原始报文,向应用服务器转发数据包。
在本实施例中,访问隧道客户端C的用户程序在指定的UDP端口上面进行监听,当收到隧道服务端A过来的应答包时,先使用SSL协议进行解密,得到原始报文,然后向网桥上的其它接口转发该ARP应答包。
当内网C的访问终端收到了该应答包后,就完成了一次数据的交互,经此交互,内网C的访问终端就知道了目标隧道客户端BLAN侧文件共享服务器的mac地址,然后就可以进行文件共享协议报文的交互了。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。
Claims (10)
1.一种多内网二层数据流通信方法,其特征在于,包括以下步骤:
A1、在一个本端网关设备和至少一个对端网关设备之间建立二层通道;
A2、以对端网关设备作为隧道客户端,接收来自内网的数据包,并采用SSL协议将数据包进行加密,封装在UDP报文中通过socket系统调用发送数据包;
A3、以本端网关设备作为隧道服务端,通过socket系统接收隧道客户端发送的数据包,并使用SSL协议进行解密,同时记录原始报文的源mac和访问终端连接的对应关系,向应用服务器转发数据包;
A4、响应于应用服务器的应答包,利用隧道服务端根据目的mac向对应的隧道客户端发送应答包;
A5、利用隧道客户端通过UDP端口监听隧道服务端发送的应答包,并采用SSL协议将应答包进行解密,得到原始报文,向应用服务器转发数据包。
2.根据权利要求1所述的一种多内网二层数据流通信方法,其特征在于,步骤A1具体包括:
在本端网关设备和至少一个对端网关设备分别创建一个tap设备和对应的tap隧道接口;
将本端网关设备的tap隧道接口和LAN侧接口通过同一网桥连接;
将对端网关设备的tap隧道接口和LAN侧接口通过同一网桥连接;
将本端网关设备的LAN侧设备IP地址和对端网关设备的LAN侧设备IP地址设置在同一子网中。
3.根据权利要求2所述的一种多内网二层数据流通信方法,其特征在于,步骤A2具体包括:
响应于需要访问隧道服务端LAN侧应用服务器的隧道客户端LAN侧访问终端发出的ARP广播包,判断ARP广播包的目的地址是否为网桥mac;若是,则通过隧道客户端的LAN侧接口向同一网桥下的tap隧道接口转发ARP广播包;否则将ARP广播包转交给隧道客户端上层协议处理;
利用隧道客户端的tap隧道接口中的虚拟网卡驱动把从TCP/IP协议栈收到的数据包结构skb放入tap字符设备的读取队列,并利用隧道客户端的用户进程通过调用字符设备接口read获取完整的以太网数据帧,将核心态的skb传递给用户进程;
在隧道客户端的用户进程接收到数据包后使用SSL协议将以太网数据帧进行加密,然后封装在UDP报文中通过socket系统调用发送到隧道服务端。
4.根据权利要求3所述的一种多内网二层数据流通信方法,其特征在于,步骤A3具体包括:
利用隧道服务端的用户进程在设定UDP端口上监听隧道客户端发送的数据包,在收到隧道客户端发送的数据包后先使用SSL协议进行解密,得到原始报文,然后记录下原始报文的源mac和连接的对应关系;
再调用虚拟网卡的字符处理程序write写入虚拟网卡的字符设备,设备驱动程序完成数据从用户态到核心态的复制,并将数据写入skb链表,然后调用网卡netif_rx()接收程序,数据包再次进入系统TCP/IP协议栈,并通过网桥转发到隧道服务端的LAN侧接口,由隧道服务端的LAN侧接口将数据包转发给应用服务器。
5.根据权利要求4所述的一种多内网二层数据流通信方法,其特征在于,步骤A5具体包括:
利用隧道客户端的用户进程在设定UDP端口上监听隧道服务端发送的ARP应答包,在收到隧道服务端发送的ARP应答包后先使用SSL协议进行解密,得到原始报文,然后通过隧道客户端的tap隧道接口向同一网桥下的LAN侧接口转发ARP应答包,由隧道客户端的LAN侧接口将数据包转发给隧道客户端LAN侧应用服务器,得到隧道服务端LAN侧应用服务器的mac地址。
6.一种多内网二层数据流通信方法,其特征在于,包括以下步骤:
B1、在一个本端网关设备和至少两个对端网关设备之间建立二层通道;
B2、以一个对端网关设备作为访问隧道客户端,接收来自内网的数据包,并采用SSL协议将数据包进行加密,封装在UDP报文中通过socket系统调用发送数据包;
B3、以本端网关设备作为隧道服务端,通过socket系统接收访问隧道客户端发送的数据包,并使用SSL协议进行解密,同时记录原始报文的源mac和访问终端连接的对应关系,向其它隧道客户端转发数据包;
B4、以另一个对端网关设备作为目标隧道客户端,通过UDP端口监听隧道服务端发送的数据包,并采用SSL协议将数据包进行解密,得到原始报文,向应用服务器转发数据包;
B5、响应于应用服务器的应答包,利用目标隧道客户端采用SSL协议将数据包进行加密,封装在UDP报文中通过socket系统调用发送数据包;
B6、利用隧道服务端通过socket系统接收目标隧道客户端发送的数据包,并使用SSL协议进行解密,根据目的mac向访问隧道客户端发送应答包;
B7、利用访问隧道客户端通过UDP端口监听隧道服务端发送的应答包,并采用SSL协议将应答包进行解密,得到原始报文,向应用服务器转发数据包。
7.根据权利要求6所述的一种多内网二层数据流通信方法,其特征在于,步骤B1具体包括:
在本端网关设备和至少两个对端网关设备分别创建一个tap设备和对应的tap隧道接口;
将本端网关设备的tap隧道接口和LAN侧接口通过同一网桥连接;
将对端网关设备的tap隧道接口和LAN侧接口通过同一网桥连接;
将本端网关设备的LAN侧设备IP地址和对端网关设备的LAN侧设备IP地址设置在同一子网中。
8.根据权利要求7所述的一种多内网二层数据流通信方法,其特征在于,步骤B2具体包括:
响应于访问隧道客户端LAN侧访问终端发出的ARP广播包,判断ARP广播包的目的地址是否为网桥mac;若是,则通过访问隧道客户端的LAN侧接口向同一网桥下的tap隧道接口转发ARP广播包;否则将ARP广播包转交给隧道客户端上层协议处理;
利用访问隧道客户端的tap隧道接口中的虚拟网卡驱动把从TCP/IP协议栈收到的数据包结构skb放入tap字符设备的读取队列,并利用隧道客户端的用户进程通过调用字符设备接口read获取完整的以太网数据帧,将核心态的skb传递给用户进程;
在访问隧道客户端的用户进程接收到数据包后使用SSL协议将以太网数据帧进行加密,然后封装在UDP报文中通过socket系统调用发送到隧道服务端。
9.根据权利要求8所述的一种多内网二层数据流通信方法,其特征在于,步骤B3具体包括:
利用隧道服务端的用户进程在设定UDP端口上监听访问隧道客户端发送的数据包,在收到访问隧道客户端发送的数据包后先使用SSL协议进行解密,得到原始报文,然后记录下原始报文的源mac和连接的对应关系;
再调用虚拟网卡的字符处理程序write写入虚拟网卡的字符设备,设备驱动程序完成数据从用户态到核心态的复制,并将数据写入skb链表,然后调用网卡netif_rx()接收程序,数据包再次进入系统TCP/IP协议栈,并通过网桥转发到隧道服务端的LAN侧接口,由隧道服务端的LAN侧接口将数据包转发给应用服务器。
10.根据权利要求9所述的一种多内网二层数据流通信方法,其特征在于,步骤B4具体包括:
利用目标隧道客户端的用户进程在设定UDP端口上监听隧道服务端发送的ARP广播包,在收到隧道服务端发送的ARP广播包后先使用SSL协议进行解密,得到原始报文,然后通过目标隧道客户端的tap隧道接口向同一网桥下的LAN侧接口转发ARP广播包,由目标隧道客户端的LAN侧接口将数据包转发给目标隧道客户端LAN侧应用服务器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310708504.8A CN116436731B (zh) | 2023-06-15 | 2023-06-15 | 一种多内网二层数据流通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310708504.8A CN116436731B (zh) | 2023-06-15 | 2023-06-15 | 一种多内网二层数据流通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116436731A true CN116436731A (zh) | 2023-07-14 |
CN116436731B CN116436731B (zh) | 2023-09-05 |
Family
ID=87087698
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310708504.8A Active CN116436731B (zh) | 2023-06-15 | 2023-06-15 | 一种多内网二层数据流通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116436731B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103379009A (zh) * | 2012-04-20 | 2013-10-30 | 南京易安联网络技术有限公司 | 基于数据链路层的ssl vpn通信方法 |
WO2018161639A1 (zh) * | 2017-03-10 | 2018-09-13 | 华为技术有限公司 | 一种互联网协议安全性隧道的维护方法、装置及系统 |
CN116155649A (zh) * | 2021-11-23 | 2023-05-23 | 北京映翰通网络技术股份有限公司 | 基于二层隧道协议的工业互联网络的构建方法 |
CN116233071A (zh) * | 2022-11-21 | 2023-06-06 | 深圳市吉祥腾达科技有限公司 | 一种客户端访问内网资源的方法和可读存储介质 |
-
2023
- 2023-06-15 CN CN202310708504.8A patent/CN116436731B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103379009A (zh) * | 2012-04-20 | 2013-10-30 | 南京易安联网络技术有限公司 | 基于数据链路层的ssl vpn通信方法 |
WO2018161639A1 (zh) * | 2017-03-10 | 2018-09-13 | 华为技术有限公司 | 一种互联网协议安全性隧道的维护方法、装置及系统 |
CN116155649A (zh) * | 2021-11-23 | 2023-05-23 | 北京映翰通网络技术股份有限公司 | 基于二层隧道协议的工业互联网络的构建方法 |
CN116233071A (zh) * | 2022-11-21 | 2023-06-06 | 深圳市吉祥腾达科技有限公司 | 一种客户端访问内网资源的方法和可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116436731B (zh) | 2023-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3834394B1 (en) | Application transmission control protocol tunneling over the public internet | |
JP3343064B2 (ja) | フレームを捕獲、カプセル化及び暗号化するための擬似ネットワークアダプタ | |
US9467327B2 (en) | Server-mediated setup and maintenance of peer-to-peer client computer communications | |
US8250643B2 (en) | Communication device, communication system, communication method, and program | |
US7751321B2 (en) | Method and system for remote access to universal plug and play devices | |
JP4146886B2 (ja) | 通信モジュール及びこの通信モジュールを備えたアプリケーションプログラム | |
KR20060012623A (ko) | Upnp 미러링 시스템, 방법, 및 저장 매체 제품 | |
Yoshikawa et al. | Evaluation of new CYPHONIC: Overlay network protocol based on Go language | |
CN114172750B (zh) | 基于加密机制的网络通信方法、装置及存储介质 | |
US8146144B2 (en) | Method and system for the transparent transmission of data traffic between data processing devices, corresponding computer program product, and corresponding computer-readable storage medium | |
US20170207921A1 (en) | Access to a node | |
CN109547392B (zh) | 一种在sdn网络中支持多用户隔离的加密接入方法及系统 | |
WO2019041332A1 (zh) | 一种加速网络传输优化方法以及系统 | |
CN116436731B (zh) | 一种多内网二层数据流通信方法 | |
CN113542395B (zh) | 报文处理方法和报文处理系统 | |
JP2005057693A (ja) | ネットワーク仮想化システム | |
CA2136150A1 (en) | Apparatus and method for providing a secure gateway for communication and data exchanges between networks | |
JP2008010934A (ja) | ゲートウェイ装置、通信制御方法、プログラム、およびプログラムを記録した記憶媒体 | |
KR100660123B1 (ko) | Nat 통과를 위한 브이.피.엔 서버 시스템 및 브이.피.엔클라이언트 단말기 | |
JP2008060747A (ja) | レイヤ2負荷分散システム、レイヤ2負荷分散装置及びそれらに用いるレイヤ2負荷分散方法 | |
Cisco | Configuring PPP for Wide-Area Networking | |
EP2804346B1 (en) | Method and system for discovering dlna device automatically | |
JPH1132088A (ja) | ネットワークシステム | |
CN117439815B (zh) | 一种基于反向透明桥接的内网穿透系统及方法 | |
JP2003069597A (ja) | 大規模IPSecVPN構築方法、大規模IPSecVPNシステム、プログラム及び鍵共有情報処理装置 |
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 |