Nokon vil undersøkje kva klientane sender gjennom tunnelen, finn tilkoplingskroken i dokumentasjonen og byrjar å skrive eit skript som aldri vil få éin einaste pakke. Kroken er ekte og nyttig, men arbeidseininga er ein sesjon, ikkje ein byte. Å velje rett komponent er ein samanlikning mellom tre stader der arbeid kan skje, og det avgjerande spørsmålet er kva eining kvar av dei faktisk kan sjå.

Kva kroken får, og kva han aldri får

Ein client-connect-krok køyrer éin gong når ein autentisert klient etablerer ein sesjon, i prosesskonteksten til tenaren, med dokumenterte argument og miljøverdiar som det felles namnet og den tildelte adressa. Han kan skrive konfigurasjon per klient, ta ei tilgangsavgjerd, tildele ein ekstern ressurs eller registrere at tilkoplinga skjedde. Det han ikkje kan, er å observere trafikk, for når den første pakka kryssar tunnelen, har kroken alt returnert.

Dette er ikkje ei avgrensing ein skal arbeide seg rundt. Ein sesjonstilbakakalling som freista å handsame ein straum, måtte køyre i heile levetida til tilkoplinga, og skriptkontrakten til daemonen er ikkje bygd for den forma. Spør kva kroken er til før du bestemmer deg for at han står i vegen.

Gjenoppkoplingar tel òg. Ein klient som fell ut og koplar til på nytt, er ein ny sesjon, så alt kroken tildeler, må vere idempotent eller koplast til ei fråkoplinghending som ryddar opp. Tilstand som lek ved kvar gjenoppkopling, er den vanlege første feilen i eit krokbasert design.

Sesjonspolitikk høyrer heime i kroken

Tilgang er det naturlege arbeidet til kroken. Du veit kven som kopla til, kvarfrå og med kva sertifikat, og du kan avgjere om denne sesjonen skal halde fram eller avvisast. Den avgjerda er billeg, ho skjer éin gong, og ho krev ikkje at ein ser på ein einaste nyttelastbyte.

Konfigurasjonstildeling passar i same forma. Ein krok kan velje adressa til klienten, sende val som passar til den identiteten, eller skrive eit fragment som tenaren les for denne klienten. Fordi avgjerda er per sesjon, held ho seg forståeleg når noko går gale og nokon må forklare kvifor ein bestemt klient fekk ei bestemt adresse.

Registrering er den tredje passforma. Ei revisjonsoppføring som seier at ein sesjon vart tillaten, med identitet og tid, høyrer nøyaktig hit. Det er ikkje ein trafikklogg og bør ikkje late som det. Viss nokon seinare spør kva ein klient gjorde inne i tunnelen, må svaret kome frå ein annan stad.

Pakkearbeid høyrer heime på ein pakkeveg

Viss kravet er å sjå eller endre byte undervegs, må komponenten liggje på vidaresendingsvegen: ei brannmurregel med kø, ein krok for trafikkontroll eller ein vidaresendar i brukarrommet. Desse mekanismane ser pakker, og dei har sin eigen tilstand, sine eigne feilmodus og sin eigen ytingsprofil.

Å redigere nyttelasta på det laget er vanskelegare enn å lese ho. Ein endra byte kan gjere eit lengdefelt, ein sjekksum eller ein protokolltilstandsmaskin ugyldig, og ein tunnel på tredje lag vernar deg ikkje mot noko av dette. Det tyder berre at dei ytre hovuda ikkje er dei du redigerer. Set av tid til den reparasjonen før du lovar nokon ein innhaldsskriving.

Eit grensesnittopptak er det billegaste verktøyet i denne kategorien, og det er ein observasjon, ikkje ein editor. Folk blandar dei to fordi begge blir skildra som å sjå trafikk, men eit opptak lagar ei fil og ein pakkeveg lagar ei avgjerd.

Applikasjonsendringar høyrer heime i applikasjonen

Når målet er å endre kva ein førespurnad inneheld eller korleis eit svar blir forma, er rett stad tenesta sjølv eller ein proxy som med vilje avsluttar protokollen. Desse komponentane forstår alt førespurnader, svar og den autentiseringa applikasjonen ventar, og det er nettopp den konteksten eit pakkefilter manglar.

Adresseomsetjing ligg nedst på denne lista av ein grunn. Ho skriv om adresser og portar og lèt nyttelasta vere, så ho er ikkje eit innhaldsverktøy, same kor ofte ho dukkar opp i ei oppskrift som òg nemner innhald.

Å halde desse grensene fråskilde er det som gjer eit design forklarleg. Sesjonspolitikk i kroken, pakkehandsaming på ein pakkeveg og applikasjonsendring der protokollen med vilje blir avslutta: tre setningar som òg tener som sjekkliste for gjennomgang.

Der TLS framleis avsluttar samtalen

Éin ting overlever alt ovanfor: trafikk inne i tunnelen som ber HTTPS, held på si eiga transportkryptering. Å ha nøklane til VPN-en gir deg den indre IP-pakka og gir deg ikkje sesjonsnøklane til nettstaden i andre enden.

Difor kan ein krok ikkje inspisere innhald sjølv i prinsippet, og difor ser ein pakkeveg chiffertekst med mindre utrullinga med vilje avsluttar den indre TLS-en. skriptkontrakt skildrar kva kroken får; han seier ingenting om nyttelast fordi det ikkje er noko nyttelast å gje.

Relaterte artiklar