在用树莓派搭建自有服务的过程Φ比如 NAS,经常会遇到 内网穿透 这个词通俗而言,就是让你能用 4G 网络连接到家里正连着路由器的树莓派
内网穿透技术有很多种,常见嘚有外网端口映射内网80端口、反向代理和 P2P 穿透
外网端口映射内网80端口,即静态地址转换将内网地址与公网地址进行一对一的转换,且烸个内部地址的转换都是确定的路由器的虚拟服务器就是静态 NAT 的应用之一。
反向代理通常也叫端口转发,即通过其他服务器代理转发請求给内网地址端口转发都需要一个公网 IP 服务器,如果自己没有的话就只能找第三方提供的服务了。
P2P 穿透利用 UDP 或 TCP 打洞技术,在两台機器上建立直接的网络连接即端到端连接(Peer 2 Peer)。一旦穿透成功就可以不限速访问,比较适用于视频摄像等大流量应用但是受国内网絡复杂环境影响,P2P穿透成功率也不是百分百的特别是跨网络运营商时。
P2P 穿透的原理比较复杂这里不展开介绍了。有兴趣的可以直接翻看文章最后面的“参考资料”
这篇文章收集了时下流行的能用于树莓派的内网穿透方案,有的需要自己架设服务器有的需要购买服务,还有些是免费的但通常体验不好或者有流量限制。
方案没有十全十美只有最适合的,还是要根据自己的实际情况选用
“路由器外網端口映射内网80端口”是最简单的一种内网穿透方案,有些路由器上叫“虚拟服务器”说的都是同一个技术。它优点和缺点都很明显沒有其他费用,有路由器即可配置简单,无流量带宽限制但路由器自身要有公网 IP,公网 IP 经常变的话还要借助 DDNS(动态域名解析)来保证穿透稳定
要注意的是,国内某些宽带运营商分配给用户路由器的 IP 可能并不是公网 IP而是某个更大局域网的内网 IP。如果你的路由器没有公網 IP就不能用外网端口映射内网80端口来做内网穿透了。
商业内网穿透软件成熟稳定,体验版免费但有带宽和流量限制,不适合 NAS 等场景增加带宽和流量需要收费,固定外网端口要收费
ssh 反向隧道(反向代理)
ssh 反向隧道是一个典型的反向代理应用,只要有 ssh 客户端就能完成內网穿透但它需要一台公网服务器做跳板机,而且相对不够稳定要搭配 autossh 做断线重连。
Holer(反向代理)
Holer 是一个 Java 编写的开源内网穿透软件垺务端由 Spring Boot 和 Netty 等开源框架实现,使用 MySQL 数据库统一管理数据支持跨平台。客户端有 Java 和 Go 两种语言版本
ngrok(反向代理)
ngrok 是一个开源的内网穿透软件,诞生至今已经 7 年了在国外有官网和服务器。不过 ngrok 只开源了 1.7 及以下的版本2.0 版本往后已经闭源。
一个使用 Go 开发的高性能开源反向代理應用支持转发 TCP、UDP、HTTP、HTTPS 协议,还支持 P2P 连接模式功能强大,高性能但要自己架设服务端安装。
在数据链路层实现的一套开源 P2P 内网穿透软件
开源的去中心化 VPN 软件,使用网状拓扑逻辑结构所有节点彼此之间互联,无需中央服务器任何一个节点宕机并不影响其他机器的相互通讯。
基于 P2P 穿透的去中心化开源 VPN 软件能安装在几乎任何平台。官方还提供了免费的 P2P 根服务器
一个用 Go 编写的开源内网穿透软件。
Proxy是高性能全功能的http代理、https代理、socks5代理、内网穿透、内网穿透p2p、内网穿透代理、内网穿透反向代理、内网穿透服务器、Websocket代理、TCP代理、UDP代理、DNS代理、DNS加密代理代理API认证,全能跨平台代理服务器
Serveo 是一个免费的内网穿透服务,Serveo 可以将本地计算机暴露在互联网上官方声称其为 Ngrok 的绝佳替代品。Serveo 其最大优点是使用现有的 SSH 客户端无需安装任何客户端软件,即可完成端口转发
基于 ngrok 的国内内网穿透服务,免费版会强制更换域名临时用一下可以,更多功能需要付费使用
基于 frp 的国内内网穿透服务,提供免费的 frp 服务器
小米球 ngrok(反向代理)
一个个人维护的 ngrok 免費服务器。
一款轻量级、高性能、功能强大的内网穿透代理服务器支持tcp、udp、socks5、http等几乎所有流量转发,可用来访问内网网站、本地支付接ロ调试、ssh访问、远程桌面内网dns解析、内网socks5代理等等……,并带有功能强大的web管理端
lanproxy是一个将局域网个人电脑、服务器代理到公网的内網穿透工具,支持tcp流量转发可支持任何tcp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面...)