Miten SSH:n paikallinen edelleenohjaus kuljettaa TCP OpenVPN -istunnon
Yksi paikallinen portti, kaksi todennettua suhdetta, kolme kuljetusta. Mitä SSH-edelleenohjaus siirtää ja missä silmukka ja varmenteen tarkistukset yhä pätevät.
Tässä pinoutuu kolme kuljetusta, ja jokaisella on oma kehystyksensä. VPN:n hyötykuorma kulkee TLS-istunnon sisällä, tämä TLS-istunto kulkee TCP-yhteyden sisällä kohti loopback-porttia, ja tuon yhteyden tavut kulkevat SSH:n sisällä välityspalvelimelle, joka avaa varsinaisen TCP-yhteyden VPN:n kuuntelijaan. Mikään järjestelyssä ei muuta sitä, mitä OpenVPN todentaa, eikä mikään siinä tee UDP-kuuntelijaa tavoitettavaksi TCP:n kautta. Lue loput kuvauksena tavujen reitistä, ei reseptinä verkon valvonnan kiertämiseen.
Mitä paikallinen edelleenohjaus todella siirtää
SSH-asiakas kuuntelee paikallista porttia. Kun paikallinen prosessi yhdistää, asiakas paketoi tavut salattuun kanavaansa, ja palvelinpuoli avaa uuden TCP-yhteyden edelleenohjauspyynnössä nimettyyn kohteeseen.
Kohde ratkaistaan välityspalvelimella, ei koneellasi, minkä vuoksi nimi, joka on olemassa vain etäverkon sisällä, toimii yhä. Se tarkoittaa myös, että välityspalvelimen on päästävä VPN-kuuntelijaan ja sillä on oltava paluureitti sinne. Nimi, joka ratkeaa kannettavallasi, ei kerro mitään siitä, mitä välityspalvelin näkee.
SSH-istunnon aloittaminen todistaa vain, että välityspalvelin on tavoitettavissa ja todennettu. Se ei kerro, onko seuraava kuuntelija käynnissä, hyväksyykö välityspalvelimen ja kuuntelijan välinen palomuuri yhteyden vai hyväksyykö VPN profiilisi.
Suuntaa asiakas paikalliseen kuuntelijaan
Julistettu esimerkki: välityspalvelin pääsee TCP-kuuntelijaan osoitteessa gw.internal.example:443, ja korkea paikallinen portti paljastaa tuon reitin vain tälle koneelle.
ssh -N -L 127.0.0.1:24011:gw.internal.example:443 [email protected]OpenSSH-käsikirja kuvaa paikallisen edelleenohjauksen TCP-yhteyksien paikallisena vastaanottamisena ja seuraavan yhteyden avaamisena etäpuolelta. Sido kuuntelija loopbackiin eikä kaikkiin liitäntöihin, koska verkosta tavoitettavissa oleva edelleenohjaus on avoin välityspalvelin nimelläsi. Jokerimerkkisidonta paljastaa portin myös kaikille muille paikallisille tileille jaetulla koneella.
Aseta sitten VPN-asiakas TCP-tilaan ja suuntaa se osoitteeseen 127.0.0.1:24011. Jos profiili käyttää UDP:tä, tämä rakenne ei voi auttaa: edelleenohjaus kuljettaa tavuvirtaa, eikä sen läpi ole datagrammipolkua.
Pidä kaksi todennusta erillään
SSH todentaa välityspalvelimen. OpenVPN todentaa yhä VPN-vastapuolen, eikä loopback-kohde muuta tätä vaatimusta. Varmenteen tarkistusten poistaminen käytöstä siksi, että pistorasia osoittaa nyt localhostiin, on tämän rakenteen huonoin oikotie. Se muuttaa kuljetusjärjestelyn luottamusjärjestelyksi, eikä kukaan hyväksynyt jälkimmäistä.
Pidä profiilin luottamusankkuri, palvelinroolin tarkistus ja nimen vahvistus koskemattomina. Jos asiakkaasi vertaa palvelimen nimeä osoitteeseen, johon se soitti, loopback voi tarvita nimenomaisen nimiasetuksen poistetun tarkistuksen sijaan, ja profiilin dokumentaatio on paikka vahvistaa, mitä kenttää verrataan.
Käsittele välityspalvelinta luottamustarinan toisena osapuolena: sen ylläpitäjä näkee yhteyksien metatiedot ja voi ohjata edelleenohjauksen uudelleen, jos kokoonpanoa muutetaan. Järjestely tarvitsee sekä välityspalvelimen että VPN-palvelun omistajan hyväksynnän, ei vain sen, joka tarvitsee sitä tänään.
Älä rakenna silmukkaa tunnelin alle
Kun VPN asentaa reitit, sitä kuljettava SSH-yhteys tarvitsee yhä reitin välityspalvelimelle, joka ei kulje tunnelin kautta. Jos oletusreitti siirtyy VPN:lle ja välityspalvelin on tavoitettavissa vain saman tunnelin kautta, kuljetus romahtaa ja VPN menee mukana. Vika näyttää katkenneelta tunnelilta eikä reititysvirheeltä, minkä vuoksi se diagnosoidaan väärin.
Tavallinen korjaus on isäntäreitti välityspalvelimen osoitteeseen kiinnitettynä fyysiseen liitäntään ennen tunnelin nousua, sekä tarkistus, että reitti kestää uudelleenyhdistämisen. Vahvista se reittihaussa välityspalvelimen osoitteelle sen sijaan, että olettaisit järjestyksen olleen oikea.
Odota myös, että tämä pino on hitaampi ja hauraampi kuin suora yhteys, koska nyt on kaksi järjestettyä kuljetusta ja vielä yksi päätepiste ylläpidettäväksi. Se on tapa ylittää verkkoraja, ei suorituskykytekniikka.
Sulje kuuntelija, kun olet valmis
Pysäytä SSH-istunto, kun tunnelia ei enää tarvita, ja vahvista, että paikallinen portti on vapautettu. Unohdettu edelleenohjaus pitää todennetun reitin avoinna koneella, joka voi olla jaettu.
Käy läpi myös välityspalvelimen sallitut edelleenohjauskohteet, koska salliva kokoonpano tekee mistä tahansa vaarantuneesta tilistä yleisen kääntöpisteen. Kirjaa portti, välityspalvelin ja kohde yhteen, jotta seuraava henkilö tietää, mihin edelleenohjaus oli tarkoitettu ja onko se yhä hyväksytty.