Dante SOCKS loopback sąsajoje HTTPS paslaugai, veikiančiai tik per WireGuard
Susiekite skirtą SOCKS klausytuvą su loopback ir leiskite vieną TCP paskirties vietą. Laikykite atskirai Dante išeinančiosios šaltinį, branduolio maršrutą, DNS ir tunelio praradimo politiką.
Šis vadovas suteikia proksį suprantančiai programai prieigą prie esamo WireGuard kelio neskelbiant proksio prievado VPN serveryje ar internete. SOCKS tarnyba teikia programos sąsają, WireGuard teikia jau patvirtintą IP kelią, ir nė viena jų neatlieka naudotojo autentifikavimo už jus. Kiekvienas žingsnis žemiau sukuria kažką, ką galite patikrinti, ir kiekvienas turi atšaukimą: sustabdykite egzempliorių, pašalinkite taisyklę arba pašalinkite programos proksio nustatymą. Niekas čia nekeičia pagrindinio kompiuterio numatytojo maršruto.
Pavyzdys daro prielaidą, kad Dante 1.4.x įdiegtas kaip atskiras, valdomas egzempliorius patikimoje Linux darbo vietoje, o paketo teikiama paslaugos paskyra ir registravimo konfigūracija paliktos savo vietose. Darbo vieta turi 10.77.0.2 savo WireGuard sąsajoje, pasiekia 10.60.0.20:443 per tą tunelį, o tikrasis paslaugos pavadinimas yra app.corp.example.
1 žingsnis: susiekite klausytuvą tik su loopback
Įdėkite tinklo, metodo ir taisyklių skyrius į aktyvią egzemplioriaus konfigūraciją, pakeisdami pavyzdinius adresus. Visi serverio nustatymai eina prieš taisyklių blokus:
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
}Tai fragmentas, o ne paketo naudotojo ir registravimo nustatymų pakaitalas. Pasirinkite nenaudojamą vietinį prievadą ir patvirtinkite, kad šis atskiras egzempliorius neturi kitų klausytuvų, platesnių praleidimo taisyklių ir aukštesniojo lygio grandinės įrašų, kurie pakeistų sutartį. Jei ankstesnė konfigūracija paliko socks pass be paskirties apribojimo, pašalinkite ją prieš ką nors testuodami.
Šio žingsnio atšaukimas yra egzemplioriaus sustabdymas; konfigūracijos failas gali likti diske, kol jį grąžinate.
2 žingsnis: rašykite dvi taisykles, o ne vieną
Dante konfigūracijos žinynas dviem taisyklių tipams skiria skirtingus darbus. Kliento taisyklė leidžia ryšį su loopback klausytuvu, o jos paskirties vieta yra paties klausytuvo adresas. SOCKS taisyklė leidžia prašomą tolesnį ryšį su patvirtintu pagrindiniu kompiuteriu ir prievadu. Nesutampančios užklausos blokuojamos pagal numatytąjį nustatymą, todėl trūkstama taisyklė atrodo lygiai taip pat kaip sugedęs maršrutas.
Atkreipkite dėmesį, ko ši konfigūracija sąmoningai nedaro: ji nereikalauja SOCKS slaptažodžio. Tai tinka patikimam vietiniam pagrindiniam kompiuteriui, ir tai nėra naudotojo autentifikavimas. Bet kuris kitas tos mašinos procesas taip pat gali naudoti loopback. Išsaugokite nuotolinės programos savąjį autentifikavimą ir nenaudokite šios neautentifikuotos formos nepatikimiems vietiniams naudotojams ar į LAN nukreiptam klausytuvui.
3 žingsnis: patikrinkite maršrutą iš tinkamo šaltinio
external pasirenka išeinančiosios šaltinio adresą; jis neįdiegia WireGuard maršruto. Tik skaitoma užklausa pavyzdiniam šaltiniui ir paskirties vietai:
ip -4 route get 10.60.0.20 from 10.77.0.2Vykdykite tai tikroje Dante tinklo vardų erdvėje, o ne bet kurioje atsitiktinai atidarytoje shell aplinkoje. Maršrutas, WireGuard partnerio pasirinkimas, nuotolinės pusės leidimas ir grįžimo kelias turi atitikti tą šaltinio adresą. Sėkminga užklausa yra būtina ir nepakankama, nes ji nieko nesako apie tai, ar tolimasis galas priima užklausą.
Atsispirkite pagundai pridėti numatytąjį maršrutą, kad užklausa pavyktų. Proksio prievadas egzistuoja tik šioje darbo vietoje; pagrindinio kompiuterio numatytojo maršruto keitimas jam sukurti apverčia visą dizainą.
4 žingsnis: testuokite su numatytuoju tapatumu
Po to, kai savininkas patvirtina įdiegtą konfigūraciją ir paleidžia egzempliorių per savo paslaugų tvarkyklę, iliustratyvi užklausa yra:
curl --proxy socks5h://127.0.0.1:1080 --noproxy '' https://app.corp.example/Su socks5h, Dante atlieka paskirties vietos nustatymą, bet Dante veikia šioje darbo vietoje, todėl nustatymas savarankiškai nesiunčia DNS į tolimąjį tunelio galą. Patvirtintas sprendėjas, kurį naudoja Dante, turi grąžinti leidžiamą adresą tam pavadinimui. Tuščias be-proksio sąrašas neleidžia paveldėtai išimčiai tyliai apeiti SOCKS.
Išsaugokite HTTPS pagrindinio kompiuterio vardo ir sertifikato tikrinimą teste, tada apžiūrėkite tikrąjį klausytuvą ir patvirtinkite abi sutarties puses: leidžiama užklausa pavyksta, o neįtraukta paskirties vieta nepavyksta. Taip pat patikrinkite, kad nepalaikomos peradresavimo komandos lieka atmestos, nes šis fragmentas leidžia SOCKS CONNECT komandą per TCP ir nieko panašaus į bendrą UDP ar viso įrenginio tunelį.
5 žingsnis: nuspręskite, kas nutinka, kai tunelis nukrenta
Išbandykite tunelio praradimą ir egzemplioriaus paleidimą iš naujo prieš vadindami tai gamyba. Prižiūrėtojas, kuris paleidžia Dante po WireGuard, nesukuria fail-closed maršrutizavimo ir nesukuria fail-closed DNS; abu turi būti užtikrinami per tinklo savininką. Stebėkite, ką programa daro, kai tunelis neveikia: švari klaida yra geras rezultatas, tylus kritimas į viešą sprendėją – ne.
Derinkite atnaujinimus, jei susietas tunelio adresas pasikeičia, nes external yra prie jo prijungtas. Kai ši tvarka nebebūtina, atsisakykite šio egzemplioriaus ir programos proksio nustatymo kartu, o WireGuard kelią palikite tam, kam jis priklauso.