我打算向客户发送“家庭服务器”类型的设备,与他们的(Android或iPhone)智能手机进行通信。问题在于,根据他们的互联网服务提供商,客户没有外部可达的IPv4地址(DS-lite隧道),因此智能手机不能仅使用IPv4 DNS记录来查找服务器。使家庭服务器可达(IPv4,IPv6,DS-Lite)
替代我能想到的:
让服务器使用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 ------>|
我不完全清楚你想要解决哪个问题。查找具有IPv6地址的设备的IPv6地址是DNS旨在执行的操作。为用户创建您自己的动态DNS服务并不难,尤其是如果要解决的设备正在运行您的代码,那就更是如此。获取可能只有IPv4连接到仅具有IPv6的服务器的客户端可能会非常棘手。为了回答以后,您需要提供更多关于您需求的信息。随时在聊天消息中通知我,因为它可能需要几次往返才能澄清。 – kasperd
谢谢,我更新了我的问题,希望能更好地解释它。这个问题还不清楚,因为我不知道我在寻找什么 - 我只知道我希望客户端能够与家庭服务器交谈,而不管家庭服务器是否位于防火墙/ NAT/DS lite之后隧道。 – knipknap
该图中的“Relay”是什么?这是一个现有的服务还是你想要实现的东西? – kasperd