-1

У меня есть внешний сервер, который я использую для подключения к Интернету с помощью динамической переадресации портов с моего удаленного рабочего стола. Я пересылаю все соединения на мой локальный порт 9150. Поэтому я использую этот прокси socks5 во всех моих приложениях. Но проблема возникает в некоторых приложениях, использующих UDP для соединения, и все порты UDP заблокированы на этом внешнем сервере.

Можно ли даже отправлять трафик UDP без использования VPN.

1 ответ1

0

Этот ответ выглядит так, что способность SOCKS5 принимать UDP не реализована в SSH-версии SOCKS.

Изменить: вышеупомянутый ответ сфокусирован на программном аспекте OpenSSH-6.4p1 от 8 ноября 2013 года, особенно на функции channel_decode_socks5 из исходного кода в channels.c .

  if (s5_req.version != 0x05 ||
        s5_req.command != SSH_SOCKS5_CONNECT ||
        s5_req.reserved != 0x00) {
            debug2("channel %d: only socks5 connect supported", c->self);
            return -1;
    }

Взглянув на текущий исходный код (поскольку ссылка на исходный код из приведенной выше версии является более старой), вы обнаружите, что и в текущем исходном коде реализовано только соединение socks, а UDP - нет.

Текущий исходный код на март 2016 года:

if (s5_req.version != 0x05 ||
        s5_req.command != SSH_SOCKS5_CONNECT ||
        s5_req.reserved != 0x00) {
        debug2("channel %d: only socks5 connect supported", c->self);
        return -1;
    }

Функция channel_decode_socks5 отвечающая за разрешение "только" TCP, а не UDP, с тех пор не изменилась. По этой причине трафик UDP не будет проходить через socks-прокси, открытый openSSH.

Если вам действительно нужен UDP, у вас есть несколько возможностей:

  • а) использовать VPN-соединение вместо SSH, например, openVPN. Самая простая возможность в моих глазах.
  • б) отправить запрос на добавление функций разработчикам openSSH. Это может занять гораздо больше времени, если оно вообще будет реализовано.
  • в) запрограммируйте функцию самостоятельно и, возможно, поделитесь ею с сообществом. В зависимости от ваших навыков программирования на C, это может быть даже быстрее, чем решение openVPN.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .