Narazil jsem na jeden problém. Jak spolehlivě provozovat HTTPS na privátní IP adrese?
Situace: V síti některých poskytovatelů máme umístěný server, který posílá data uživatelům z dotyčné sítě, a tento server z důvodu omezení zátěže NATu vystupuje na privátní adrese (obvykle 10.x.y.z). Když detekuji, že uživatel přichází z dotyčné sítě, pošlu ho na privátní adresu serveru v té síti.
Zároveň chci použít HTTPS s důvěryhodným certifikátem. Přiřadil jsem tedy serveru doménové jméno z naší subdomény směřující na privátní adresu a získal důvěryhodný certifikát (přes DNS validaci).
Všechno to funguje. Až na to, že se ukázalo, že existuje jisté malé procento uživatelů, kteří mají doma router, který blokuje DNS překlad jmen na privátní adresy. Jedná se obvykle o zařízení s OpenWRT s dnsmasq, které má zapnutou volbu stop-dns-rebind. Tato volba blokuje překlady doménových jmen na privátní IP adresy, které přicházejí z upstream nameserverů (tedy nejsou lokálně nakonfigurované v dnsmasq). Pokud tedy popis volby správně chápu. Což je pro mé použití docela problém.
Smysl má být udajně ochrana před útokem DNS rebinding, ale blokuje to poněkud více věcí. Prý existuje RFC, které tvrdí, že takovéto směrování domén na privátní adresy se nemá dělat. Ale vždyť např. BIND má podporu split-horizon (split-view) DNS, který se používá částo právě pro přiřazování privátních IP adres, když přichází dotaz z privátní sítě.
Je to tedy pitomé chování toho routeru (dnsmasq), nebo by se taková věc opravdu neměla dělat? Jak mám tedy používat HTTPS na privátní IP adrese?
Na routeru lze obvykle nastavit výjimku pro určitou doménu, ale není to zrovna hromadné řešení problému.