Сеткі, якія дазваляюць выхад толькі праз проксі, — гэта месца, дзе працоўны профіль раптам памірае. Адрас проксі — найменш цікавая зменная ў гэтай няўдачы. Усё вырашае форма трафіку, які проксі будзе перадаваць, бо гэтыя проксі перадаюць байтавы паток, а тунель UDP такім не з'яўляецца. Застаюцца дзве архітэктуры, і ламаюцца яны ў розных месцах.

Адно абмежаванне вызначае схему

SOCKS5 сапраўды прадугледжвае рэжым асацыяцыі UDP. Падтрымка проксі ў кліенце OpenVPN тым не менш пабудавана вакол патокаў: socks-proxy дакументавана для профіляў TCP, а проксі HTTP CONNECT не мае шляху для датаграм наогул. Адзін радок дакументацыі вырашае архітэктуру яшчэ да таго, як вы дакранецеся да файла канфігурацыі.

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

Вагарыянт А: зрабіць тунель патокам

Для гэтага патрэбен сервер з TCP-слухачом і профіль кліента, які называе проксі. Абедзве часткі абавязковыя, і менавіта серверны бок людзі забываюць:

proto tcp-client
remote vpn.example.net 443
socks-proxy 127.0.0.1 1080

Замяніце апошні радок на http-proxy proxy.internal 8080, калі проксі гаворыць па HTTP, і дадайце файл уліковых даных, калі ён яго патрабуе. Проксі павінен быць гатовы выканаць CONNECT на ваш порт VPN, а сервер павінен адказваць па TCP; слухач толькі UDP гэтую спробу ігнаруе. Выбар 443 — практычны крок, бо многія абмежавальныя сеткі дазваляюць яго і амаль нічога іншага.

Кошт — гэта TCP, накладзены на TCP. Адзін страчаны знешні сегмент спыняе кожны ўнутраны паток, які дзеліць гэтае злучэнне, таму аднаўленне, якое звычайна было б незалежным, становіцца агульным. Наладка таксама займае больш часу, а няўстойлівы знешні шлях ператвараецца ў няўстойлівы тунель, а не ў павольны.

Вагарыянт Б: пакінуць тунель у спакоі

Калі тунель павінен заставацца на UDP, тунель — не тое месца, дзе вы нешта наладжваеце. Замест гэтага зыходны TCP ад праграм перанакіроўваецца на лакальны слухач SOCKS, і праграмы ніколі не даведваюцца, што проксі існуе. У Linux гэта звычайна redsocks плюс правіла NAT REDIRECT у табліцы nat.

Зноў толькі TCP. Проксі толькі для HTTP, такі як privoxy, не можа перадаваць адвольныя пратаколы, і гэтая схема таксама не дадае падтрымку датаграм для праграм.

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

Дзе ламаецца кожны варыянт

Вагарыянт А ламаецца, калі на серверы няма TCP-слухача, калі проксі адмаўляе цэль CONNECT або калі знешні паток абмежаваны ніжэй за тое, што патрэбна тунелю. Першыя два пакідаюць запіс у журнале проксі; трэці пакідае злучэнне, якое ўсталёўваецца і потым выглядае няправільна. Прачытайце гэты журнал перад рэдагаваннем профілю, бо ён аддзяляе праблему правоў ад праблемы прапускной здольнасці. Завершаны CONNECT пераносіць расследаванне ўнутры тунелю.

Вагарыянт Б ламаецца для ўсяго, што патрабуе датаграм, для пратаколаў, якіх проксі не разумее, і ціха на хостах, дзе правіла перанакіравання існуе, але маршрутызацыя вядзе трафік міма яго.

Ні адзін варыянт не змяняе патрабаванне да прылады. Пакетам па-ранейшаму патрэбен вузел TUN або TAP, перш чым ядро будзе іх маршрутызаваць, таму працэсу па-ранейшаму патрэбны дазвол на /dev/net/tun. Абгортка змяняе тое, што адбываецца пасля адкрыцця гэтага вузла, а не тое, ці патрэбен ён вам.

Дакажыце, які шлях вы пабудавалі

Глядзіце на сокеты, а не на значок у лотку. Працэс VPN павінен трымаць усталяванае злучэнне з адрасам проксі, а проксі павінен быў запісаць мэту, да якой яго папрасілі дабрацца:

ss -tnp | grep openvpn

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

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

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