Як читати коди помилок з’єднання SOCKS5
Визначте, чи не вдалися узгодження SOCKS, автентифікація або доступ до цілі, перш ніж вважати кожну помилку ознакою непрацездатного проксі.
Сервер SOCKS5 може прийняти TCP-з’єднання, але відхилити запит доступу до цілі. Прочитайте відповідь на правильному етапі, перш ніж вирішувати, яка кінцева точка не працює.
Спершу обирається метод. Автентифікація за ім’ям і паролем, якщо обрана, має власний результат. Лише потім сервер повертає відповідь на CONNECT чи іншу команду SOCKS. Значення байта одного етапу не можна тлумачити за таблицею іншого.
Відповіді на запити розрізняють причини помилок
| Значення відповіді | Значення у відповіді на запит SOCKS5 |
|---|---|
| 0x01 | Загальна помилка сервера. |
| 0x02 | З’єднання не дозволене набором правил. |
| 0x03 | Мережа недосяжна. |
| 0x04 | Хост недосяжний. |
| 0x05 | У з’єднанні відмовлено. |
| 0x06 | TTL закінчився. |
| 0x07 | Команда не підтримується. |
| 0x08 | Тип адреси не підтримується. |
Наприклад, відмова на рівні запиту повідомляється після досягнення служби SOCKS. Це відрізняється від відмови операційної системи у початковому TCP-з’єднанні з цією службою.
Помилка типу адреси може стосуватися подання IPv4, IPv6 чи імені хоста. Вона не означає автоматично, що кінцева точка зовсім не підтримує SOCKS5. Так само непідтримувана команда UDP не дає остаточного висновку про окремий запит TCP CONNECT.
Зберіть контекст, що робить код корисним
Під час написання звіту про помилку зберігайте з результатом адресу проксі, команду, цільовий хост і порт, сімейство адрес і режим DNS. Якщо ви адмініструєте кінцеву точку, корисні серверні журнали політик. Відмова за правилами потребує перевірки застосовного дозволу, а не збільшення часу очікування з’єднання.
Відповідь — повідомлення сервера, а не повна незалежна діагностика цільової мережі. Формулювання клієнтів теж різняться. За можливості записуйте етап і початкову відповідь, не покладаючись лише на коротке перекладене повідомлення про помилку.