Mae'r gwerslyfr hwn yn rhoi mynediad i raglen sy'n ymwybodol o brocsi at lwybr WireGuard sy'n bodoli eisoes heb gyhoeddi porth procsi ar weinydd y VPN na'r rhyngrwyd. Mae'r daemon SOCKS yn darparu rhyngwyneb y rhaglen, mae WireGuard yn darparu'r llwybr IP a gymeradwywyd yn barod, ac nid yw'r naill na'r llall yn dilysu'r defnyddiwr ar eich rhan. Mae pob cam isod yn cynhyrchu rhywbeth y gallwch ei archwilio, ac mae gan bob un wrthgiliad: stopiwch yr enghraifft, tynnwch y rheol, neu tynnwch osodiad procsi'r rhaglen. Nid oes unrhyw beth yma yn newid llwybr diofyn y gwesteiwr.

Mae'r enghraifft yn tybio bod Dante 1.4.x wedi'i osod fel enghraifft bwrpasol a reolir ar weithfan Linux y gellir ymddiried ynddi, gyda chyfrif gwasanaeth a chyfluniad cofnodi'r pecyn yn cael eu gadael yn eu lle. Mae'r weithfan yn berchen ar 10.77.0.2 ar ei rhyngwyneb WireGuard, yn cyrraedd 10.60.0.20:443 trwy'r twnnel hwnnw, ac enw priodol y gwasanaeth yw app.corp.example.

Cam 1: clymwch y gwrandawr i loopback yn unig

Rhowch yr adrannau rhwydwaith, dull a rheolau yng nghyfluniad gweithredol yr enghraifft, gan ddisodli'r cyfeiriadau enghreifftiol. Mae pob gosodiad gweinydd yn dod o flaen y blociau rheolau:

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
}

Mae hwn yn ddarn, nid yn ddisodliad ar gyfer gosodiadau defnyddiwr a chofnodi'r pecyn. Dewiswch borth lleol nas defnyddiwyd, a chadarnhewch nad oes gan yr enghraifft bwrpasol hon wrandawyr eraill, na rheolau pasio ehangach, na chofnodion cadwyno uwchrif a fyddai'n newid y contract. Os yw cyfluniad blaenorol wedi gadael socks pass heb gyfyngiad cyrchfan, tynnwch ef cyn profi unrhyw beth.

Yr wrthgiliad ar gyfer y cam hwn yw stopio'r enghraifft; gall y ffeil gyflunio aros ar y disg wrth i chi ei throi'n ôl.

Cam 2: ysgrifennwch ddwy reol, nid un

Mae cyfeirlyfr cyflunio Dante yn rhoi gwaith gwahanol i'r ddau fath o reol. Mae'r rheol cleient yn derbyn cysylltiad â'r gwrandawr loopback, a'i chyrchfan yw cyfeiriad y gwrandawr ei hun. Mae'r rheol SOCKS yn caniatáu'r cysylltiad ymlaen a ofynnwyd at y gwesteiwr a'r porth a gymeradwywyd. Mae ceisiadau na chânt eu paru yn cael eu blocio yn ddiofyn, a dyna pam mae rheol ar goll yn edrych yr un fath â llwybr wedi torri.

Sylwch ar yr hyn nad yw'r cyfluniad hwn yn ei wneud yn fwriadol: nid yw'n gofyn am gyfrinair SOCKS. Mae hynny'n addas ar gyfer gwesteiwr lleol y gellir ymddiried ynddo, ac nid dilysu defnyddiwr ydyw. Gall unrhyw broses arall ar y peiriant hwnnw ddefnyddio loopback hefyd. Cadwch ddilysu'r rhaglen bell yn ei le, a pheidiwch ag ailddefnyddio'r ffurf heb ddilysu hon ar gyfer defnyddwyr lleol annibynadwy nac ar gyfer gwrandawr sy'n wynebu'r LAN.

Cam 3: gwiriwch y llwybr o'r ffynhonnell gywir

external yn dewis cyfeiriad ffynhonnell allan; nid yw'n gosod llwybr WireGuard. Chwiliad darllen yn unig ar gyfer ffynhonnell a chyrchfan yr enghraifft:

ip -4 route get 10.60.0.20 from 10.77.0.2

Rhedwch hynny yng ngofod enw rhwydwaith gwirioneddol Dante, nid mewn unrhyw gragen sydd gennych ar agor. Rhaid i'r llwybr, y dewis o bartner WireGuard, y caniatâd ar yr ochr bell a'r llwybr dychwelyd i gyd gyd-fynd â'r cyfeiriad ffynhonnell hwnnw. Mae chwiliad llwyddiannus yn angenrheidiol ac nid yn ddigonol, oherwydd nid yw'n dweud dim am a yw'r pen pell yn derbyn y cais.

Gwrthwynebwch y demtasiwn i ychwanegu llwybr diofyn er mwyn i'r chwiliad lwyddo. Dim ond ar y weithfan hon y mae'r porth procsi yn bodoli; mae newid llwybr diofyn y gwesteiwr i'w greu yn gwrthdroi'r dyluniad cyfan.

Cam 4: profwch gyda'r hunaniaeth a fwriadwyd

Ar ôl i'r perchennog ddilysu'r cyfluniad sydd wedi'i osod a dechrau'r enghraifft trwy ei reolwr gwasanaeth, cais enghreifftiol yw:

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

Gyda socks5h, mae Dante yn gwneud y datrysiad cyrchfan, ond mae Dante yn rhedeg ar y weithfan hon, felly nid yw'r gosodiad yn anfon DNS i ben pell y twnnel ar ei ben ei hun. Rhaid i'r datrysiwr cymeradwy y mae Dante yn ei ddefnyddio ddychwelyd y cyfeiriad a ganiateir ar gyfer yr enw hwnnw. Mae'r rhestr dim-procsi wag yn atal eithriad a etifeddwyd rhag osgoi SOCKS yn dawel.

Cadwch ddilysiad enw gwesteiwr a thystysgrif HTTPS yn y prawf, yna archwiliwch y gwrandawr gwirioneddol a chadarnhau dau hanner y contract: mae'r cais a ganiateir yn llwyddo ac mae cyrchfan a eithrid yn methu. Gwiriwch hefyd fod gorchmynion anfon heb eu cefnogi yn parhau i gael eu gwrthod, oherwydd mae'r darn hwn yn caniatáu gorchymyn SOCKS CONNECT dros TCP ac nid oes dim tebyg i dwnnel UDP cyffredinol nac un ar gyfer y ddyfais gyfan.

Cam 5: penderfynwch beth sy'n digwydd pan fydd y twnnel yn cwympo

Profwch golled y twnnel ac ailgychwyn yr enghraifft cyn galw hyn yn gynhyrchu. Nid yw goruchwyliwr sy'n dechrau Dante ar ôl WireGuard yn creu llwybro fail-closed, ac nid yw'n creu DNS fail-closed ychwaith; rhaid gorfodi'r ddau trwy berchnogion y rhwydwaith. Gwyliwch beth mae'r rhaglen yn ei wneud pan fo'r twnnel i lawr: gwall glân yw canlyniad da, nid yw cwymp tawel at ddatrysiwr cyhoeddus.

Cydlynwch ddiweddariadau os bydd cyfeiriad y twnnel sydd wedi'i rwymo yn newid, oherwydd external mae wedi'i binio iddo. Pan na fo'r trefniant yn angenrheidiol mwyach, ymddeolwch yr enghraifft hon a gosodiad procsi'r rhaglen gyda'i gilydd, a gadewch lwybr WireGuard i bwy bynnag sy'n berchen arno.

Erthyglau cysylltiedig