我打算向客戶發送「家庭服務器」類型的設備,與他們的(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