Есть ли простой способ, предпочтительно с помощью терминала Linux, проверить, работает ли прокси-сервер Socks5?
4 ответа
Если вы создали прокси-сервер самостоятельно, вы должны прежде всего проверить, существует ли открытый порт (аргумент p
работает только в том случае, если соответствующий процесс принадлежит вам или вы являетесь пользователем root):
netstat -tlnp
Это должно дать вам строку вроде: (У меня есть прокси на localhost:8888
)
tcp 0 0 127.0.0.1:8888 0.0.0.0:* LISTEN
Если вы нашли такую линию или прокси не ваш, попробуйте отправить через нее пакеты. Например, запрос веб-страницы с curl
:
curl --socks5 localhost:8888 binfalse.de
Должен выводить некоторые вещи HTML. Надеюсь, что это помогает искать ошибки ;-)
Aux: Для моего примера я создал прокси через:
ssh -o ServerAliveInterval=60 -D8888 someone@somewhere
Замените someone
своим именем пользователя, а somewhere
вашим конечным сервером. Конечно, использование OpenSSH - это всего лишь один из множества возможных прокси-серверов socks5.
Чтобы получить curl для разрешения DNS с другой стороны, измените --socks5
на --socks5-hostname
.
Смотрите man-страницу для получения дополнительной информации.
Следующая команда проверит, работает ли прокси Socks 5 на localhost:8080
:
timeout 5 curl -x socks5://localhost:8080 http://example.com/
В противном случае время ожидания истечет через 5 секунд.
Вы можете подключиться к netcat и следовать правилам RFC 1928, чтобы общаться с сервером. Вы должны были бы иметь возможность печатать и читать непечатаемые символы или записывать их в файл для дальнейшего изучения.
Например, чтобы проверить, является ли он сервером SOCKS5, и выяснить, какой из методов аутентификации no-auth, gssapi или usr+pwd он будет поддерживать, отправьте 0x05 0x03 0x00 0x01 0x02. Сервер SOCKS5, подготовленный для использования аутентификации usr+pwd, ответит 0x05 0x02.
Или вот как проверить, работает ли сервер SOCKS5 и работает ли no-auth (метод 0):
echo 050100 | xxd -p -r | netcat -o out.txt {server} {port}
После того, как вы прервете это, к концу out.txt он должен был выдать 0x05 0x00, если сервер поддерживает этот метод (0), или 0x05 0xFF, если это не так.