Хората приемат 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 в постоянно правило за всяка платформа.

Подобни статии