Windows 内网穿透
本文介绍下内网穿透技术,主要用于公司内网不同局域网以及外网访问内网场景
内网穿透通过使用中间服务器,使得位于内网或防火墙后面的设备能够被外部网络访问。以下是我了解的内网穿透主要流程:
1. 内网设备主动连接到中间服务器:
内网设备通过主动发起与中间服务器的连接,绕过NAT和防火墙的限制。NAT允许内网设备向外部发起连接,因此内网设备可以与中间服务器建立一个持久的连接。
这种连接通常采用TCP协议,确保连接的可靠性和稳定性。
2. 外网设备向中间服务器发出请求:
外部设备通过公共网络访问中间服务器,并向其发出请求,以访问内网中的服务。中间服务器通常通过一个公共IP地址对外提供服务,外部设备可以通过这个地址进行访问。
3. 中间服务器转发请求:
中间服务器接收到外部设备的请求后,将该请求转发给已经与其建立连接的内网设备。
内网设备处理请求后,通过连接返回响应给中间服务器。
4. 中间服务器返回响应:
中间服务器将内网设备的响应数据转发回外部设备,完成整个请求-响应过程。
这种方法有效避开了防火墙和NAT网关的限制,使得内网设备的服务可以安全地暴露给外部网络。
实现内网穿透的一个常见方法是使用第三方库或工具,例如Frpc 示例 | frp
不过内网穿透可能会有失败的情况,比如我当前项目使用的打洞技术,偶尔就会失败,具体原因暂时未知。猜测是以下几个情况:
1. NAT网关限制,NAT设备有很多类型,对称NAT因为要为每个外部目的地分配不同映射端口,导致难以穿透。另外也有NAT设备不支持UDP打洞
2. 网络延迟和超时,因为打洞技术是在短时间内同时发送接收数据包,延迟大或者超时可能导致打洞失败
3. IP以及端口变化,打洞建立成功之后,动态IP场景会导致连接失效
参考文章:
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步