我最近购买了一个 Raspberry Pi,我正在对其进行各种设置。我有一个本地路由器,Raspberry Pi 与我的台式计算机一起连接到该路由器。我希望能够从本地网络外部访问 Pi。我可以访问我的个人路由器,所以一切都在我的网络中运行,但我的路由器插入到一个更大的网络中,该网络由于明显的安全原因而被锁定,所以我无法直接访问我的路由器/Pi。
我通过 Namecheap 有一个域,允许我使用动态 DNS,并且我使用该 DDNS 与我的 Pi 一起使用inadyn
(在子域上设置)。我还有一个运行 Ubuntu Server 14.10 的 VPS,它使用该域。
通过互联网连接到我的 Pi 的最佳方式是什么?我想要访问所有端口以及像平常一样的东西。我开始在 VPS 上配置 OpenVPN,但我在这里停下来问这个问题。有没有办法通过我的 VPS 的子域建立 Pi 的连接并使用该子域访问 Pi(再次允许访问我的端口,例如 pi.website.com:22 用于 SSH 或其他),或者是否有不同的方法/更好的方法来做到这一点?
答案1
你需要设置远程端口转发从服务器到 Raspberry Pi。下面只是对其含义的简要解释。1
远程端口转发
现在是本教程的第二部分,即远程端口转发。最好再用一个例子来解释这一点。假设您正在本地计算机上开发 Rails 应用程序,并且想将其展示给朋友。不幸的是,您的 ISP 没有为您提供公共 IP 地址,因此无法通过互联网直接连接到您的计算机。
有时,可以通过在路由器上配置 NAT(网络地址转换)来解决此问题,但这并不总是有效,并且需要您更改路由器上的配置,而这并不总是可取的。当您没有网络管理员访问权限时,此解决方案也不起作用。
要解决此问题,您需要拥有另一台可以公开访问并且可以通过 SSH 访问的计算机。它可以是互联网上的任何服务器,只要您可以连接到它即可。我们将告诉 SSH 创建一个隧道,在服务器上打开一个新端口,并将其连接到您计算机上的本地端口。
你也可以看看MOSH,2它的设计目的是为了克服在移动网络上连接设备的困难,因为移动网络上的 IP 经常发生变化,并且设备本身没有公共地址。我个人没有任何使用它的经验。
假设您现在可以将流量从服务器上的特定端口转发到 Raspberry Pi 盒子,那么您可以配置一个子域以将流量重定向到正在转发的端口。例如,如果您将端口 8888 上的服务器流量转发到 Raspberry Pi,则可以进行如下设置。3
NameVirtualHost *:80
<VirtualHost *>
ServerAdmin [email protected]
ServerName dev.mydomain.com
ProxyPreserveHost On
# setup the proxy
<Proxy *>
Order allow,deny
Allow from all
</Proxy>
ProxyPass / http://localhost:8888/
ProxyPassReverse / http://localhost:8888/
</VirtualHost>
通常,您可以设置一条 A 记录,将该子域指向您的 Raspberry Pi 的 IP,但是因为这不允许您远程 ssh,所以我认为上面的示例是您最好的选择。