内网穿透的英文叫做 NAT traversal,又被称为端口映射或内网映射,内网穿透是网络连接术语,即在计算机是局域网内的时候,外网与内网的计算机的节点进行连接时所需要的连接通信,有时候就会出现内网穿透不支的情况。
内网穿透的功能就是,当我们在端口映射时设置时,内网穿透起到了地址转换的功能,也就是把公网的地址进行翻译,转成为一种私有的地址,然后再采用路由的方式 ADSL 的宽带路由器,具有一个动态或者是固定的公网 IP,最后 ADSL 直接在 交换机 上,这样所有的电脑都可以共享上网。内网穿透除了可以实现内网之间机器的网络通信功通之外,还可以解决 UDP 中出现的数据传输不稳定问题。
这里列举了一些比较好用的开源的内网映射工具,详细介绍一下各个软件工具的特点:
1. frp
FRP 功能完整,主要采用 GO 语言实现,重量级的工具,服务端界面样式风格一般。
配置繁琐,不同的协议需要配置不同的参数,采用文件存放数据,不支持数据库管理数据。
2. holer
轻量级的内网映射工具,holer 服务端采用 Java 语言实现,服务端界面漂亮简洁。
Holer 客户端采用了 Java 语言和 GO 语言实现了两种版本,支持几乎所有的 OS 平台。
用到流行的微服务框架 springboot 和 Java 网络框架 netty。
配置很简单,针对所有 TCP 协议只需在客户端设置一个 holer access key 即可。
采用 MySQL 数据库统一管理数据。
3. nps
轻量级的内网映射工具,完全采用 GO 语言实现,服务端界面漂亮简洁。
支持的协议最广泛,配置稍简单,采用文件存放数据,不支持数据库管理数据。
4. lanproxy
轻量级的内网映射工具,客户端采用 GO 语言和 Java 语言实现两种版本,采用了 Java 网络框架 netty,服务端界面体验较差。
配置稍繁琐,采用文件存放数据,不支持数据库管理数据。