SOCKS5 і SOCKS5h: де відбувається DNS-розв’язання
Порівняйте локальне розв’язання DNS і розв’язання на проксі в curl, з’ясуйте причини помилок і межі захисту socks5h.
У curl обирайте socks5h://, якщо ім’я цільового сервера має розв’язувати проксі. Обирайте socks5://, якщо curl має зробити це локально й передати проксі адресу. Обидва режими використовують SOCKS5; кінцева h — це домовленість щодо запису URL на боці клієнта.
Порівняйте режими, підставивши власну кінцеву точку SOCKS5 замість локального порту прослуховування:
curl --noproxy '' --proxy socks5://127.0.0.1:1080 --connect-timeout 5 --max-time 15 --verbose https://example.com/
curl --noproxy '' --proxy socks5h://127.0.0.1:1080 --connect-timeout 5 --max-time 15 --verbose https://example.com/Змінюється лише режим розв’язання імен. --noproxy '' прибирає правила обходу проксі для цих викликів, а часові межі обмежують тривалість порівняння. Рівнозначні окремі параметри — --socks5 і --socks5-hostname. Як ціль використовуйте ім’я хоста: прямо вказана IP-адреса не потребує розв’язання імені призначення й не покаже цієї різниці.
Ім’я може бути відоме лише одному боку
Припустімо, проксі працює в мережі розробки, DNS якої знає ім’я внутрішнього сервісу. Ноутбук може не розв’язати його в режимі socks5, тоді як socks5h дозволяє зробити це проксі. У зворотній ситуації, коли ім’я визначене лише у файлі hosts ноутбука, невдалим може бути саме віддалене розв’язання.
Публічний DNS також може повертати різні адреси з різних мереж. Відмінні результати — привід порівняти вибрані адреси та їхню досяжність, а не одразу змінювати проксі.
- Не вдається розв’язати ім’я хоста проксі: жоден режим не зможе почати роботу. Клієнт і далі розв’язує
proxy.exampleуsocks5h://proxy.example:1080. - Локальне розв’язання імені призначення не працює: перевірте резолвер клієнта або порівняйте з режимом передавання імені хоста проксі.
- SOCKS-сервер відхиляє призначення: перевірте його відповідь і політику. Успішне локальне розв’язання не доводить досяжності з віддаленого боку.
- Тунель працює, але перевірка сертифіката не проходить: дослідіть TLS цільового сервера; зміна режиму DNS не є універсальним виправленням проблем довіри.
Контрольоване тестове ім’я та серверні журнали допомагають підтвердити, який тип адреси отримав проксі, яким ви керуєте. Сторінка із зовнішньою IP-адресою цього не покаже: вона повідомляє про вихідне з’єднання, а не про місце виконання DNS-розв’язання.
Користь для приватності має чіткі межі
Розв’язання на проксі дозволяє уникнути локального розв’язання імені призначення для цього запиту. Воно не шифрує SOCKS, не доводить використання шифрованого DNS проксі й не спрямовує трафік інших застосунків або попереднього завантаження браузера. Requests із підтримкою SOCKS використовує той самий поділ між локальним розв’язанням і розв’язанням на проксі; інші клієнти можуть мати налаштування замість запису URL у curl. Оберіть протокол, який підтримує ваш застосунок, перш ніж копіювати кінцеву точку зі списку SOCKS5-проксі.