Administrátorská stránka odpovídá z telefonu na mobilních datech a z notebooku připojeného k VPN vyprší. Na tunelu není nic rozbitého, protože požadavek do něj nikdy nevstoupí. Název hostitele se překládá na veřejnou adresu brány a tato adresa je dostupná jen zvenčí tunelu, který ji ukončuje. Oprava znamená dát službě soukromý vstup, místo posouvat vnější koncový bod.

Stránka se načítá zvenčí, ne tunelem

Porovnávají se dva různé požadavky. Z mobilních dat se prohlížeč dostane přímo na veřejnou adresu. Zevnitř tunelu se stejný název překládá na stejnou veřejnou adresu a paket teď musí vyjít tunelem, aby dosáhl adresy na vlastní vzdálené straně tunelu. Stejný název, stejná adresa, dvě velmi odlišné pozice.

Trasa cíle vybírá adresu, ne port. Nic v routovací tabulce neví, že port 443 je pro správu a port 1194 je transport, takže se oba berou jako stejný cíl.

Proto stránka někdy funguje a někdy ne, podle toho, jaký název a jakou síť klient použil. Je to problém cesty, ne problém autentizace. Oba klienti se autentizují naprosto dobře.

Udržte vnější koncový bod dostupný

Profily plného tunelu potřebují výjimkovou trasu pro koncový bod VPN a volba redirect-gateway u OpenVPN dokumentuje přesně to: vzdálený koncový bod si drží trasu přes dříve existující bránu, aby tunel neroutoval do sebe. Odstraňte tuto výjimku a šifrovaný transport následuje tunel, což ukončí relaci ve smyčce. Právě kvůli této výjimce zůstává adresa koncového bodu dostupná zevnitř tunelu.

Důsledkem je, že veřejná adresa zůstává dostupná z klienta, a proto požadavek prohlížeče na tuto adresu může následovat stejnou výjimku a odejít, aniž by vstoupil do tunelu. Výjimka dělá svou práci a název působí škodu.

Před jakoukoli změnou čtěte rozhodnutí trasy, ne seznam rozhraní. Příkazy níže tisknou rozhodnutí, ne inventář. Spusťte je z klienta, který selhal.

ip -4 route get 203.0.113.77
ip -4 rule show
ip -4 route show table all

Pokud vyhledání ukáže trasu koncového bodu přes fyzickou bránu, chování je správné a administrátorská stránka se prostě posílá špatnou cestou. To je bod, kde se překlad názvů stává opravou.

Dejte službě soukromý název

Služba potřebuje název, který se uvnitř tunelu překládá na adresu brány, a přitom zachovává sémantiku certifikátu a názvu hostitele, kterou aplikace očekává. Soukromý záznam zóny pro administrátorský název je obvyklá odpověď a ponechává transportní název nedotčený.

Nepřesměrovávejte transportní název na vnitřní adresu, protože příští navázání tunelu by se pak pokusilo dosáhnout adresy, která existuje jen uvnitř tunelu. Tato chyba dává VPN, která funguje přesně jednou.

Zkontrolujte i obě rodiny adres, protože ponechaný záznam AAAA může prohlížeč poslat někam, kam soukromý plán nikdy nesahal.

dig +short admin.hq.internal
dig +short -t AAAA admin.hq.internal
curl -sS -o /dev/null -w '%{http_code} %{remote_ip}\n' https://admin.hq.internal/

Přizpůsobte politiku místu, kde proces běží

K nativnímu procesu naslouchajícímu na bráně se dostanete cestou lokálního vstupu, takže o přijetí požadavku rozhoduje vstupní řetěz a navázání soketu. Pravidla předávání a IP předávání nepřimějí lokálního posluchače odpovědět. Povolte zdroje tunelu ve vstupní politice a potvrďte, že proces je navázán na adresu, na kterou se tunel dostane.

Kontejner publikovaný na portu hostitele sleduje jinou cestu, protože paket se překládá podle cíle a předává. Tento požadavek narazí na politiku předávání hostitele a vlastní pravidla Dockeru, a proto může funkční nativní posluchač existovat vedle kontejneru, který stejný port odmítá.

Pořadí spouštění je důležité v obou případech, protože navázání na adresu, která se objeví až po zvednutí tunelu, při startu tiše selže.

Zkontrolujte soukromý přístup a odmítnutou veřejnou cestu

Vytvořte nový pojmenovaný požadavek z autorizovaného klienta se zachovanými kontrolami identity aplikace. Potom zkuste stejnou službu zvenčí tunelu a potvrďte, že neodpovídá. Soukromý název je pohodlí, ne omezení, a posluchač stále navázaný na veřejnou adresu je stále vystavený. Právě tuto poslední kontrolu většina recenzí vynechá.

Čtěte navázání a stav filtru, ne název hostitele, který uživatelé dostali. Expozice je vlastnost soketu, ne názvu. Tento rozdíl přežije každou změnu DNS.

ss -lntp | grep ':443'
nft list ruleset | grep -n 443
curl -sS -m 5 -o /dev/null -w '%{http_code}\n' https://203.0.113.77/

Když vnitřní požadavek vrátí stránku a vnější požadavek vyprší, služba má jednu záměrnou soukromou cestu a transport zůstává dostupný. Když vnější požadavek stále odpovídá, je třeba zúžit posluchače nebo publikovaný záznam kontejneru, než někdo službu popíše jako pouze vnitřní.

Související články