内网穿透打洞是什么?一起了解下

老牛谈网络 2025-04-10 19:13:15

内网穿透的目

让外部网络可以能访问你本地的应用,例如在外网打开你本地http://127.0.0.1指向的Web站点。

内网穿透的工作方式

NAT(Network Address Translation)的问题在于非内网主机主动发起的连接。从外网发往内网的数据会被NAT丢弃掉。虽然保护内网主机免于外部的攻击,但是给端到端的通信带来了障碍。地址限制锥形和端口限制锥形的NAT要求外网与内网通信,必须有内网主动发起连接,让NAT产生映射表。

内网设备访问外部服务器主动连接:正常通信

内网设备主动发起连接,访问外部服务器。

内网设备主动发起连接外部设备,本地IP:192.168.100.111/24,本地端口号100;外部服务器端口号:1000,IP为公网:144.12.1.22

NAT设备做IP和端口的转换,端口号45025,IP:135.100.144.121,形成NAT转换表

外部设备回访,数据包到NAT查找转换的表项

连接正常建立,网络通信正常

外部服务器主动连接内网设备:无法建立网络连接

外部服务器想访问内网,由于内网设备的IP和端口没有暴露出来,导致外部网络不知道内网设备经过NAT转换后的公网IP和公网端口号,所以无法建立连接。即使知道内网设备在NAT后的公网IP和端口,但是在NAT设备上面没有NAT转换表,也无法得知具体的内网设备。

公有的服务器辅助进行内网穿透

当 外部设备想连接 内网设备时,首先向服务器提出请求,服务器在收到请求后向 内网设备发出打洞命令,并将 外部设备的IP 地址和端口发给内网设备,内网设备根据接收到的 IP地址和端口号向外部设备 发起 TCP 连接 或发送 UDP 数据包。然后 内网设备和外部设备之间便可以建立数据传输通道。

两台内网设备互访穿透过程

两方都处于内网中,直接的通信是不能连通的,也是需要借助一个位于公网的中转服务器来进行通信。内网设备A首先向中转服务器提出连接请求,中转服务器将内网设备A 的 IP地址和端口号[174.12.1.22:100]发给 内网设备B并 发出连接请求;内网设备B 收到服务器的连接请求后首先向NATA[174.12.1.22:100]发送一定数目的 UDP探测包或 TCP 连接请求,在 NAT B 上记录连接,内网设备 B 随后向中转服务器回复连接完成;服务器在收到 内网设备B 的报告后将 内网设备B NAT后的公网IP 地址和端口号发给内网A的NAT,此时由于 NAT B 上已经留下了对应设备A方向的连接。内网设备 A 向内网设备B发出的数据包或连接请求将不会被丢弃。

UDP内网打洞过程

两个需要通过内网穿透进行通讯的内网客户端,分别将自己的外网收发接口注册给一个具有公网ip的中转服务器

中转服务器将两个客户端注册的收发接口分别告知给对端;

一个内网客户端使自己的接收端口作为源地址,向对端的发送端口发送一个udp数据包,这个数据包称为打洞包。发送过这个打洞包后,可以在这个内网的出口 路由器上产生一条NAT记录,令后续从对端发送端口发来的数据包都不被丢弃, 而是转发给相应的内网客户端的指定端口

发送过打洞包后,对端发送至本端路由器指定接收端口的数据包,就会根据NAT记录转发至本端的内网服务器接收端口,从而实现了内网服务器接收外网数据包的功能

另一个内网服务器同样执行上述步骤3、4, 即可实现两端内网服务器相互收发音频数据包的功能。

0 阅读:0
老牛谈网络

老牛谈网络

智慧办公、智慧安防、交换机知识科普