DNS koncového bodu AWS Client VPN: prečo zafixovanie preloženej IP nefunguje
Nahraďte názov koncového bodu AWS Client VPN adresou, ktorú ste preložili, a tunel neskôr prestane fungovať. Zachovajte exportovaný názov a jeho náhodný prefix.
Minulý týždeň vám dig +short dalo jednu adresu pre názov koncového bodu vo vašom profile AWS Client VPN a tunel sa pripojil. Tento týždeň ten istý profil na vašom notebooku zostáva na 'Connecting', zatiaľ čo nedotknutá kópia kolegu stále funguje. Nič nebolo zablokované a certifikát nevypršal. Niekto nahradil názov hostiteľa koncového bodu tou preloženou adresou a služba tam už neodpovedá. Exportovaný názov je časť navrhnutá tak, aby túto zmenu prežila.
Názov vo vašom profile nemusí byť názov, na ktorý sa dopytuje
Profily exportované z Client VPN často obsahujú remote-random-hostname. Keď je táto voľba zapnutá, klient vytvorí jednorazovú značku, spojí ju s názvom koncového bodu bodkou a preloží zložený názov. Divoký záznam v zóne koncového bodu odpovedá na akúkoľvek značku, preto vymyslený prefix stále funguje a preto ten trik zostáva neviditeľný, keď sa dotaz pokúsite zopakovať ručne.
Keď teda vložíte názov koncového bodu do terminálu a dostanete odpoveď, preložili ste iný názov, než ktorý klient používa pri pripojení. Tento nesúlad nie je chyba, ktorú by ste mali v profile opravovať. Značka sa znova generuje zámerne: voľba bráni tomu, aby keše držali zastaranú odpoveď, a nikdy neidentifikuje váš stroj ani reláciu.
Narazil som na prípad kompatibility, keď klient voľbu úplne ignoruje. AWS dokumentuje obchádzku: ponechajte skutočný názov koncového bodu a pred neho pridajte náhodný reťazec a bodku, berte to ako vzor pomenovania, nie ako hodnotu na vloženie. Použiť to na starom klientovi je rozumné; natvrdo zakódovať reťazec s prefixom ako koncový bod nie je.
Prečo uložená odpoveď nemôže zostať správna
Adresy koncového bodu Client VPN spravuje AWS a časom sa menia, čo dokumentácia osvedčených postupov hovorí priamo. Zachytená odpoveď je snímka jedného prekladu. Profil, ktorý ju natvrdo zakóduje, sa stane profilom namiereným na vyradený hostiteľ, len čo sa služba presunie, a zlyhanie málokedy vyzerá ako DNS: dostanete časový limit pripojenia alebo zaseknutý handshake, takže ľudia naháňajú smerovanie a certifikáty.
Rovnaká odpoveď v /etc/hosts dedí rovnakú expiráciu s ďalším problémom. Záznam hosts prežije reštarty, nové exporty aj opravy 'preinštalujte klienta', takže zlyhanie sa vracia zakaždým, keď sa adresa presunie. Videl som jeden, ako týždne ležal neškodne, a potom vyradil každý stroj, ktorý ho nosil, zatiaľ čo čerstvé inštalácie sa pripájali normálne. Toto rozdelenie, jedna skupina zlyháva a druhá je v poriadku na tom istom účte, je najlacnejšia stopa, ktorú dostanete.
Rozsah randomizácie vymedzte správne. Deje sa pri každom pokuse o pripojenie. Nadviazaný tunel znova neprekladá svoj koncový bod, nemení servery uprostred relácie a jednotlivé požiadavky aplikácií si nevyberajú každý nového hostiteľa VPN. Znova prekladá až ďalší pokus, preto relácia, ktorá funguje celé popoludnie, nič nehovorí o zajtrajšom ráne.
Čo služba kontroluje pri nadvihnutí tunela
Client VPN vyžaduje, aby adresa, ku ktorej ste pripojení, zodpovedala adrese preloženej pre DNS názov koncového bodu. Táto jediná požiadavka vysvetľuje niekoľko zlyhaní, ktoré vyzerajú nesúvisle: vlastný DNS záznam ukazujúci inam, vlastný frontend presmerúvajúci na skutočnú adresu koncového bodu a profil prepísaný na surovú adresu. AWS dokumentuje kombináciu vlastného záznamu a presmerovania ako zlyhanie s novšími klientmi od AWS. Kontrola je úzka; nie je to rozsudok, že každý alias je zakázaný.
Nie je to ani všeobecné pravidlo o VPN protokoloch. Číselný remote je úplne platný v bežnom nasadení OpenVPN a mnohé tak fungujú. Obmedzenie prichádza zo spravovaného usporiadania, nie z protokolu pod ním.
Preto je uvoľnenie overovania certifikátov nesprávny reflex. Ak profil po zámene adresy zlyhá, vypnutie overovania servera presúva chybu namiesto opravy prekladu alebo požiadavky na zhodu adresy a zanechá klienta, ktorý bude veriť čomukoľvek. Ponechajte exportovanú CA, overovanie servera a nastavenia vzájomného overovania presne také, aké prišli.
Povolené zoznamy, výstup a súkromné DNS sú tri oddelené problémy
Pravidlo firewallu, ktoré musí povoliť cieľ pred pripojením notebooku, sa týka vonkajšieho naslúchajúceho rozhrania. Dajte vlastníkovi siete názov koncového bodu, transport a nakonfigurovaný port, potom sa opýtajte, či ich kontrola dokáže sledovať DNS správanie služby. Pravidlo držiace jednu zachytenú adresu je snímka s nepopísanou expiráciou. Ak kontrola prijíma len nemenné ciele, vyriešte tento rozdiel pred zavedením, namiesto toho, aby ste potichu zakódovali odpoveď.
Partner, ktorý potrebuje pevnú zdrojovú adresu pre požiadavky po nadvihnutí tunela, má inú požiadavku: výstup. Čo web vidí, závisí od trasy aplikácie a politiky rozdeleného tunela, nie od adresy, ku ktorej sa klient pripojil. Prevádzka v rozdelenom tuneli sa AWS nemusí vôbec dotknúť.
Súkromné DNS vnútri tunela je tretia vrstva. Prekladač daný klientom odpovedá na interné názvy po pripojení; verejný koncový bod nemôže preložiť pred vznikom tunela. Zlyhanie prekladu koncového bodu a zlyhanie prekladu internej aplikácie nastávajú v rôznych fázach a ich miešanie vás pošle do nesprávneho logu.
Adresná rodina patrí do toho istého zoznamu. Odpoveď IPv4 nehovorí nič o povolenej ceste koncového bodu IPv6 alebo s dvojím zásobníkom, takže snímka urobená v jednej rodine nie je dôkazom pre druhú.
Skontrolujte spojenie bez toho, aby ste čokoľvek fixovali
Začnite profilom tak, ako bol exportovaný, a prečítajte si, čo skutočne žiada:
grep -nE '^remote|remote-random-hostname' profile.ovpn
dig +short cvpn-endpoint-ID.prod.clientvpn.REGION.amazonaws.com
ss -tnp | grep -E ':(443|1194)'Potom porovnajte tri veci: názov koncového bodu, ktorý profil drží, adresu, ktorú klient hlási pre nový pokus, a na čo sa názov prekladá teraz. Názov, ktorý sa preloží, dokazuje len to, že záznam odpovedá; transport a overenie sú oddelené a koncový bod nemusí odpovedať na ping. Vlastný log klienta je jediným zdrojom pre prostrednú položku, takže ho zachyťte počas pokusu, nie po ňom.
| What you see | Usual cause | Next check |
|---|---|---|
| One machine fails, others connect | Pinned address or stale hosts entry on that machine | Diff its profile and hosts file against a working copy |
| Everyone fails at once, no config change | The endpoint address rotated | Confirm the current endpoint configuration with the account owner |
| Tunnel up, internal names fail | Client DNS policy, not endpoint resolution | Inspect the resolver pushed after connection |
Adresa, ktorá dnes odpovedá, je dôkazom o dnešku; názov je to, čo služba udržiava platné. Zaznamenajte pozorovanie, pošlite ho tomu, kto koncový bod vlastní, a nechajte profil ukazovať na názov.
Dva návyky, ktorých sa zbaviť: vypínanie kontrol certifikátov, aby ste prešli zaseknutý handshake, a vrstvenie značiek pred názvom koncového bodu v nádeji, že jedna chytí. Značka sa preloží cez divoký záznam, alebo je problém inde. Ak správne nakonfigurovaný profil stále zlyháva, pošlite presný dotaz a udalosť pripojenia, nie dlhší názov hostiteľa.
Než to uzavriete: profil stále nesie exportovaný názov koncového bodu, žiadny súbor hosts adresu nefixuje, remote v logu klienta zodpovedá aktuálnemu prekladu a pravidlo firewallu pomenúva koncový bod, nie adresu. To je aj stav, ktorý odovzdáte ďalšiemu človeku.