Tämä ohje antaa välityspalvelimen tuntevalle sovellukselle pääsyn olemassa olevaan WireGuard-polkuun julkaisematta välityspalvelimen porttia VPN-palvelimella tai internetissä. SOCKS-taustaohjelma tarjoaa sovelluksen rajapinnan, WireGuard tarjoaa jo hyväksytyn IP-polun, eikä kumpikaan todenna käyttäjää puolestasi. Jokainen alla oleva vaihe tuottaa jotain tarkistettavaa, ja jokaisella on peruutus: pysäytä instanssi, poista sääntö tai poista sovelluksen välityspalvelinasetus. Mikään tässä ei muuta isännän oletusreittiä.

Esimerkki olettaa, että Dante 1.4.x on asennettu omaksi hallituksi instanssiksi luotetulle Linux-työasemalle ja että paketin tarjoama palvelutili ja lokituskokoonpano on jätetty paikoilleen. Työasema omistaa 10.77.0.2 WireGuard-rajapinnassaan, tavoittaa 10.60.0.20:443 tuon tunnelin kautta, ja palvelun oikea nimi on app.corp.example.

Vaihe 1: sido kuuntelija vain loopbackiin

Aseta verkko-, menetelmä- ja sääntöosat instanssin aktiiviseen kokoonpanoon ja korvaa esimerkin osoitteet. Kaikki palvelinasetukset tulevat ennen sääntölohkoja:

internal: 127.0.0.1 port = 1080
external: 10.77.0.2
external.protocol: ipv4
clientmethod: none
socksmethod: none

client pass {
    from: 127.0.0.1/32 to: 127.0.0.1/32
}

socks pass {
    from: 127.0.0.1/32 to: 10.60.0.20/32 port = 443
    command: connect
    protocol: tcp
}

Tämä on katkelma, ei korvaus paketin käyttäjä- ja lokitusasetuksille. Valitse käyttämätön paikallinen portti ja varmista, että tällä omalla instanssilla ei ole muita kuuntelijoita, laajempia läpäisysääntöjä eikä ylävirran ketjumerkintöjä, jotka muuttaisivat sopimusta. Jos aiempi kokoonpano jätti socks pass ilman kohderajoitusta, poista se ennen kuin testaat mitään.

Tämän vaiheen peruutus on instanssin pysäyttäminen; kokoonpanotiedosto voi jäädä levylle, kun peruutat sen.

Vaihe 2: kirjoita kaksi sääntöä, ei yhtä

Danten kokoonpanoviite antaa kahdelle sääntötyypille eri tehtävät. Asiakassääntö sallii yhteyden loopback-kuuntelijaan, ja sen kohteena on kuuntelijan oma osoite. SOCKS-sääntö sallii pyydetyn jatkoyhteyden hyväksyttyyn isäntään ja porttiin. Täsmäämättömät pyynnöt estetään oletuksena, minkä vuoksi puuttuva sääntö näyttää samalta kuin rikkinäinen reitti.

Huomaa, mitä tämä kokoonpano tarkoituksella ei tee: se ei pyydä SOCKS-salasanaa. Se sopii luotetulle paikalliselle isännälle, eikä se ole käyttäjän todennus. Mikä tahansa muu prosessi tuolla koneella voi myös käyttää loopbackia. Pidä etäsovelluksen oma todennus paikallaan äläkä käytä tätä todentamatonta muotoa uudelleen epäluotetuille paikallisille käyttäjille tai LANiin päin katsovalle kuuntelijalle.

Vaihe 3: tarkista reitti oikeasta lähteestä

external valitsee lähtevän lähdeosoitteen; se ei asenna WireGuard-reittiä. Vain luku -haku esimerkin lähteelle ja kohteelle:

ip -4 route get 10.60.0.20 from 10.77.0.2

Suorita se Danten todellisessa verkkonimiavaruudessa, älä missään sattumalta avoimessa kuoressa. Reitin, WireGuardin vertaisvalinnan, etäpuolen luvan ja paluupolun on kaikkien sovittava tuohon lähdeosoitteeseen. Onnistunut haku on välttämätön eikä riittävä, koska se ei kerro mitään siitä, hyväksyykö toinen pää pyynnön.

Vastusta kiusausta lisätä oletusreitti, jotta haku onnistuisi. Välityspalvelimen portti on vain tällä työasemalla; isännän oletusreitin muuttaminen sen luomiseksi kääntää koko suunnittelun ylösalaisin.

Vaihe 4: testaa aiotulla identiteetillä

Kun omistaja on validoinut asennetun kokoonpanon ja käynnistänyt instanssin palvelunhallintansa kautta, havainnollistava pyyntö on:

curl --proxy socks5h://127.0.0.1:1080 --noproxy '' https://app.corp.example/

Komennolla socks5h, Dante tekee kohderesoluution, mutta Dante ajetaan tällä työasemalla, joten asetus ei itsessään lähetä DNS:ää tunnelin toiseen päähän. Hyväksytyn ratkaisijan, jota Dante käyttää, on palautettava sallittu osoite tuolle nimelle. Tyhjä ei-välityspalvelinta-lista estää perityn poikkeuksen ohittamasta SOCKSia hiljaa.

Säilytä testissä HTTPS-isäntänimen ja varmenteen validointi, tarkasta sitten todellinen kuuntelija ja vahvista sopimuksen molemmat puolet: sallittu pyyntö onnistuu ja ulkopuolelle jätetty kohde epäonnistuu. Varmista myös, että tukemattomat edelleenlähetyskomennot pysyvät kiellettyinä, koska tämä katkelma sallii SOCKS CONNECT -komennon TCP:n yli eikä mitään yleisen UDP- tai koko laitteen tunnelin kaltaista.

Vaihe 5: päätä, mitä tapahtuu, kun tunneli katkeaa

Testaa tunnelin menetys ja instanssin uudelleenkäynnistys ennen kuin kutsut tätä tuotannoksi. Valvoja, joka käynnistää Danten WireGuardin jälkeen, ei luo fail-closed-reititystä eikä myöskään fail-closed-DNS:ää; molemmat on pakotettava verkon omistajan kautta. Katso, mitä sovellus tekee, kun tunneli on alhaalla: puhdas virhe on hyvä tulos, hiljainen putoaminen julkiseen ratkaisijaan ei.

Sovita päivitykset, jos sidottu tunneliosoite muuttuu, koska external on kiinnitetty siihen. Kun järjestelyä ei enää tarvita, poista tämä instanssi ja sovelluksen välityspalvelinasetus yhdessä ja jätä WireGuard-polku sen omistajalle.

Aiheeseen liittyvät artikkelit