Skip to content

Jabpunch — программа для удаленного управления Windows.

скачать.

Описание.

  • Jabpunch позволяет запускать тоннель OpenVPN, когда обе стороны находятся за NAT и имеют приватные адреса. Для первоначального установления соединения используются Jabber и STUN-серверы, затем данные openvpn-соединения проходят напрямую между конечными точками. Информация проходящая через jabber шифруется. Jabpunch может использовать как публичные так и собственные Jabber и STUN-серверы.
  • Jabpunch позволяет удаленно запустить командную строку, передавать команды и получать результаты их выполнения через jabber-сервер (подобие telnet). С помошью этой функции можно, например, просмотреть список запущенных процессов на удаленной машине (команда tasklist), завершить процесс (taskkill), запустить/остановить службу (net start/net stop) и т.д.
  • Jabpunch встроена система удаленного помощника Windows Vista/7, что дает возможность видеть удаленный рабочий стол и управлять с помощью клавиатуры и мыши.
  • Jabpunch не требует установки, также нет необходимости в установленном OpenVPN: необходимые файлы уже включены в состав дистрибутива. Может работать в качестве службы (с некоторыми ограничениями), при этом отпадает необходимость в интерактивном входе пользователя в систему.
  • Jabpunch распространяется с исходными текстами. Таким образом программа является аналогом Hamachi, Team Viewer, Radmin, но с открытым исходным текстом.

Настройка

1) Распаковать архив в любую папку по вашему усмотрению.
2) Запустить программу. При первом запуске сразу откроется окно настроек. В нем некоторые параметры установлены по умолчанию.


Для быстрой настройки нужно указать свой Jabber Name, Jabber Password и установить виртуальный адаптер (кнопка Install Adapter). При установке появится окно с сообщением о том, что драйвер не тестировался на совместимость, нужно согласиться на установку. На удаленную сторону можно перенести каталог с программой с локального компьютера, в этом случае повторно настраивать параметры не придется, нужно будет только установить адаптер. Команду на запуск установки адаптера на удаленном компьютере можно подавать из контекстного меню.

Для более детальной настройки рассмотрим все параметры:

Jabber Name — адрес вашего jabber-аккаунта (для всех хостов нужно использовать только один аккаунт). Jabber адреса нужно указывать полностью т.е. вида: name@jabber.ru. Ресурсная часть адреса тоже можно указать, при этом адрес будет вида name@jabber.ru/server, а в списке хостов в главном окне программы на удаленной стороне появиться соответствующая запись «server». Ресурсная часть адреса должна быть уникальна для всех компьютеров. Если не указывать ресурс, то он генерируется автоматически на основе внешнего ip и имени компьютера. На скриншоте показано, как будут выглядеть удаленные компьютеры с разными установками ресурсов:

 

Jabber Password — пароль для jabber-аккаунта.

Command Encript Key — пароль для шифрования данных проходящих через сеть Jabber.

Keep Alive — указывает через какие промежутки времени (в минутах) отсылать тестовое Jabber-сообщение

STUN Server — адрес STUN-сервера. Список серверов: stun.voipbuster.com stun.xten.com stunserver.org stun01.sipphone.com stun.ekiga.net stun.fwdnet.net stun.ideasip.com stun.iptel.org stun.rixtelecom.se stun.schlund.de stun.softjoys.com stun.voiparound.com stun.voipstunt.com stun.voxgratia.org.

Disable Sleep — препятствует переходу системы в ждущий/спящий режим.

Install Adapter — запускает установку виртуальной сетевой карты. После выполнения команды установки будет выведено всплывающее окно с результатом.

Remove All adapters — удаляет все установленные виртуальные адаптеры в системе. Если требуется удалить только один адаптер, то это можно сделать через диспетчер устройств Windows. После выполнения команды удаления будет выведено всплывающее окно с результатом.

Install Service — устанавливает программу в качестве сервиса Windows. Если программа будет работать в этом режиме, она не сможет выполнять команды установки/удаления виртуального адаптера и запускать удаленного помощника. После выполнения команды установки будет выведено всплывающее окно с результатом.

Remove Service — отменяет установку в качестве сервиса Windows. После выполнения команды удаления будет выведено всплывающее окно с результатом.

Tunnel Local IP — IP адрес который будет задан в качестве адреса туннеля с локальной стороны. На удаленной
стороне будет установлен IP с последним байтом на 1 больше.

OpenVPN Options — строка запуска OpenVPN. Jabpunch автоматически расчитывает и добавляет
параметры —remote —lport —rport —management —ifconfig, остальные параметры берутся из этой строки. Для шифрования OpenVPN-туннеля надо использовать параметр —secret и указать файл с ключем. Ключ для шифрования можно сгенерировать в каталоге bin командой: openvpn —genkey —secret 1.key. Файл с ключем нужно скопировать в папку с файлом jabpunch.exe.

OpenVPN Port — предпочитаемый локальный порт, по которому Jabpunch первоначально попытается установить соединение. Для увеличения вероятности прохождения пакетов через NAT лучше использовать стандартный порт STUN-сервера 3478.

Настройки сохраняются в файле jabpunch.ini

Работа программы

При запуске программа определит тип NAT и подключится к Jabber-серверу. Если запущены копии программы на удаленной стороне, то в окне со списком хостов появятся соответствующие записи. Все операции с удаленными системами можно выполнить вызвав контекстное меню:

 

Start OpenVPN — Запуск OpenVPN-туннеля. Программа выполняет алгоритм (подробно описанный ниже) и запускает OpenVPN. Состояние запуска отображается в поле «OpenVPN Status», IP-адреса конечных точек туннеля в полях «Local Tunnel IP» и «Remote Tunnel IP». Одновременно можно запустить туннель только с одним удаленным компьютером.

Stop OpenVPN — Остановить запущенный OpenVPN.

Query Privileges — Запросить права администратора на удаленной стороне. Появится стандартный запрос Windows на повышение прав. На запрос должен ответить человек, находящийся за удаленным компьютером.

Start Remote Assistance — Запуск удаленного помощника. Поддерживается только в Windows Vista/7. Jabpunch сможет установить соединение удаленного помощника если компьютеры расположены в одной сети, между ними запущен OpenVPN-туннель или настроен доступ по teredo IPv6. Окно удаленного помощника можно изменять в размерах с автоматическим масштабированием изображения удаленного рабочего стола:

 

Start command via Jabber — Запуск программы cmd.exe на удаленной машине и передача ввода вывода по сети Jabber. Данная функция представляет некий аналог telnet-доступа с удаленной системе. С помощью этой функции программы можно быстро выполнить перезапуск сервиса (net stop «Service Name», net start «Service Name»), просмотреть список запущенных процессов (команда Tasklist), завершить процесс (taskkill), выполнить команды ping, tracert, ipconfig и т.д. Особенности передачи ввода вывода по jabber накладывают на выполняемые команды ограничения: например, нельзя нормально выполнить на удаленной стороне программу FAR, размер передаваемых данных за один раз ограничен ~30КБт. На скриншоте представлен результат выполнения ping 8.8.8.8:

 

ADD TAP-adapter — Запуск установки VPN-адаптера на удаленном компьютере. При этом на удаленной стороне будут появляться стандартные запросы Windows о драйвере, на них должен ответить человек, находящийся за удаленным компьютером. Провести установку без запросов в данной версии нет.

Remove All TAP-adapters — Удаление всех VPN-адаптеров на удаленной системе.

Restart Program — Перезапуск программы на удаленном компьютере.

Restart Windows — Перезапуск операционной системы на удаленном компьютере.

Параметры командной строки.

«jabpunch -h» — программа запустится без создания главного окна. Для выхода из программы надо нажать сочетание клавиш CTRL+ALT+SHIFT+F8.

Алгоритм работы запуска OpenVPN-соединения.

Программа содержит клиенты jabber и STUN. При запуске программы определяет тип NAT, подключается к jabber-серверу и ожидает команды от пользователя или по jabber-сети. При команде запуска OpenVPN соединения обе стороны помощью STUN-сервера определяют внешние адреса и порты NAT и передают по jabber-сети удаленной стороне. Затем стороны несколько раз высылают UDP-пакеты на эти адреса:порты. Если с одной из сторон symmetric-NAT, то дополнительно высылаются пакеты на адрес:порт+1 и адрес:порт+2. Если любой из пакетов дошел до удаленной стороны, то запускается openvpn с параметрами —remote —lport —rport, заданными на основе заголовка принятого пакета.

Прохождение пакетов возможно, если NAT full cone, address restricted, port restricted или symmetric с последовательным выделением портов на внешней стороне NAT.

Программа тестировалась на различных вариантах NAT: VMware NAT, Windows 2003 «Маршрутизация и удаленный доступ», Winroute contol, linux Zeroshell, ISA server 2006, Beeline GPRS, MTS GPRS, Megafon GPRS . В большинстве случаев тип NAT port restricted и соединение устанавливается. ISA server 2006 — symmetric NAT с последовательным выделением портов, соединение тоже устанавливается. MTS GPRS, Megafon GPRS — symmetric NAT со случайным выделением портов и, если с другой стороны тип NAT не является full cone или address restricted, то соединение не устанавливается. Билайн GPRS — symmetric NAT на момент тестирования выделял порты последовательно из нескольких участков. Можно угадать какой порт будет выдан следующим, используя несколько STUN серверов подряд. Программа на данный момент не поддерживает такой алгоритм.

16 Comments

  1. Yuhter wrote:

    Идея хорошая и реализация на уровне.
    Но не пойму, что значит «Type of NAT: Blocked.» В сети где все порты udp и tcp полностью открыты. Получается если нет NAT, то программа и не работает?

    Вторник, Октябрь 30, 2012 at 09:16 | Permalink
  2. admin wrote:

    Type of NAT: Blocked значит, что программа не получила ответа от STUN-сервера. Скорее всего у вас встроенный брандмауэр Windows заблокировал доступ программы. Возможны другие причины: недоступен STUN-сервер, интернет-подключение нестабильно

    Вторник, Октябрь 8, 2013 at 17:54 | Permalink
  3. Glegnus wrote:

    вот тут

    какието японцы пишут что у них получилось достичь пробива барьера 2х симметричных нат 99%.

    Table 4: Summary of NAT traversal in UDP
    WinStun Skype New method
    Symmetric NAT 33% 0% 100%
    All NATs 66% 46% 97%
    http://www.goto.info.waseda.ac.jp/~wei/file/wei-apan-v10.pdf
    и вообще в гугле куча ссылок на эту статью. странно что статья 2007го года но вот тангл хамачи скайп все равно долбатся постаринке об этот барьер и фейлятся.

    Пятница, Январь 10, 2014 at 19:44 | Permalink
  4. admin wrote:

    Насколько я понял японцы ошибаются насчет Random Symmetric NAT. Они пишут, что такой тип у Planex, но на рис 14 порты идут почти всегда в последовательности n-4. Я исследовал NAT мегафона, билайна и MTC — вот у них он реально рандом, порты менялись на десятки тысяч всегда по разному (за исключением билайна — у него был хитрый инкремент). Чтоб пробить дырку в таком НАТе нужно одновременно отправлять пакеты на десятки тысяч портов. Это конечно можно сделать, поставив TTL очень маленьким, но все-равно мне показалось это слишком.
    Кроме того они пишут, что определяют тип симметричного ната по двум пакетам на два внешних сервера S1 и S2, но определить, что он рандом в этом случае невозможно.
    PS: инкрементный симметричный NAT моя программа поддерживает 🙂

    Пятница, Январь 10, 2014 at 21:22 | Permalink
  5. dmitriy wrote:

    Доброе время суток…. Пытаюсь портировать сие чудо на OpenWrt. Чето не получается…. Вы это в VS 9 делали??? Может поможете на Linux перевести…

    Вторник, Декабрь 9, 2014 at 19:04 | Permalink
  6. admin wrote:

    У меня тоже назревает необходимость в портировании под linux и android. Думаю надо заменить библиотеку jabber на gloox и что-то кроссплатформенное для шифрования подобрать. Если у вас что-нить уже есть, то сообщите на kv58@bk.ru

    Воскресенье, Январь 18, 2015 at 22:22 | Permalink
  7. Nazikus wrote:

    Здравствуйте,

    Впервые попробовал запустить jabpunch, установил адаптер, установил сервис, добавил фаервол правило, изменил stun-сервер на stun.ideasip.com, и вот что в результате:

    07.01.2015 16:10:47,121 Program starting
    07.01.2015 16:10:48,460 Type of NAT: Fullcone NAT.
    07.01.2015 16:10:48,461 UserId: xxx@jabber.ru/xx.xx.xx.xx-RAKEL
    07.01.2015 16:10:48,677 Jabber connection established
    07.01.2015 16:10:48,824 Error during CryptStringToBinary! 13
    07.01.2015 16:10:48,826 Error during CryptStringToBinary! 13
    07.01.2015 16:10:48,828 Out of memory for decrypted.

    Среда, Январь 7, 2015 at 17:15 | Permalink
  8. Nazikus wrote:

    Поспешил, извините. Проблема была в непотвежденном jabber.ru акаунте.

    Среда, Январь 7, 2015 at 17:25 | Permalink
  9. m_boy wrote:

    Добрый день.
    Возможно ли добавить поддержку прокси сервера для установки соединения с jabber/stun сервером. Если, например, здесь соединение установится, то в openvpn поддержку прокси можно подключить из строки параметров, так ведь?

    Пятница, Ноябрь 6, 2015 at 00:08 | Permalink
  10. admin wrote:

    HTTP и SOCKS прокси работают по TCP. STUN работает по UDP и в случае с технологией UDP Hole punch, в качестве прокси (посредников) выступают устройства осуществляющие трансляцию адресов (NAT), т.е. можно сказать, что работа с прокси уже реализована.

    Пятница, Ноябрь 6, 2015 at 11:19 | Permalink
  11. denis wrote:

    Добрый день. Не удается подключиться. Вот такая ошибка:
    Type of NAT: Blocked.

    Подскажите пожалуйста, что делать.
    Заранее спасибо!

    Пятница, Ноябрь 27, 2015 at 14:43 | Permalink
  12. Misha wrote:

    Никто не знает в чем может быть проблема?

    03.03.2016 14:22:48,458 Settings Saved. Restarting connections
    03.03.2016 14:22:48,459 Stoping OpenVPN and udp-connections
    03.03.2016 14:22:48,460 Logout

    Во всех строках, кроме следующих — пусто:
    Jabber Status: Disconnected
    OpenVPN Status: Stopped

    Четверг, Март 3, 2016 at 16:29 | Permalink
  13. admin wrote:

    Что-то не так с jabber-сервером или настройками программы, имеющими отношение к jabber.

    Четверг, Март 3, 2016 at 16:35 | Permalink
  14. Fedor wrote:

    Подскажите при старте OpenVPN получаю ошибку.
    09.03.2016 20:54:57,270 Starting OpenVPN
    09.03.2016 20:54:57,335 OpenVPN:
    Options error: You must define TUN/TAP device (—dev)
    Use —help for more information.

    09.03.2016 20:54:57,335 OpenVPN Stopped

    Четверг, Март 10, 2016 at 00:02 | Permalink
  15. admin wrote:

    Нужно указать —dev tun1 в «OpenVPN Options» и проверьте, что виртуальный адаптер установлен.

    Четверг, Март 10, 2016 at 19:10 | Permalink
  16. Naruto wrote:

    Клёвая штука, пытаюсь на ней научиться кодить, и обходить нат. Прекрасно работает с jabber.ru, но к сожалению не коннектится к серверам google talk .

    Суббота, Февраль 17, 2018 at 05:32 | Permalink

Post a Comment

Your email is never published nor shared. Required fields are marked *
*
*