周末搭建树莓派服务器之二(内网穿透)

内容预告访问

上一篇,我们通过 Raspberry Pi Imager 已经在 SD 卡上做好用于树莓派的 Ubuntu 服务器系统。把它插入树莓派卡槽,连接网线和电源我们就得到了一个树莓派服务器✌🏻。 image.png

但是在日常使用中,很多用户希望能够从外网轻松访问树莓派,无论你是在办公室还是在外地旅行。内网穿透就是实现这一目标的关键。本文将聚焦于通过路由器端口转发来实现这一功能。

1. 内网穿透技术对比

在开始配置之前,我们先了解几种常见的内网穿透技术及其优缺点,以便选择最适合你的解决方案:

技术 优点 缺点 适用场景 FRP (Fast Reverse Proxy) 开源,支持多协议(如 HTTP、TCP、UDP),灵活配置 需要自己的服务器做中转,配置稍复杂,学习曲线较高 适合有自建服务器且需要稳定长期使用的用户 ngrok 即开即用,简单易用,支持 HTTP/HTTPS,适合快速测试 免费版有流量和连接数限制,使用官方中转服务器,隐私性较差 短期开发调试或临时外网访问 ZeroTier 创建虚拟局域网,无需中转服务器,安全性和隐私性较高 配置相对复杂,依赖 ZeroTier 服务,有时可能有网络延迟 远程管理多个内网设备或创建跨地域虚拟网络 花生壳 中文界面,使用简单,适合初学者 免费版限制较多(如流量和端口数),依赖外部服务器 初学者或对中文界面有需求的用户 路由器端口转发 简单高效,完全掌控,无需依赖外部服务,稳定可靠 需要手动配置路由器,防火墙设置可能导致访问问题 适合家庭和小型办公用户,特别是需要长期外网访问
2. 为什么选择路由器端口转发?

在众多内网穿透技术中,路由器端口转发因其简单高效完全掌控稳定可靠而备受青睐。你无需额外的服务器或服务,只需配置路由器,便能轻松实现外网访问。 image.png

3. 操作步骤
第一步:固定 IP 设置

首先,需要为树莓派分配一个固定 IP 地址。这一步非常重要,因为端口转发规则需要绑定具体的 IP 地址。如果树莓派的 IP 地址经常变化,端口转发规则将失效。

第二步:确认树莓派设备的 IP 地址

在局域网内找到你的树莓派设备,并确认它的 IP 地址。这可以通过访问路由器的 DHCP 客户端列表来完成。

第三步:配置端口转发

进入路由器的端口转发配置页面,添加新的转发规则。以下是具体步骤:

  1. 选择转发协议: 通常选择 TCP 或者 UDP,具体取决于你需要的服务类型。
  2. 外部端口: 输入从外网访问时使用的端口号。
  3. 内部 IP 地址: 填入树莓派的固定 IP 地址。
  4. 内部端口: 输入树莓派上实际运行服务的端口号,比如 80 端口用于 HTTP 服务。

小贴士: 确保路由器的防火墙设置允许你所配置的端口。否则,可能无法从外网成功访问树莓派。

第四步:保存和应用设置

在端口转发页面,点击添加按钮,将上述信息保存为一条新的转发规则。

确保所有设置无误,然后应用配置。

4. 尝试 22 端口是否实现内网穿透

我们使用笔记本命令行,使用外网 IP 地址,测试是否能通过 SSH 远程登录我们的树莓派服务器 image.png 成功了!🎉 🎉 🎉

5. 小结与后续内容

通过路由器的端口转发功能,你可以成功实现树莓派的内网穿透。这个方法简单易行,并且提供了稳定的远程访问体验,非常适合家庭和小型办公环境使用。

下一步: 在下一篇文章中,我们将讨论如何在配置好内网穿透后,在树莓派上部署一个安全的Web服务器,敬请期待!

不定期更新专业知识和有趣的东西,欢迎反馈、点赞、加星

您的鼓励和支持是我坚持创作的最大动力!ღ( ´・ᴗ・` )

参考

  1. FRP GitHub
  2. ngrok Documentation
  3. ZeroTier Documentation
  4. 花生壳
  5. How to Forward Ports on Your Router
  6. Raspberry Pi Documentation
  7. Port Forwarding and NAT Basics
### 树莓派内网穿透不依赖公网服务器的解决方案 在没有公网服务器的情况下,可以考虑使用 P2P(Peer-to-Peer)技术来实现树莓派内网穿透。以下是几种可行的技术方案: #### 1. **N2N (Not-to-Node)** N2N 是一种基于 P2P 的网络架构工具,允许设备之间建立直接连接而无需中间服务器的支持。其工作原理是通过超级节点(Supernode)协助设备之间的初始握手过程,之后数据传输可以直接在两个设备间完成。 安装 N2N 并配置树莓派的具体步骤如下: - 安装 N2N 工具包:`sudo apt-get install n2n-edge` - 配置并启动 Edge 节点和服务端 Supernode[^1]。 ```bash edge -d eth0 -a 192.168.1.100 -l supernode.example.com:7777 ``` 此方法的优点在于完全不需要额外的公网服务器支持,缺点则是需要至少一台稳定的机器作为 Supernode 来辅助初始化连接。 --- #### 2. **ZeroTier** ZeroTier 提供了一种虚拟局域网的功能,能够将多个位于不同物理位置的设备组合成一个逻辑上的私有网络。它的核心机制类似于 SD-WAN 技术,能够在互联网上创建专用的安全通信路径。 具体操作流程为: - 下载 ZeroTier One 应用程序至树莓派和其他目标设备; - 创建一个新的网络并通过管理界面分配 IP 地址范围给成员设备; - 将树莓派加入该网络后即可与其他成员互相访问资源[^3]。 相比传统方式,这种方式更加简便易行,但同样依赖于第三方提供的公共控制器服务来进行初次注册认证。 --- #### 3. **UPnP 或 NAT-PMP 协议利用路由器功能自动映射端口** 如果用户的家庭宽带路由器启用了 UPnP(Universal Plug and Play)或者 NAT-PMP(Network Address Translation Port Mapping Protocol),那么可以通过编程手段让应用程序请求开放特定端口号对外界可见。对于 Linux 系统来说,Python 和其他脚本语言都有相应的库可以帮助我们轻松达成这一目的。 下面是一个简单的 Python 示例代码展示如何启用外部可到达的服务监听器: ```python import miniupnpc def setup_port_forwarding(external_port, internal_ip, internal_port): upnp = miniupnpc.UPnP() upnp.discoverdelay = 200 upnp.discover() upnp.selectigd() addportmapping_result = upnp.addportmapping( external_port, 'TCP', internal_ip, internal_port, 'My Raspberry Pi Service', '' ) return addportmapping_result if __name__ == "__main__": success = setup_port_forwarding(8080, '192.168.x.y', 80) print("Port forwarding setup:", "Success" if success else "Failed") ``` 注意这种方法的成功率取决于ISP以及硬件本身是否真正支持上述协议,并且可能存在安全性隐患因此需谨慎对待[^2]。 --- #### 总结 以上三种途径都可以有效解决当缺乏独立公网IP地址时怎样使内部主机被外界所知悉的问题。其中前两者属于更现代化的选择,而后者的适用前提是环境满足一定条件前提下方能奏效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值