内网穿透工具是一类用于实现局域网设备向外网暴露服务的网络工具。它可以帮助用户在没有公网IP的情况下,让外部网络访问位于内网中的服务,比如网站、API接口、远程桌面等。通过内网穿透,使用者可以轻松实现远程调试、演示部署,甚至跨网络访问私有系统,无需对路由器进行复杂的端口映射设置。
一、内网穿透实际应用中常见的场景有:
内网穿透工具的应用场景非常丰富,主要包括:
远程调试本地服务: 开发者在本地运行Web项目或小程序后,可通过内网穿透生成公网访问地址,方便进行远程演示或第三方平台回调测试(如支付、登录等接口调试)。
移动办公或远程维护: 运维人员可以通过内网穿透远程访问公司内网中的管理系统、数据库或NAS存储设备,提升远程运维效率。
智能设备连接: 在智能家居、工业物联网等场景中,用户可以远程访问部署在家中或工厂内部的摄像头、控制面板等设备。
本地服务器托管展示: 个人用户或小团队在没有服务器的情况下,也可以通过内网穿透将本地网站、项目原型等分享给外部用户访问。
二、这里汇总收录8个优质的内网穿透开源项目,如有帮助,点赞收藏一下吧。
市场上有不少内网穿透工具,如普通小白用户想要操作简单稳定考虑的有如花生壳、nat123、快解析等。如想要开源的方便定制或自己有时间搭建的,这里面下面将详细介绍8个不错的细品。
(一)、NPS
https://github.com/ehang-io/nps
一款Go语言编写的功能全面的内网穿透代理工具,它让我们摆脱网络边界的限制,像访问本地资源一样流畅地连接任何内网服务。
1、NPS服务端部署步骤(需要有公网IP的服务器):
下载对应系统的服务端压缩包并解压
进入程序目录,Linux系统执行sudo ./nps install,Windows系统以管理员身份运行nps.exe install
启动服务:Linux使用sudo nps start,Windows运行nps.exe start
打开浏览器访问http://服务器IP:8080(默认管理端口)
使用初始账号密码登录(默认admin/123,建议立即修改增强安全性)
在管理界面创建新的客户端连接信息
NPS客户端配置流程(内网设备):
2、NPS客户端部署:
可以直接注册到系统服务(开机启动、守护进程)
对于linux、darwin
注册:sudo
./npc
install 其他参数(例如-server=xx -vkey=xx或者-config=xxx)
启动:sudo npc start
停止:sudo npc stop
如果需要更换命令内容需要先卸载./npc uninstall,再重新注册
对于windows,使用管理员身份运行cmd
注册:npc.exe install 其他参数(例如-server=xx -vkey=xx或者-config=xxx)
启动:npc.exe start
停止:npc.exe stop
如果需要更换命令内容需要先卸载npc.exe uninstall,再重新注册
如果需要当客户端退出时自动重启客户端,请按照如图所示配置
注册到服务后,日志文件windows位于当前目录下,linux和darwin位于/var/log/npc.log
(二)、NeutrinoProxy
https://gitee.com/dromara/neutrino-proxy
官网:https://neutrino-proxy.dromara.org
是一个基于Java和Netty技术栈开发的开源项目,其核心功能就是内网穿透。它不仅支持流量监控、域名映射、端口映射等基础功能,还提供了用户/License管理、端口池、SSL隧道加密等高级功能。这些功能让项目不仅仅是一个简单的内网穿透工具,更是一个多功能的代理服务器。例如,通过域名映射,开发者可以更方便地进行开发和调试;通过SSL加密,则保证了数据传输的安全性。遵循 MIT 许可,可以用于任何个人或商业行为。
安装部署 (参考:https://gitee.com/dromara/neutrino-proxy/blob/master/docs/%E5%BF%AB%E9%80%9F%E4%BD%BF%E7%94%A8.MD)
1、官网下载服务端zip和客户端zip
2、解压并启动服务端(可以打开UI即说明服务启动成功)
3、登录localhost:8888 以admin管理员身份查看License的Key
4、解压客户端,编辑app.yml文件,修改服务端IP和客户端唯一连接凭证Key(就是上面提到的Key)
5、保存app.yml文件后,启动客户端(cmd最后一行出现 SUCCESS则说明成功,同时也可以刷新UI界面看看在线状态是否从离线变成在线,)
6、打开localhost:8888 UI界面,对License端口映射进行配置
7、协议选http就可以 1-》协议选http 2-》服务端端口选一个可用的 3-》客户端IP写启动客户端电脑的IP 4-》客户端端口写启动客户端服务的服务端口
8、验证外网访问:在UI界面配置好后,打开浏览器,输入localhost:端口号,出现服务端电脑的服务UI则成功。
(三)、linker
https://github.com/snltty/linker
linker是一个基于 .NET8 开源免费(GPL-2.0 license)的异地组网和内网穿透工具,支持TCP(支持IPV6)打洞、UDP打洞,服务器中继,异地组网使用虚拟网卡将各个客户端组建为局域网络、支持点对点、点对网、网对网等。
1、linker服务端安装
软件支持Windows、Linux、openwrt等方式安装,本次采用的是Windows,官网下载x64的安装包
解压后 运行linker.tray.win.exe,
先点击【安装服务】,然后安装完后,再点击管理,进入初始化设置
初始化的时候选择【作为服务端】
服务端口:这个是客户端连接服务端用的
信标密码:接入到服务端需要这个密码,允许为空
其他三个密钥记得复制下来,配置客户端的时候需要用到,如果忘记复制了,可以卸载服务,删除config文件后重新安装初始化,或者直接看软件目录的config文件夹下的server.json文件
完成后重启下软件就可以了,如果没配置为客户端,重启后就没办法进入管理界面了。
到时候客户端那边自己管理就可以了
2、linker客户端安装
跟服务端安装的方式类似,就是初始化的时候选择【作为客户端】
填写好对应的机器名、接口密码、分组名和密码,端口就按默认的就可以了
接口密码:这个是软件连接管理界面用的密码
分组名和分组密码,第一台客户端填写好后记录下来,后续客户端如果填写一样的分组和密码,就会再在同分组下可见。
上面信息填写完毕后,勾选【我有服务器】
然后填写刚才搭建的服务端的信息
信标服务:这个就填刚才服务器的IP和端口,端口默认1802 信标密码 就是刚才配置服务器的时候填写的密码
其他3个密钥就是配置服务器的时候自动生成的那个几个密钥,对应的填上
配置完成后 重启服务,点击【管理-专业】 这个时候会提示连接失败,因为默认的密码不是刚才我们设置的接口密码。填写接口密码后,点击【确定】就能进入客户端的管理界面了
(四)、frp
https://github.com/fatedier/frp
frp 采用 Golang 编写,支持跨平台,你仅需下载对应平台的二进制文件即可,无需任何依赖,堪称小白利器。在同类软件中应该是最热门的软件之一。
1、FRP配置服务端(frps)
创建 frps.toml 配置文件:
# frps.toml - 服务端配置
# 基础配置
bindPort = 7000 # frps 监听端口
# 安全配置
[auth]
method = "token"
token = "your_secure_token_here" # 请修改为复杂密码
# 端口限制(可选,提升安全性)
allowPorts = [
{ start = 8000, end = 8010 }, # 允许 8000-8010 端口
{ single = 3306 }, # 允许 3306 端口
{ single = 22 } # 允许 22 端口
]
# Web 管理界面(可选)
[webServer]
addr = "0.0.0.0"
port = 7500
user = "admin"
password = "your_admin_password"
# 日志配置
[log]
to = "./frps.log"
level = "info"
maxDays = 7
2、FRP启动服务端
# 前台启动(测试用)
./frps -c frps.toml
# 后台启动(生产环境)
nohup ./frps -c frps.toml > frps.out 2>&1 &
# 检查运行状态
ps -ef | grep frps
netstat -tunlp | grep 7000
3、配置客户端(frpc)
创建 frpc.toml 配置文件:
# frpc.toml - 客户端配置
[common]
serverAddr = "your_server_ip" # 服务端公网 IP
serverPort = 7000 # 服务端监听端口
auth.token = "your_secure_token_here" # 与服务端保持一致
# SSH 服务穿透
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 8022
# Web 服务穿透
[[proxies]]
name = "web"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8080
remotePort = 8080
# MySQL 数据库穿透
[[proxies]]
name = "mysql"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3306
remotePort = 8306
4、启动客户端
# 前台启动(测试用)
./frpc -c frpc.toml
# 后台启动(生产环境)
nohup ./frpc -c frpc.toml > frpc.out 2>&1 &
# 检查运行状态
ps -ef | grep frpc
5、验证连接
# SSH 连接测试
ssh user@your_server_ip -p 8022
# Web 服务访问
curl http://your_server_ip:8080
# MySQL 连接测试
mysql -h your_server_ip -P 8306 -u username -p
更多配置,可参考官方文档:https://gofrp.org/zh-cn/docs/
作为一款开源免费的服务,frp 配置简单,非常适合小白上手。
(五)、FastTunnel
https://github.com/SpringHgui/FastTunnel
https://gitee.com/Hgui/FastTunnel
FastTunnel是用.NET Core开发的一款跨平台内网穿透工具,它可以实现将内网服务暴露到公网供自己或任何人访问。
启动fasttunnel服务端:
1. 打开appsettings.json ,配置urls
2. 启动服务端运行
chmod +x FastTunnel.Server./FastTunnel.Server
配置fasttunnel客户端:
解压文压缩包到目录,打开appsettings.json ,这里需要配置的是服务端运行的Url(ip)和端口
,然后配置本地运行的服务
启动fasttunnel客户端
双击客户端 FastTunnel.Client.exe连接server服务, 如下表示穿透成功,外网已经可以访问到内网的服务了,访问的URL ,例子中的Url为自己实际地址;
如果你在寻找一个可靠的网络代理解决方案,FastTunnel 绝对值得尝试。无论是个人用户还是企业用户,都能从中受益。
(六)、NSmartProxy
https://github.com/tmoonlight/NSmartProxy
NSmartProxy 是一款强大开源的内网穿透工具,采用.NET CORE的全异步模式打造。
NSmartProxy包含两个服务程序:
服务端(NSmartProxy.ServerHost):部署在外网,用来接收来自最终使用者和客户端的反向连接,并将它们进行相互转发。
客户端(NSmartProxyClient):部署在内网,用来转发访问内网各种服务的请求以及响应。
使用方法
打开安装目录下的appsettings.json文件,配置服务地址,映射地址和端口(winform版本也兼容这种配置方式,也可直接进入界面配置)
1、运行NSmartProxy客户端
Linux
sudo unzip nspclient_scd_linux_v1.2.zipcd nspclient_scd_linux_v1.2chmod +x ./NSmartProxyClient./NSmartProxyClient
MacOS
sudo unzip nspclient_osx_linux_v1.2.zipcd nspclient_scd_osx_v1.2chmod +x ./NSmartProxyClient./NSmartProxyClient
Windows: 解压后运行NSmartProxyWinform.exe即可
2、运行NSmartProxy服务端
第一步 cd到安装目录
第二步 执行以下命令
Linux/MacOS:
chomod +x ./NSmartProxy.ServerHost./NSmartProxy.ServerHost
Windows:
点击 Win+R 打开运行窗口. 输入 “cmd” 按下Ctrl+Shift+Enter打开管理员身份运行的命令行窗口。cd到安装目录,运行如下指令:
NSmartProxy.ServerHost
第三步 登陆http://ip:12309 进入web端,出厂用户密码为admin/admin
第四步 进入服务端对用户进行各种管理操作
在这个追求高效与便捷的时代,NSmartProxy无疑为我们提供了内网穿透的完美解决方案。
(七)、Netmaker
https://github.com/gravitl/netmaker
一个基于WireGuard的开源网络管理工具,它能够自动化创建和管理快速、安全且分布式的虚拟网络。
Netmaker 是一个开源的内网穿透工具,它可以帮助你轻松地在内网环境中创建安全的隧道,让你可以从外部网络访问你的内部服务器或设备。Netmaker 主要通过 WireGuard 协议来实现这一点,这使得它既安全又高效。下面是一些使用 Netmaker 进行内网穿透的基本步骤:
1. 安装 Netmaker
首先,你需要在你的服务器上安装 Netmaker。Netmaker 支持多种操作系统,包括 Linux、Windows 和 macOS。
在 Linux 上安装:
curl -sL https://netmaker.madjar.dev/install.sh | sudo bash
在 Windows 上安装:
你可以下载 Netmaker 的 Windows 版本并运行安装程序。
2. 配置 Netmaker
安装完成后,你需要配置 Netmaker。这通常涉及到设置管理员账户和一些基本的网络配置。
启动 Netmaker 服务:
sudo systemctl start netmaker
访问 Netmaker Web UI:
在浏览器中访问 http://<你的服务器IP>:8083 来管理你的网络。
3. 创建网络
在 Netmaker 的 Web UI 中,创建一个新的网络。你需要指定网络的名称、子网(如 10.8.0.0/24)和网关地址。
4. 添加节点
在创建网络后,你可以添加节点到你的网络中。每个节点代表一个想要从外部访问的内部设备或服务器。在添加节点时,你需要为每个节点生成一个密钥,这个密钥将用于 WireGuard 的配置。
5. 配置客户端
在客户端设备上(例如你的笔记本电脑或手机),你需要安装 WireGuard 并配置它以连接到 Netmaker 网络。你可以从 Netmaker 的 Web UI 中获取到配置文件,该文件包含了必要的 WireGuard 配置信息。
在 Linux 或 macOS 上配置 WireGuard:
安装 WireGuard:
sudo apt-get install wireguard # Debian/Ubuntu
sudo yum install wireguard-tools # CentOS/RHEL
导入配置文件:
sudo wg-quick up /path/to/your/config.conf
在 Windows 上配置 WireGuard:
下载并安装 WireGuard for Windows。
导入配置文件。
6. 测试连接
一旦客户端配置完成,你应该能够从外部网络通过 Netmaker 访问你的内部网络中的设备了。使用如 ping 或 ssh 等工具来测试连接。
(八)、NodePass
https://github.com/yosebyte/nodepass
NodePass 是一个开源的网络隧道工具,基于 Go 语言开发,目标是让两台机器之间的通信变得简单又安全。
NodePass 是一款基于 Node.js 的内网穿透工具,它可以帮助用户将内网服务暴露到公网,从而实现远程访问。使用 NodePass 进行内网穿透通常涉及以下几个步骤:
1. 安装 NodePass
首先,你需要在服务器上安装 NodePass。你可以通过 npm 来安装 NodePass:
npm install -g nodepass
2. 配置 NodePass
在服务器上配置 NodePass。你需要创建一个配置文件(例如 nodepass.json),并指定要暴露的服务端口。例如:
{
"port": 8080,
"localPort": 3000,
"localHost": "127.0.0.1",
"publicPort": 8080,
"publicHost": "your-public-ip"
}
port 是 NodePass 监听的端口。
localPort 是你内网服务实际运行的端口。
localHost 是内网服务的 IP 地址。
publicPort 和 publicHost 是你在公网上访问时使用的端口和 IP。
3. 启动 NodePass
使用以下命令启动 NodePass:
nodepass -c nodepass.json
4. 设置端口转发(可选)
如果你使用的是 NAT 路由器,你可能需要在路由器上设置端口转发,将公网 IP 的特定端口转发到服务器的 NodePass 监听端口。例如,如果你希望公网用户可以通过 your-public-ip:8080 访问你的内网服务,你需要在路由器上设置将端口 8080 的流量转发到服务器的 NodePass 监听端口。
5. 访问内网服务
配置完成后,你就可以通过公网 IP 和指定的端口来访问你的内网服务了。
跟传统的 VPN 或者其他重型工具比,NodePass 就像个灵活的小精灵,干活利索还不挑食。
三、小结
有资源有时间有点技术的话,采用开源工具搭建内网穿透服务,是个不错的选择。如果你确实没有公网IP,还是普通小白用户,在考虑综合操作便捷性和稳定性,以及成本控制时,像nat123或快解析这样的内网穿透工具直接使用也是一种选择。