Гэты дапаможнік дае праксі-арыентаванаму дадатку доступ да існуючага шляху WireGuard, не публікуючы праксі-порт на VPN-серверы або ў інтэрнэце. Дэман SOCKS забяспечвае інтэрфейс дадатка, WireGuard забяспечвае ўжо ўзгоднены IP-шлях, і ні адзін з іх не аўтэнтыфікуе карыстальніка за вас. Кожны крок ніжэй дае нешта, што можна праверыць, і кожны мае адкат: спыніце асобнік, выдаліце правіла або адключыце праксі ў дадатку. Нішто тут не змяняе маршрут па змаўчанні хоста.

Прыклад мяркуе, што Dante 1.4.x усталяваны як выдзелены кіраваны асобнік на давераным працоўным месцы Linux, а службовы запіс і налады журнала з пакета пакінутыя на месцы. Працоўнае месца валодае 10.77.0.2 на сваім інтэрфейсе WireGuard і дасягае 10.60.0.20:443 праз гэты тунэль, а ўласная назва сэрвісу — app.corp.example.

Крок 1: прывяжыце слухач толькі да loopback

Змясціце раздзелы сеткі, метаду і правілаў у актыўную канфігурацыю асобніка, замяніўшы прыкладныя адрасы. Усе налады сервера ідуць перад блокамі правілаў:

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
}

Гэта фрагмент, а не замена налад карыстальніка і журнала з пакета. Выберыце незаняты лакальны порт і пераканайцеся, што гэты выдзелены асобнік не мае іншых слухачоў, шырэйшых правілаў пропуску і запісаў верхняга ланцуга, якія маглі б змяніць дамову. Калі папярэдняя канфігурацыя пакінула socks pass без абмежавання прызначэння, выдаліце яго перад любым тэставаннем.

Адкат для гэтага кроку — спыненне асобніка; файл канфігурацыі можа заставацца на дыску, пакуль вы яго вяртаеце.

Крок 2: напішыце два правілы, а не адно

У даведніку па канфігурацыі Dante два тыпы правілаў маюць розныя задачы. Правіла кліента дапускае злучэнне са слухачом loopback, і яго прызначэнне — адрас самога слухача. Правіла SOCKS дазваляе запытанае далейшае злучэнне да ўзгодненага хоста і порта. Несападпадаючыя запыты блакуюцца па змаўчанні, таму адсутнае правіла выглядае гэтак жа, як зламаны маршрут.

Звярніце ўвагу, чаго гэтая канфігурацыя наўмысна не робіць: яна не запытвае пароль SOCKS. Гэта падыходзіць для даверанага лакальнага хоста, і гэта не аўтэнтыфікацыя карыстальніка. Любы іншы працэс на гэтай машыне таксама можа выкарыстоўваць loopback. Пакіньце ўласную аўтэнтыфікацыю аддаленага дадатка на месцы і не выкарыстоўвайце гэтую неаўтэнтыфікаваную форму для недавераных лакальных карыстальнікаў або слухача, звернутага да LAN.

Крок 3: праверце маршрут з правільнай крыніцы

external выбірае зыходны адрас крыніцы; ён не ўсталёўвае маршрут WireGuard. Пошук толькі для чытання для прыкладнай крыніцы і прызначэння:

ip -4 route get 10.60.0.20 from 10.77.0.2

Запусціце гэта ў рэальнай сеткавай прасторы імёнаў Dante, а не ў любой абалонцы, якая ў вас адкрыта. Маршрут, выбар партнёра WireGuard, дазвол на аддаленым баку і зваротны шлях павінны адпавядаць гэтаму адрасу крыніцы. Паспяховы пошук неабходны і недастатковы, бо ён нічога не кажа пра тое, ці прымае далёкі канец запыт.

Супраціўляйцеся спакусе дадаць маршрут па змаўчанні, каб пошук удаўся. Праксі-порт існуе толькі на гэтым працоўным месцы; змена маршруту па змаўчанні хоста, каб стварыць яго, перавяртае ўвесь дызайн.

Крок 4: тэстуйце з меркаванай ідэнтычнасцю

Пасля таго як уласнік праверыць усталяваную канфігурацыю і запусціць асобнік праз свой кіраўнік службаў, прыкладны запыт такі:

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

З socks5h, Dante выконвае разрозненне прызначэння, але Dante працуе на гэтым працоўным месцы, таму налада не перадае DNS на далёкі канец тунэля сама па сабе. Узгоднены рэзалвер, які выкарыстоўвае Dante, павінен вярнуць дазволены адрас для гэтага імені. Пусты спіс без праксі не дае ўнаследаванаму выключэнню ціха абыходзіць SOCKS.

Захавайце праверку імені хоста і сертыфіката HTTPS у тэсце, затым аглядзіце фактычны слухач і пацвердзіце абедзве часткі дамовы: дазволены запыт паспяховы, а выключанае прызначэнне церпіць няўдачу. Таксама пераканайцеся, што непадтрыманыя каманды перасылкі застаюцца забароненымі, бо гэты фрагмент дазваляе каманду SOCKS CONNECT праз TCP і нічога падобнага на агульны UDP- або тунэль на ўсю прыладу.

Крок 5: вырашыце, што адбудзецца, калі тунэль падае

Праверце страту тунэля і перазапуск асобніка, перш чым назваць гэта прадукцыяй. Кіраўнік, які запускае Dante пасля WireGuard, не стварае маршрутызацыю fail-closed, і ён таксама не стварае DNS fail-closed; абодва трэба ўкараняць праз уласніка сеткі. Назірайце, што робіць дадатак, калі тунэль не працуе: чыстая памылка — добры вынік, а ціхі адкат да публічнага рэзалвера — не.

Узгадняйце абнаўленні, калі звязаны адрас тунэля змяняецца, бо external прывязаны да яго. Калі схема больш не патрэбна, выведзіце гэты асобнік і праксі-наладку дадатка разам і пакіньце шлях WireGuard таму, хто ім валодае.

Падобныя артыкулы