Eelmisel nädalal andis dig +short teile ühe aadressi AWS Client VPN-i profiili lõpp-punkti nime jaoks ja tunnel ühendus. Sel nädalal seisab sama profiil teie sülearvutis olekus 'Connecting', samal ajal kui kolleegi puutumatu koopia töötab endiselt. Midagi ei blokeeritud ja sertifikaat ei aegunud. Keegi asendas lõpp-punkti hostinime selle lahendatud aadressiga ja teenus ei vasta seal enam. Eksporditud nimi on osa, mis on ehitatud seda muudatust üle elama.

Teie profiilis olev nimi ei pruugi olla küsitav nimi

Client VPN-ist eksporditud profiilid sisaldavad tavaliselt remote-random-hostname. Selle valikuga ehitab klient ühekordse sildi, ühendab selle punktiga lõpp-punkti nimega ja lahendab kombineeritud nime. Lõpp-punkti tsooni metamärgiga kirje vastab igale sildile, seepärast lahendub ka väljamõeldud prefiks ja seepärast jääb see trikk nähtamatuks, kui proovite päringut käsitsi korrata.

Kui kleebite lõpp-punkti nime terminali ja saate vastuse, olete lahendanud teise nime kui see, mida klient ühendamise ajal kasutab. See lahknevus ei ole viga, mida profiilis parandada. Silt luuakse meelega uuesti: valik hoiab ära, et vahemälud hoiaksid vananenud vastust, ja see ei identifitseeri kunagi teie masinat ega sessiooni.

Olen kokku puutunud ühilduvusjuhtumiga, kus klient eirab valikut täielikult. AWS dokumenteerib möödasõidu: hoidke tegelik lõpp-punkti nimi ja lisage ette juhuslik string pluss punkt, käsitledes seda nimetamismustrina, mitte kleepimiseks mõeldud väärtusena. Selle rakendamine vanale kliendile on mõistlik; prefiksiga stringi lõpp-punktina kõvasti kodeerimine ei ole.

Miks salvestatud vastus ei saa õigeks jääda

Client VPN-i lõpp-punkti aadresse haldab AWS ja need muutuvad aja jooksul, mida parimate tavade dokumentatsioon ütleb otse. Jäädvustatud vastus on ühe lahenduse hetktõmmis. Profiil, mis selle kõvasti kodeerib, muutub kasutusest kõrvaldatud hostile suunatud profiiliks niipea, kui teenus liigub, ja rike näeb harva välja nagu DNS: saate ühenduse ajalõpu või takerdunud handshake'i, nii et inimesed ajavad taga marsruutimist ja sertifikaate.

Sama vastus failis /etc/hosts pärib sama aegumise, millele lisandub lisaülesanne. Hosts-kirje elab üle taaskäivitused, uued ekspordid ja 'installi klient uuesti' parandused, nii et rike naaseb iga kord, kui aadress liigub. Olen näinud ühte nädalaid kahjutult seismas ja siis lülitada välja iga masina, mis seda kandis, samal ajal kui värsked paigaldused ühendusid normaalselt. See lõhenemine, üks rühm ebaõnnestub ja teine on samas kontos korras, on odavaim vihje, mille saate.

Piiritle juhuslikustamine õigesti. See toimub iga ühenduskatse kohta. Loodud tunnel ei lahenda oma lõpp-punkti uuesti, ei vaheta servereid sessiooni keskel ja üksikud rakendusepäringud ei vali igaüks uut VPN-host. Uuesti lahendab ainult järgmine katse, seepärast ei ütle terve pärastlõuna töötav sessioon hommiku kohta midagi.

Mida teenus tunneli tõustes kontrollib

Client VPN nõuab, et aadress, millega olete ühendatud, vastaks lõpp-punkti DNS-nime jaoks lahendatud aadressile. See üks nõue seletab mitut seosetuna näivat riket: kohandatud DNS-kirje, mis osutab mujale, kohandatud frontend, mis suunab edasi tegelikule lõpp-punkti aadressile, ja profiil, mis on ümber kirjutatud toorele aadressile. AWS dokumenteerib kohandatud kirje ja edasisuunamise kombinatsiooni rikkena uuemate AWS-i klientidega. Kontroll on kitsas; see ei ole otsus, et iga alias on keelatud.

See ei ole ka üldreegel VPN-protokollide kohta. Numbriline remote on täiesti kehtiv tavalises OpenVPN-i juurutuses ja paljud töötavad nii. Piirang tuleb hallatavast korraldusest, mitte selle all olevast protokollist.

Mis teeb sertifikaadi kontrolli lõdvendamise valeks refleksiks. Kui profiil pärast aadressi vahetust ebaõnnestub, liigutab serveri kontrolli väljalülitamine vea teise kohta, selle asemel et parandada lahendust või aadressi vastavuse nõuet, ja jätab kliendi, mis usaldab ükskõik mida. Hoidke eksporditud CA, serveri kontroll ja vastastikuse autentimise seaded täpselt sellistena, nagu need tulid.

Lubatud loendid, väljund ja privaatne DNS on kolm eraldi probleemi

Tulemüürireegel, mis peab lubama sihtkoha enne sülearvuti ühendumist, puudutab välist kuulajat. Andke võrgu omanikule lõpp-punkti nimi, transport ja konfigureeritud port, seejärel küsige, kas nende kontroll suudab teenuse DNS-käitumist järgida. Üht jäädvustatud aadressi hoidlev reegel on hetktõmmis kirjutamata aegumisega. Kui kontroll aktsepteerib ainult muutumatuid sihtkohti, lahendage see lünk enne kasutuselevõttu, mitte kodeerige vaikselt vastust.

Partner, kes vajab pärast tunneli üles tõusmist tehtavate päringute jaoks fikseeritud lähteaadressi, on teise nõudega: väljund. Mida veebisait näeb, sõltub rakenduse marsruudist ja jagatud tunneli poliitikast, mitte aadressist, millega klient ühendus. Jagatud tunneli liiklus ei pruugi AWS-i üldse puutuda.

Privaatne DNS tunneli sees on kolmas kiht. Klientidele antud lahendaja vastab pärast ühendust sisemistele nimedele; see ei saa avalikku lõpp-punkti lahendada enne, kui tunnel on olemas. Lõpp-punkti lahendamise rike ja sisemise rakenduse lahendamise rike juhtuvad eri etappides ning nende segamine saadab teid valesse logisse.

Aadressipere kuulub samasse nimekirja. IPv4 vastus ei ütle midagi IPv6 või kahekordse virna lõpp-punkti lubatud tee kohta, seega ühes peres tehtud hetktõmmis ei ole tõend teise kohta.

Kontrollige ühendust ilma midagi kinnistamata

Alustage profiilist nii, nagu see eksporditi, ja lugege, mida see tegelikult küsib:

grep -nE '^remote|remote-random-hostname' profile.ovpn
dig +short cvpn-endpoint-ID.prod.clientvpn.REGION.amazonaws.com
ss -tnp | grep -E ':(443|1194)'

Seejärel võrrelge kolme asja: profiilis olevat lõpp-punkti nime, aadressi, mille klient värske katse jaoks teatab, ja seda, milleks nimi praegu lahendub. Lahenduv nimi tõestab ainult, et kirje vastab; transport ja autentimine on eraldi ning lõpp-punkt ei pea pingile vastama. Kliendi enda logi on ainus allikas keskmise üksuse jaoks, seega jäädvustage see katse ajal, mitte pärast.

What you seeUsual causeNext check
One machine fails, others connectPinned address or stale hosts entry on that machineDiff its profile and hosts file against a working copy
Everyone fails at once, no config changeThe endpoint address rotatedConfirm the current endpoint configuration with the account owner
Tunnel up, internal names failClient DNS policy, not endpoint resolutionInspect the resolver pushed after connection

Täna vastav aadress on tõend tänase kohta; nimi on see, mida teenus kehtivana hoiab. Kirjutage tähelepanek üles, saatke see lõpp-punkti omanikule ja jätke profiil nimele osutama.

Kaks harjumust, millest loobuda: sertifikaadikontrollide väljalülitamine takerdunud handshake'ist möödumiseks ja siltide kuhjamine lõpp-punkti nime ette lootuses, et üks püsib. Silt lahendub metamärgikirje kaudu või on probleem mujal. Kui õigesti konfigureeritud profiil ikkagi ebaõnnestub, saatke täpne päring ja ühendussündmus, mitte pikem hostinimi.

Enne sulgemist: profiil kannab endiselt eksporditud lõpp-punkti nime, ükski hosts-fail ei kinnista aadressi, kliendilogi remote vastab praegusele lahendusele ja tulemüürireegel nimetab lõpp-punkti, mitte aadressi. See on ka olek, mille edastate järgmisele inimesele.

Seotud artiklid