我计划向客户提供一种“家庭服务器”类型的设备,该设备与他们的(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 ------>|