每次我打开路由器端口时,我的家庭服务器都会暴露——NetBird 解决了这个问题
你可能不会过多考虑路由器上的端口实际上在做什么。如果你运行几个 Docker 服务,正常的流程可能是暴露所需的端口,收藏网址,然后继续进行其他操作。
在我看到服务器日志中有几次我没有发起的登录尝试的那天,我得到了一个现实的警示。为了远程访问的目的,我一直在将我的服务器公开在公共互联网上。这促使我开始寻找零信任网络访问解决方案,最终我发现了 NetBird。
我一直在努力让端口转发更安全
每一次修复只会让设置变得更难以接受
我采取了安全措施,比如使用强密码和避免默认端口。我还将服务放在 HTTPS 后面,感觉很安全。然而,我忽略了一个事实,即开放端口会将服务发布到互联网上。看到一些我没有发起的请求,以及来自随机 IP 地址尝试访问 SSH,只是时间问题;公共互联网暴露的情况太多了。
我并不是打算放弃端口转发,但希望至少能够强化它。我最初考虑的一个想法是反向代理。然而,即使在设置了反向代理并通过它路由我的服务后,端口 80 和 443 仍然是开放的。这有所改善,但问题尚未完全解决。
下一个想法是使用 VPN。如果我能启动 WireGuard,然后远程连接并像在家一样访问我所有的服务,那么问题就可以解决。这样,我就不需要公共仪表板,也不会有直接暴露的风险。然而,现实情况是,我需要管理密钥,在我的设备上配置客户端,如果连接不完全正确,还涉及一定程度的故障排除。这确实解决了问题,但只是并非一种无缝的方法。WireGuard 本身需要在路由器上开放一个 UDP 端口,通常是 51820。
此外,这两种方法只是要在同一个核心想法上叠加一个修补。它们仍然需要我考虑暴露了什么、我必须接触哪些服务以及如何接触它们。这些解决方案感觉更像是我在管理一个问题。
NetBird 通过消除对端口的需求解决了这个问题
无需触碰我的路由器即可访问服务器
NetBird 的解决方案感觉很流畅。第一步是在我的服务器上安装客户端并登录。之后,我又在笔记本电脑上安装了它。我不需要配置路由器或转发任何端口,也没有防火墙设置;但我几分钟内就能在仪表板上看到两台设备。
NetBird 给我的服务器分配了一个私有 IP,当我尝试从一个完全不同的网络连接它时,它居然可以正常工作。这个过程令人印象深刻,但也感觉有些奇怪。我一直认为远程访问必须涉及某种程度的路由器配置。
这个新设计很可靠。与其先公开我的服务器然后再进行保护,Netbird 首先创建一个私有网络。所以,我并不是在公共互联网上进行通信;我的笔记本电脑和服务器连接到只有它们参与的网络。NetBird 通过使用 WireGuard 建立加密的点对点连接来实现这一点。
连接保持安全,因为我在设备加入私人网络之前会添加并验证它们,并且没有经过验证的设备可以看到服务器。在无法进行直接连接的受限网络中,NetBird 默认通过隧道中继加密流量,而我的服务器在路由器上仍然不暴露任何内容。
我完全停止了暴露我的服务器
我的工作流程没有变糟
当我探索新设计时,我会为妥协做好心理准备,但这次我几乎没有放弃什么。实际上,情况是这样的变化:
方面 | 之前(端口转发) | 现在(NetBird) |
|---|---|---|
访问方法 | 公共 IP + 端口 | 私有网络IP |
|
暴露 | 面向互联网的服务 | 仅限 NetBird 设备 |
路由器设置 | 必填 | None |
维护 | 持续调整 | 几乎没有 |
我的笔记本电脑、手机以及在家庭网络外仍然可以访问服务器。唯一的不同是我通过私人网状网络运行。它消除了三样东西:
- 检查端口是否开放
- 在想我是否配置错了什么
- 担心可能正在袭击我的服务器的情况
只要你能接受在每台需要连接的设备上安装 NetBird 客户端这一小小的不便,这对于连接家庭服务器来说是一个远好的选择。只有在你必须与技术水平较低的人共享访问权限时,这才会成为一个问题。
端口转发不会消失
如果某个服务是面向公众的,那么端口转发仍然有意义。这可能是一个游戏服务器或网站。然而,就个人基础设施或仅你需要访问的东西而言,你不应该先将其发布到互联网上再尝试进行安全防护。这是人们通常采取的方法。NetBird 颠倒了这个顺序,先使其私密,然后在需要时可访问。它现在是我最喜欢在家庭服务器上安装的工具之一。







