Dante SOCKS sa loopback para sa isang serbisyong HTTPS na dumadaan lamang sa WireGuard
Ikabit ang isang nakalaang tagapakinig na SOCKS sa loopback at payagan ang isang destinasyong TCP. Panatilihing hiwalay ang palabas na pinagmulan ng Dante, ruta ng kernel, DNS at patakaran sa pagkawala ng tunnel.
Ang runbook na ito ay nagbibigay sa isang aplikasyong may kamalayan sa proxy ng access sa umiiral na landas ng WireGuard nang hindi naglalathala ng proxy port sa VPN server o sa internet. Ang SOCKS daemon ang nagbibigay ng interface ng aplikasyon, ang WireGuard ang nagbibigay ng naaprubahang IP path, at wala sa kanila ang nagpapatunay ng user para sa iyo. Bawat hakbang sa ibaba ay gumagawa ng isang bagay na maaari mong siyasatin, at bawat isa ay may rollback: ihinto ang instance, alisin ang panuntunan o alisin ang setting ng proxy ng aplikasyon. Wala rito ang nagbabago sa default na ruta ng host.
Ipinapalagay ng halimbawa na ang Dante 1.4.x ay naka-install bilang isang nakalaan at pinamamahalaang instance sa isang pinagkakatiwalaang Linux workstation, kasama ang service account at logging configuration mula sa package na naiwan sa kanilang lugar. Ang workstation ay nagmamay-ari ng 10.77.0.2 sa interface nito ng WireGuard, umaabot sa 10.60.0.20:443 sa pamamagitan ng tunnel na iyon, at ang tamang pangalan ng serbisyo ay app.corp.example.
Hakbang 1: ikabit ang tagapakinig sa loopback lamang
Ilagay ang mga seksyon ng network, method at panuntunan sa aktibong configuration ng instance, pinapalitan ang mga halimbawang address. Lahat ng setting ng server ay nauuna sa mga bloke ng panuntunan:
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
}Ito ay isang fragment, hindi kapalit ng mga setting ng user at logging ng package. Pumili ng hindi gamit na lokal na port, at tiyakin na ang nakalaang instance na ito ay walang ibang tagapakinig, walang mas malawak na panuntunan sa pagpasa at walang mga entry sa upstream chain na magbabago sa kontrata. Kung ang dating configuration ay nag-iwan ng socks pass na walang paghihigpit sa destinasyon, alisin ito bago subukan ang anuman.
Ang rollback para sa hakbang na ito ay ihinto ang instance; ang configuration file ay maaaring manatili sa disk habang ibinabalik mo ito.
Hakbang 2: magsulat ng dalawang panuntunan, hindi isa
Ang sanggunian sa configuration ng Dante ay nagbibigay ng magkaibang gawain sa dalawang uri ng panuntunan. Ang panuntunan ng kliyente ay tumatanggap ng koneksyon sa tagapakinig ng loopback, at ang destinasyon nito ay ang address ng tagapakinig mismo. Ang panuntunan ng SOCKS ay nagpapahintulot sa hiniling na kasunod na koneksyon patungo sa naaprubahang host at port. Ang mga hindi tugmang kahilingan ay hinaharangan bilang default, kaya't ang nawawalang panuntunan ay mukhang katulad ng sirang ruta.
Pansinin ang sadyang hindi ginagawa ng configuration na ito: hindi ito humihingi ng password ng SOCKS. Iyon ay angkop sa pinagkakatiwalaang lokal na host, at hindi ito pagpapatunay ng user. Anumang ibang proseso sa makina na iyon ay maaari ring gumamit ng loopback. Panatilihin ang sariling pagpapatunay ng malayong aplikasyon, at huwag gamitin muli ang anyong walang pagpapatunay na ito para sa mga hindi pinagkakatiwalaang lokal na user o sa tagapakinig na nakaharap sa LAN.
Hakbang 3: i-verify ang ruta mula sa tamang pinagmulan
external pumipili ng palabas na address ng pinagmulan; hindi ito nag-i-install ng rutang WireGuard. Paghahanap na basahin lamang para sa pinagmulan at destinasyon ng halimbawa:
ip -4 route get 10.60.0.20 from 10.77.0.2Patakbuhin iyon sa tunay na namespace ng network ng Dante, hindi sa anumang shell na nakabukas ka. Ang ruta, ang pagpili ng kapareha sa WireGuard, ang pahintulot sa malayong panig at ang daan pabalik ay dapat tumugma sa address ng pinagmulang iyon. Ang matagumpay na paghahanap ay kailangan at hindi sapat, dahil wala itong sinasabi tungkol sa kung tinatanggap ng malayong dulo ang kahilingan.
Labanan ang tukso na magdagdag ng default na ruta upang magtagumpay ang paghahanap. Ang proxy port ay umiiral lamang sa workstation na ito; ang pagbabago ng default na ruta ng host upang likhain ito ay bumabaligtad sa buong disenyo.
Hakbang 4: subukan gamit ang inilaan na pagkakakilanlan
Matapos i-validate ng may-ari ang naka-install na configuration at simulan ang instance sa pamamagitan ng service manager nito, ang isang halimbawang kahilingan ay:
curl --proxy socks5h://127.0.0.1:1080 --noproxy '' https://app.corp.example/Sa socks5h, ginagawa ng Dante ang resolusyon ng destinasyon, ngunit tumatakbo ang Dante sa workstation na ito, kaya hindi mismo ipinapadala ng setting ang DNS sa malayong dulo ng tunnel. Ang naaprubahang resolver na ginagamit ng Dante ay dapat magbalik ng pinapayagang address para sa pangalang iyon. Ang walang laman na listahan ng walang-proxy ay pumipigil sa isang minanang pagbubukod na tahimik na laktawan ang SOCKS.
Panatilihin ang pagpapatunay ng hostname at sertipiko ng HTTPS sa pagsubok, pagkatapos siyasatin ang aktwal na tagapakinig at kumpirmahin ang dalawang hati ng kontrata: nagtagumpay ang pinapayagang kahilingan at nabigo ang isang ibinukod na destinasyon. I-verify din na ang mga hindi sinusuportahang utos sa pagpapasa ay nananatiling tinatanggihan, dahil pinapayagan ng fragment na ito ang utos na SOCKS CONNECT sa TCP at wala nang kahawig ng pangkalahatang tunnel na UDP o ng buong device.
Hakbang 5: magpasya kung ano ang mangyayari kapag bumagsak ang tunnel
Subukan ang pagkawala ng tunnel at muling pag-start ng instance bago tawagin itong produksyon. Ang supervisor na nag-uumpisa ng Dante pagkatapos ng WireGuard ay hindi gumagawa ng fail-closed na pag-ruta, at hindi rin gumagawa ng fail-closed na DNS; pareho ay dapat ipatupad sa pamamagitan ng may-ari ng network. Pagmasdan ang ginagawa ng aplikasyon kapag down ang tunnel: ang malinaw na error ay magandang resulta, ang tahimik na pagbagsak sa isang pampublikong resolver ay hindi.
Ugnayin ang mga update kung magbabago ang nakatali na address ng tunnel, dahil external ito ay naka-pin doon. Kapag hindi na kailangan ang kaayusang ito, iretiro ang instance na ito at ang setting ng proxy ng aplikasyon nang magkasama, at ipaubaya ang landas ng WireGuard sa kung sino man ang nagmamay-ari nito.