与家庭服务器的远程通信


8

我制作了家用微型服务器(基于Raspberry Pi)。它具有互联网,并且可以24/7全天候工作。该服务器进行一些家庭自动化,监视和控制。它没有静态的公共IP地址(通过DHCP分配)。

我需要一种与服务器进行远程通信的方法:我想向服务器发送简短的命令,有时会得到答复。

最好的方法是什么?我知道几种方法:

  1. 电邮。我可以为服务器注册具有pop3 / smtp访问权限的电子邮件地址,并将其用于通讯。但是有一个问题:它不是即时的,因此很难进行即时交易,向我发送重要报告等。

  2. 短信。我可以将旧的GSM电话或GSM模块连接到服务器,并使用SMS进行通信。它是即时的,似乎还可以,但是我从未使用过GSM,也不知道所有可能的问题。

请给我一个建议。如果您已经为自己的服务器解决了问题,请向我解释其通信方式。


电子邮件,IM,Twitter,facebook,Telnet,SSH,HTTP,LAMP服务器(Linux,Apache,MySQL,PHP或Perl)几乎都是瞬时的。电子邮件通常是同一分钟,尤其是如果您使用同一家电子邮件公司(例如说gmail进行发送和接收)时。但这不是电子问题。请参阅超级用户或Raspberry PI Stack交换。
cde 2013年

7
您可以订阅动态DNS服务(有很多,有些是免费的)-您在服务器上运行一个应用程序,当路由器的外部IP地址更改时,该应用程序会更新DNS服务。这样,您始终可以使用固定名称(例如RossPi.dynamicdns.example.com)联系内部Raspberry pi。您还需要在路由器上设置端口转发(或等效端口),以允许将传入连接路由到树莓派。然后你可以使用Web(HTTP)或TCP套接字等等等等
RedGrittyBrick

Answers:


3

在ANY动态DNS服务器网站上创建一个帐户。 为了简单起见,我以dnsdynamic.com为例

在Raspberry Pi上打开终端并安装更新服务:

sudo apt-get install ddclient

您可以在向导过程中输入设置,也可以按Enter。我们将以任何方式编辑配置文件。

编辑配置文件/etc/ddclient.conf,并将其替换为:

#
# Configuration file for ddclient generated by debconf
#
# /etc/ddclient.conf
daemon=60                          # check every 60 seconds
syslog=yes                         # log update msgs to syslog
mail=root                          # mail all msgs to root
mail-failure=root                  # mail failed update msgs to root
pid=/var/run/ddclient.pid          # record PID in file.
ssl=yes                            # use ssl-support.
use=web, web=myip.dnsdynamic.com   # get ip from server.
server=www.dnsdynamic.org          # default server
login=[LOGIN]                      # your login
password=[PASSWORD]                # your password
server=www.dnsdynamic.org,         \
protocol=dyndns2                   \
[DOMAIN]

将以下[登录],[密码]和[域名]替换为您使用的设置。

保存对配置文件所做的更改,然后重新启动Raspberry Pi。

请记住,将路由器配置为将必要的端口转发到Raspberry Pi。

  1. 21-FTP
  2. 80-Web服务器
  3. 443-SSL


OP并没有询问如何通过wan传递树莓派。该答案着重于通过WAN进行通信。OP只是想与他的树莓派进行远程通信(它可以在同一网络中,但在物理上是远程的)。
Chetan Bhargava 2014年

是的 我明白你的意思了。但是可以肯定的是(在搜索网络之后)第一个答案使他意识到,如果在网络内部,他可以使用SSH。因此,我的假设是他需要将其放置在远程位置(因为他规定将其连接到24/7互联网)并“远程”而不是“本地”局域网进行通信。不幸的是,OP没有反馈,因此不清楚。
Piotr Kula 2014年

0

另一个选择是将您的前端托管在Internet网络服务器(和/或移动设备上的应用程序)上,并使用消息队列在它们之间进行通信。

消息队列允许前端和后端之间的冗余和抽象

MQTT是为任务而设计的,是免费的

https://zh.wikipedia.org/wiki/MQ_Telemetry_Transport

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.