Людзі ўспрымаюць socks5h як socks5 з больш зручным напісаннем і чакаюць, што абодва адправяць той жа запыт у тое ж месца. Лішняя літара замест гэтага пераносіць запыт DNS. На машыне, дзе рэзалвер і проксі знаходзяцца ў розных сетках, гэта розніца паміж запытам, які працуе, і запытам, які правальваецца.

Адна літара, два рэзалверы

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

Нішто ў схеме не змяняе шыфраванне або аўтэнтыфікацыю; пераносіцца толькі шлях DNS. Таму літару лёгка не заўважыць і дорага памыліцца.

Той жа проксі, іншы запыт

Два выклікі адрозніваюцца адным сімвалам. Усё астатняе ў іх ідэнтычнае:

curl --proxy socks5://proxy.example:1080 https://service.example/
curl --proxy socks5h://proxy.example:1080 https://service.example/

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

Уласнае імя проксі развязваецца лакальна

У гэтай камандзе proxy.example павінна стаць адрасам, перш чым што-небудзь іншае адбудзецца, і гэты пошук заўсёды лакальны. Перанос развязання service.example на проксі нічога не робіць для ўласнага імя проксі, якому ўсё яшчэ патрэбны рэзалвер, дасяжны вашай машыне. Менавіта тут VPN змяняе карціну.

Калі імя проксі развязваецца толькі ўнутры тунеля, злучэнне залежыць ад таго, ці падняты тунель да запуску curl. Якая схема тады перамагае, залежыць ад таго, які бок можа адказаць. Калі ваша машына не можа развязаць прызначэнне, а проксі можа, socks5 правальваецца, а socks5h атрымліваецца. Калі ваша машына развязвае яго праз тунель, а проксі не можа, socks5 працуе, а socks5h правальваецца.

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

Што можа развязаць кожны бок

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

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

Які бінарнік адказаў

Два бінарнікі curl на адной машыне могуць адрознівацца версіяй і магчымасцямі зборкі. У Unix-падобнай абалонцы type -a curl пералічвае ўсе супадзенні ў шляху, а curl --version паказвае магчымасці таго, які запусціцца. Скрыпт-абгортка або псеўданім раней у шляху — частая прычына таго, што вынікі не супадаюць з бінарнікам, які вы, як вам здаецца, тэстуеце.

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

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