5

我计划向客户提供一种“家庭服务器”类型的设备,该设备与他们的(Android 或 iPhone)智能手机进行通信。问题在于,根据他们的互联网服务提供商,客户没有外部可访问的 IPv4 地址(DS-lite 隧道),因此智能手机不能只使用 IPv4 DNS 记录来查找服务器。

我能想到的替代方案:

  • 使服务器使用 IPv6 DynDNS 服务,并在智能手机上使 IPv6 优先于 IPv4。由于该解决方案应该可以在客户无需注册 DynDNS 服务的情况下工作,因此我没有找到任何允许我这样做的服务。

  • 设置我自己的“目录服务器”,这样主服务器会定期注册它的序列号 - 与 DynDNS 类似,但通过 HTTPS 在应用层上。然后,客户端只需将序列号输入应用程序即可找到服务器。由于身份验证/加密要求,这个解决方案比我喜欢的更难实现。

关于如何使家庭服务器可访问的任何其他想法?我真的很想避免运行我自己的“云服务”。也许是某种类型的对等网络发现?

[更新:]这就是我本质上要寻找的:

Home server                            Relay         DynDNS        Client
|                                      |             |             |
|-------- open tunnel to port 80 ----->|             |             |
|<-success, listening on 192.0.2.1:80 -|             |             |
|                                      |             |             |
|----- Register "my.ddns.net" ---------------------->|             |
|<------------ "my.ddns.net" is now 192.0.2.1 -------|             |
|                                      |             |             |
|                                      |<- GET http://my.ddns.net -|
|<------- GET http://my.ddns.net   ----|             |             |
|--- HTTP response ------------------->|             |             |
|                                      |----- HTTP response ------>|
4

2 回答 2

2

从互联网连接到家中的服务器很困难。IPv6 尚未在任何地方都可用,并且使用 IPv4,您并不总是有可用的公共地址(具有多个 NAT 层或 DS-Lite)。

今天唯一可靠的解决方案是拥有一个可公开访问的服务器作为集合点,并让 home box 维护该服务器的永久集合。移动设备(也可能在 NAT 之后)然后可以通过服务器到达 home box 或设置 STUN/TURN 样式的连接。

于 2015-06-21T16:35:33.260 回答
1

多亏了其他响应,我才有了找到一些现有解决方案的起点:ngroklocaltunnel通过将专用子域映射到每个主服务器并根据 HTTP(S) GET 请求分派请求来解决问题。

后者是一个开源项目,服务器javascript 客户端都在 Github 上。

于 2015-06-22T11:55:25.127 回答