内网穿透的原理和实现方式

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介: 一、定义内网穿透也成NAT穿透,进行NAT穿透是为了使具有某一个特定源IP地址和源端口号的数据包不被NAT设备屏蔽而正确路由到内网主机。

一、定义

内网穿透也成NAT穿透,进行NAT穿透是为了使具有某一个特定源IP地址和源端口号的数据包不被NAT设备屏蔽而正确路由到内网主机

NAT(网络地址转换)设备自动屏蔽了非内网主机主动发起的连接,也就是说从外网发往内网的数据包将被NAT设备丢弃掉。这使得位于不同NAT设备之后的主机无法交换信息。这一方面保护了内网主机免于来自外部网络的攻击,另一方面也为P2P通信带来了一定困难。外部主

二、工作方式

通信双方一台位于NAT之后

主机A有公网IP,主机B位于NAT之后,有一个内网IP。由于主机A有公网IP,所以主机B可以直接通过TCP连接到主机A,而主机A则无法直接向主机B发起连接。这时需要一个共有服务器辅助进行内网穿透,A、B主机同时向服务器发起登录请求,并保持一个TCP或UDP连接。服务器记录其IP地址和端口后(服务器对主机B的记录是起经过NAT映射之后的IP和端口号)。当主机A想连接主机B,首先向服务器提出请求,服务器在收到请求后向主机B发出打洞命令,并将主机A的IP和端口号发给主机B。主机B根据收到的IP地址和端口号向主机A发起TCP连接或UDP数据包(打洞)。由于打了洞所以公网主机也可以访问通过这个洞越过NAT访问内网设备,接下来两个主机即可进行通信。

 即使用服务器记录下要访问内网的设备的IP,然后让处于内网的设备根据IP主动发起通信连接。(因为处于内网的设备已经提前主动连接了共有服务器,所以服务器才能向器发送命令和数据)

通信双方都位于NAT之后

实现方式同理,由于两个设备都没有公网IP,所以双方任意方向的的连接请求都会被对方的NAT设备屏蔽,同样需要两个设备都同时向服务器发起登录请求并保持连接。这个时候需要设备A向服务器提出连接请求,服务器将设备A的IP和端口号发给设备B,并向B发起打洞命令。设备B收到后向设备A发送一定数目的 UDP探测包或 TCP 连接请求,在 NAT B 上打一个方向为端口号对A设备的洞,随后告知服务器打洞完成。服务器收到后让A发出请求,由于此时设备B已经留下了对应于设备A的洞,故A设备发出的请求或数据包不会被丢弃。而随着A请求设备B,自己的NAT同样出现了朝向设备B的洞,那么双方即可完成通信。

三、总结

如果A主动向B发送一条信息,则A就在自己的NAT上打了一个朝向B的洞。这样A的这条消息到达B的NAT的时候,虽然被丢掉了,但是如果B这个时候在给A发信息,到达A的NAT的时候,就可以通过A之前打的洞将消息发送给A。

简单来讲,就是如果A和B要进行通信,那么得事先A发一条信息给B,B发一条信息给A,提前在各自的NAT上打了对方的洞,这样下一次A和B之间就可以进行通信了。而想要让他们能给对方法信息就得知道对方的IP地址,这就需要通过一个实现连接好的公网服务器进行信息的传递。


而内网穿透就是说我们让自己的内网设备事先去绑定一个具有公网IP设备的端口进行通信。那么当我们请求公网设备的指定端口时内网设备便能知道请求方的IP和端口,随后主动与其通信,实现与内网设备的通信。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
负载均衡 Ubuntu 应用服务中间件
|
弹性计算 网络协议 Linux
IPv6访问不通的排查方法
IPv6访问不通的排查方法
IPv6访问不通的排查方法
|
2月前
|
运维 监控 网络协议
如何设计一个高性能内网穿透服务
本文深入解析了基于Go语言开发的高性能内网穿透工具IntraLink,涵盖其技术架构、核心实现、协议处理、性能优化与安全机制,展示了如何构建高效、稳定、安全的内网穿透服务。
134 1
|
域名解析 监控 网络协议
内网穿透介绍
内网穿透介绍
|
3月前
|
存储 人工智能 网络协议
为什么NAS需要内网穿透,如何给自建NAS做内网穿透
内网穿透是一种解决外网访问内网服务的技术,通过公网服务器中转或直连方式,实现对家中的NAS、摄像头等设备的远程访问。文章详细介绍了内网与外网的区别、NAS为何需要内网穿透,以及两种主要实现方式:端口转发和P2P直连。同时列举了常见工具如NAT123、FRP、Ngrok和Infortress,分别适合不同技术基础的用户。总结指出,内网穿透让远程访问变得便捷,而相关工具则降低了使用门槛,让更多人受益于这项技术。
|
弹性计算 应用服务中间件 Linux
阿里云服务器开放端口完整图文教程
笔者近期开发完成的服务端程序部署在阿里云的ECS云服务器上面,一些应用程序配置文件需要设置监听的端口(如Tomcat的8080、443端口等),虽然通过CentOs 7系统的的「防火墙」开放了对应的端口号,任然无法访问端口号对应的应用程序,后面了解到原来还需要设置云服务器的「安全组规则」,开放相应的端口权限,服务端的接口才能真正开放。
3272 1
阿里云服务器开放端口完整图文教程
|
7月前
|
云安全 运维 安全
阿里云免费版SSL证书申请及部署图文教程指导
SSL证书是个人和企业搭建网站不可或缺的云安全产品,SSL证书能够为网站和移动应用(APP)及小程序提供数据HTTPS加密协议访问,保障数据的安全。阿里云SSL证书有收费版的也有免费版的,有的新手用户由于是初次在阿里云申请SSL证书,可能不是很清楚免费版证书的申请和部署流程,本文为以图文形式为大家展示阿里云免费版SSL证书最新的申请及部署教程,以供参考。
|
8月前
|
网络协议 Shell Linux
使用NPS内网穿透图文详细教程
使用NPS内网穿透图文详细教程
2364 1
|
弹性计算 网络协议 Linux
阿里云主机构建FRP内网穿透家用服务器避坑指南
详述了利用FRP工具搭建内网穿透的流程,包括阿里云ECS的配置、家用服务器的准备、FRP工具的下载与配置,以及通过SSH远程访问本地服务器的解决策略,确保了内外网间的稳定连接。
4005 1
阿里云主机构建FRP内网穿透家用服务器避坑指南

热门文章

最新文章