答案1
简单(且不安全)的方法
例如,我们假设以下情况:
您的可编程设备在端口上工作
22
并具有 IP192.168.1.5
您的公网 IP 是
122.176.11.55
然后,您可以进入路由器的设置并将 WAN 端口(例如8022
)转发到192.168.1.5:22
。
现在,您可以通过互联网从任何地方通过访问122.176.11.55:8022
而不是192.168.1.5:22
在 IDE 中远程访问该设备。
请记住,除非你有一个静态 IP,否则你的公共 IP 可能会随时更改,在这种情况下你应该检查动态 DNS 服务。
笔记:除非您的设备有某种身份验证方法,否则心怀恶意的人几乎肯定会在开放网络上找到访问它的途径。请参阅下文了解安全的替代方案。
安全(而且说实话也不太复杂)的方法
将 PC(或树莓派,或类似设备)连接到您的网络,并访问那远程控制,而不是通过 SSH 等安全方式,然后通过 LAN 对其进行编程。
即使您的设备不使用 TCP 或 UDP,这也具有额外的优势 :)
确实有点乏味。但很安全。
答案2
唯一正确答案可能是“VPN”。
简单地使用 IPv6 会“起作用”(假设路由器未配置为防火墙关闭设备,并且所有 ISP、设备和笔记本电脑都支持 IPv6),但出于与端口转发相同的原因,这是一个糟糕的想法。
除了众所周知的 IPv6 宣传之外,你实际上不需要曾经希望 LAN 上的任何设备都具有唯一可识别性,甚至可以通过互联网访问。不,那是不是一件好事。
端口转发可以“适用于”老式的 IPv4,但它会使设备不仅可供您访问,而且可供所有人访问。没有人知道,所以这没问题,对吧?
好吧,有一大批自动端口扫描器 24/7 全天候运行,扫描随机地址/端口,希望任何地方的任何内容都可能得到答复,所以通常任何一个设备能够在线响应外部请求并不是最佳选择。如果一个设备能够愉快地拥有自己的程序根据通过网络传入的信息,这是灾难的根源。
上述原则也适用于 VPN,但如果你想访问,它几乎是你所能得到的最好的东西。唯一真正安全的事情是完全没有互联网连接,出于显而易见的原因,这不是一个实用的选择。除了“没有互联网”之外最安全的事情是 VPN。只有一个设备上只有一个端口(嗯,这取决于情况,最多三个端口),暴露 VPN仅此而已,端口转发到互联网。
VPN 可让您(而非其他人)通过互联网访问 LAN 上的设备仿佛你们在同一个局域网上(尽管速度慢了一点)。它可以防止未经授权的访问,提供机密性和数据完整性。
几乎每个不差劲的路由器都支持至少一种开箱即用的 VPN。不幸的是,根据您使用的路由器型号,它可能是劣质的 VPN,或者可能没有很好地记录如何配置远程计算机。尽管搞清楚如何配置它可能很麻烦——如果您没有更好的选择,这是迄今为止最好的选择!
最常见的 NAS 盒支持两种或三种不差劲的 VPN 方法,每台 20 美元信用卡大小的 3 瓦计算机都可以运行 VPN 服务器,没有问题。甚至许多现代手机也支持 VPN,而无需安装额外的软件,因此您甚至可以在使用手机的移动互联网时访问家庭网络(甚至通过私人热点)。
例如,L2TP/IPSec 可能不是最好的选择,但它 99% 好用,在我的 Disk Station 和三星手机上设置只需一分钟。如果我的 Windows 笔记本电脑也要使用它(独立于手机),则需要一分钟。无需额外的软件。OpenVPN
需要 3-5 分钟的设置时间,因为您必须在笔记本电脑上下载安装客户端软件。但从更大的角度来看,与完全不安全相比,5 分钟的设置时间算作“零”。
答案3
在路由器/安全网关设备或具有端口转发功能的其他设备中托管 VPN。每当您想要远程工作时,连接到 VPN,您就会看到嵌入式设备,就像它在本地网络上一样。将嵌入式设备放置在隔离子网中可能是一个好主意,以便帮助如果 VPN 或嵌入式设备受到威胁,则防止对您的主网络的攻击。
答案4
我最近遇到了一个更好的个人远程访问解决方案。首先让我们讨论一下问题的范围。有三个问题需要考虑:nat、ip 地址和安全性。例如,在您希望在家庭网络上运行 ssh 或 web 服务器的常见情况下,传统方法是端口转发和动态 dns 以及行业标准的安全性最佳实践。这对您的情况不利,因为您的设备没有标准安全性。可以通过使用 ssh 端口转发而不是将您的设备打开到互联网来缓解这种情况,但您仍然必须处理 nat 遍历,因为您的设备(以及您即将设置的 raspberry pi 上的 ssh 服务器)没有可公开访问的 IP 地址,并且您的路由器的 IP 地址可能会发生变化(假设您和互联网之间只有一个 nat),您仍然需要设置端口转发(或者在多个路由器的情况下,多个端口转发)和动态 dns,以便您仍然可以访问您的 ssh 服务器。
但是还有一个更简单的解决方案,信不信由你,那就是 tor 隐藏服务。tor 隐藏服务基本上充当端口转发,但会自动处理 nat 遍历,并且没有更改地址,因此不需要动态 dns。当然,洋葱地址很难记住,但如果您是唯一的用户,您可以将其写在您的一个项目文件中。我建议仍然将其与 ssh 服务器配对以提供身份验证,但您可能会认为长洋葱地址就足够了。此外,tor 隐藏服务提供除最后一跳之外的整个链接的加密,因此唯一更好的方法是端到端加密,但这取决于您正在编程的设备。