Kontrola podpory IPv6 pro aplikace na Apple

Martin

Kontrola podpory IPv6 pro aplikace na Apple
« kdy: 18. 08. 2016, 22:17:21 »
     Nemá někdo zkušenosti se schvalovacím řízením, co Apple používá pro přidání aplikací do jejich App store? Od 1. června se vyžaduje podpora sítí vybavených jen adresami IPV6, bez použití IPV4, tj. aplikace musí fungovat v čistě IPV6 síti. https://developer.apple.com/news/?id=05042016a. U jednoho našeho zákazníka Apple odmítl tu jejich aplikaci. Ve zdůvodnění bylo, že pro DNS jméno aplikace neexistuje aaaa záznam. To odpovídá skutečnosti, protože IPV6 zatím neřešili. Hledal jsem popis, jak ta kontrola vypadá, ale nenašel jsem nějaký spolehlivý zdroj. Možná jen prověří, zda zadávané DNS jméno má aaaa záznam a zda na té IP adrese běží webová služba.

     Ta aplikace se hlásí na firemní server a uvádí detaily kolem zákaznických účtů, takže nikam jinam nepotřebuje. O požadavku Applu buď nevěděli nebo tomu nerozuměli, i když to  Apple oznámil asi před rokem. Teď to potřebují "rychle" zprovoznit. Nejsystematičtější řešení je samozřejmě přidat IPV6 na ten  webový server, kam se aplikace hlásí, tj.dual stack. Neví někdo, zda by nestačila jen nějaká webová služba typu "Potěmkin", tedy aby i nějaký jiný web vracel nějakou stránku, aby to vypadalo, jako že to IPV6 umí? Apple musí zkoušet hodně aplikací a když o nich nic neví, tak spolehlivě rozhodnout, zda s IPV6 funguje nebo ne, ani nejde. Na začátku je prakticky jen přihlašovací stránka.

    Zajímalo by mně, co třeba banky, hodně jich má aplikace pro mobily. Umí IPV6 vaše finanční instituce, kde pracujete? Mobily podporují i pojišťovny, nejenom banky, takže i v ČR bude celkem dost aplikací. Taky jste nic nevěděli nebo už IPV6 máte dávno?
« Poslední změna: 18. 08. 2016, 23:15:00 od Petr Krčmář »


Re:Kontrola podpory IPV6 pro aplikace na Applu
« Odpověď #1 kdy: 18. 08. 2016, 22:39:40 »
Není jednodušší, než vymýšlet nějakou potěmkinovskou aplikaci, prostě před tu webovou aplikaci dát proxy server, který bude naslouchat na IPv6?

Počítejte také s tím, že IPv6 by mělo být na zařízeních s dual stackem preferováno (i když realita je často jiná), takže pokud byste pro IPv6 vystavili falešný server, uživatelé s IPv6 by se k vám nemuseli dostat. A samozřejmě by ta aplikace nefungovala v IPv6-only sítích (kde paradoxně bude fungovat v současné době, když nemáte AAAA záznam, protože tam provozovatel sítě určitě má NAT64).

Martin

Re:Kontrola podpory IPV6 pro aplikace na Applu
« Odpověď #2 kdy: 18. 08. 2016, 23:03:25 »
Není jednodušší, než vymýšlet nějakou potěmkinovskou aplikaci, prostě před tu webovou aplikaci dát proxy server, který bude naslouchat na IPv6?


Bylo by to jednodušší. Ale IPV6 v tom datacentru není a místní ISP ho není schopen rychle dodat, má s tím problém. Ten proxy server by mohl být někde jindy a ukončoval by IPV6 a spojení na ten skutečný server by posílal přes IPV4. Spojení přes IPV6 by tak šlo jinou cestou než od klientů s IPV4, všechno kromě dual stacku / proxy serveru přímo v data centru je takové těžkopádné a nestandardní.

Sten

Re:Kontrola podpory IPv6 pro aplikace na Apple
« Odpověď #3 kdy: 19. 08. 2016, 08:25:05 »
Pochopil jste ten důvod zamítnutí správně? Máme několik serverů bez AAAA a Apple s tím nemá problém, protože pro ty testy používá DNS64+NAT64 (jak se mimochodem píše i v tom odkazovaném článku). Vaše aplikace si s tím ale musí umět poradit.

Brutus

Re:Kontrola podpory IPv6 pro aplikace na Apple
« Odpověď #4 kdy: 19. 08. 2016, 19:17:50 »
Doplnim, ze pre ciste IPv6 je potrebny nielen AAAA record ale aj to, aby samotny DNS server bezal na IPv6.Myslim, ze reverzny http proxy v kombinacii s IPv6 DNS by to "vyriesil". Co sa tyka DNS6 tak mi prvoplanovo napadol Google DNS alebo sluzby Amazon alebo DigitalOcean. Urcite su  aj ceske alternativy ale tu nemam prehlad.


Martin

Re:Kontrola podpory IPv6 pro aplikace na Apple
« Odpověď #5 kdy: 19. 08. 2016, 22:10:05 »
Pochopil jste ten důvod zamítnutí správně? Máme několik serverů bez AAAA a Apple s tím nemá problém, protože pro ty testy používá DNS64+NAT64 (jak se mimochodem píše i v tom odkazovaném článku). Vaše aplikace si s tím ale musí umět poradit.
V  mailu se zamítnutím byl odkaz na stránku http://cloudflare.ipv6-test.com/, že "no AAAA record" pro DNS jméno serveru, kam se aplikace hlásí. Popis od Applu jsem pochopil jak informaci, že někteří ISP používají DNS64 / NAT64, ne že to bude použito při testování. Když jsem se na teď díval znovu, tak podle https://forums.developer.apple.com/message/147579#147579 to vypadá opravdu tak, že stačí používat doporučované poslední funkce a pak aplikace dostane správnou IPV6 adresu i v síti s DNS64/NAT64, kde používají jiný prefix pro IPV4 adresy než pro to vyhrazený 64:ff9b::/96. Tedy aplikace se může hlásit na server s IPV4 a testovací síť Apple, pokud programátor použije doporučený postup, vrátí IPV6 a když se zahájí spojení na ni, tak to projde přes prvek s NAT64 v jejich testovací síti a mělo by to fungovat. Trochu je divné, že aplikaci odmítli s poukazem na neexistující aaaa záznam. Možná jsou v kódu staré funkce a se syntetizovanou adresou v IPV6 si neporadí. Apple to pak zdůvodní zavádějícím způsobem, že neexistuje aaaa záznam. Nebo to způsobil některý z kolegů, který někde v popisu od Applu kliknul na odkaz na ověření stavu IPV6 a ten obrázek vytvořil on, ne Apple. A pak to  poslal s požadavkem "nastavte to aaaa".

Kdy ty vaše testy probíhaly? Pokud po 1.6.2016, tak by to znamenalo, že by opravdu stačilo jen změnit kód programu, což by bylo jednodušší.

V každém případě i Apple doporučuje nativní podporu IPV6. Časem bude možná vynucovat funkčnost i bezDNS64/NAT64.

"App Review tests your app on an IPv6-only network that supports DNS64/NAT64."
"Some developers have attempted to synthesise an IPv6 address by combining an IPv4 address with the Well-Known Prefix (64:ff9b::/96).  This will not work in the general case.  For reliable results you must use getaddrinfo (or some higher-level API) to synthesise IPv6 addresses, as described in Use System APIs to Synthesize IPv6 Addresses."



Sten

Re:Kontrola podpory IPv6 pro aplikace na Apple
« Odpověď #6 kdy: 20. 08. 2016, 13:56:34 »
Kdy ty vaše testy probíhaly? Pokud po 1.6.2016, tak by to znamenalo, že by opravdu stačilo jen změnit kód programu, což by bylo jednodušší.

Probíhaly i po 1. 6.

V každém případě i Apple doporučuje nativní podporu IPV6. Časem bude možná vynucovat funkčnost i bezDNS64/NAT64.

"App Review tests your app on an IPv6-only network that supports DNS64/NAT64."
"Some developers have attempted to synthesise an IPv6 address by combining an IPv4 address with the Well-Known Prefix (64:ff9b::/96).  This will not work in the general case.  For reliable results you must use getaddrinfo (or some higher-level API) to synthesise IPv6 addresses, as described in Use System APIs to Synthesize IPv6 Addresses."


Tenhle odstavec se týká případů, kdy vývojář nepochopil, jak DNS64/NAT64 funguje, a místo toho generuje IPv6 adresy z A záznamů přímo v aplikaci, což často nefunguje, protože ne všechny implementace NAT64 používají well-known prefix (třeba Cisco NAT64 ho neumí použít). Apple (ve smyslu RFC) vyžaduje, že aplikace se má chovat tak, jako kdyby žádný DNS64/NAT64 nebyl, prostě se zeptá na adresu pomocí getaddrinfo a použije tu, kterou dostane (což může být AAAA syntentizovaný DNS64). Nic o tom, že by někdy měl vypínat DNS64/NAT64, nevím a dost o tom pochybuju, protože spousta webů, které často ani nejsou pod kontrolou vývojářů aplikací, přes IPv6 nefunguje.

Martin

Re:Kontrola podpory IPv6 pro aplikace na Apple
« Odpověď #7 kdy: 22. 10. 2016, 22:40:28 »
Nakonec se ukázalo, že aplikace používá nedoporučované funkce a nejde to jednoduše změnit, protože je to součást jakéhosi balíčku nebo něčeho, co jde změnit jen při větší změně aplikace. Proto požadovali AAAA DNS záznam, aby to prošlo u Applu. To jsme nastavili jako dočasné řešení, trvalé řešení je změna aplikace nebo získání spolehlivého spojení na IPV6. To už je na nich.