Как мне настроить python, telnet proxy для устройства в другой сети через SSH? - PullRequest
2 голосов
/ 02 декабря 2011

Обзор:

У меня есть устройство, которое находится в локальной сети на компьютере, который находится во внешней сети.Я хотел бы создать программу, которая позволяет без проблем подключаться к устройству с компьютера в другой сети.Для целей этого вопроса я создал картинку, которая поможет описать сетевой поток.Мне нужна помощь с тем, какие пакеты Python мне понадобятся для разработки решения этой проблемы.

Подробности:

У меня есть компьютер MYPC (IP-адрес 192.168.0.168), который подключен кИнтернет работает через прокси-сервер (ROUTER1).У меня есть полный контроль над средой MYPC, на которой работает Linux.

У меня есть второй компьютер SOMESERVER (IP-адрес 192.168.1.168), который подключен к Интернету через прокси-сервер (ROUTER2).Кроме того, SOMESERVER (IP-адрес 10.0.0.159) также подключен к локальной сети (LOCAL).SOMESERVER работает под управлением Windows.У меня очень ограниченный контроль над SOMESERVER: я могу отправить исполняемый файл в SOMESERVER, который может быть запущен один раз, прежде чем он будет удален.Первоначально я не знаю IP-адреса интернета / мира ROUTER2.

У меня есть устройство (DEVICE1), подключенное к SOMESERVER через LOCAL (IP-адрес: 10.0.0.157).У меня есть другое устройство (DEVICE2), подключенное к SOMESERVER через LOCAL (IP-адрес: 10.0.0.158).УСТРОЙСТВО (x) запускает Linux.У меня есть python на DEVICE (x), и я мог бы установить чистый пакет python, если бы мне было нужно.Однако у меня нет возможности компилировать для DEVICE (x).

Я могу соединиться между SOMESERVER и MYPC через Интернет, используя SSH через ROUTER1 и ROUTER2.Я могу подключиться между SOMESERVER и DEVICE1 через локальную сеть (LOCAL), используя Telnet.Я могу подключиться между SOMESERVER и DEVICE2 через локальную сеть (LOCAL) с помощью Telnet.

Я хочу отправить программу на SOMESERVER, которая позволит мне беспрепятственный доступ через SSH и Telnet к DEVICE1 и DEVICE2 из MYPC.Кроме того, я хочу, чтобы эта программа работала с python.

Вот изображение, которое помогает объяснить вышеуказанную проблему: Visual Explanation of the Problem

Решение:

То, что я хочукак следует.Мне нужна помощь с деталями и с какими пакетами мне может потребоваться, чтобы это произошло.

Часть 1. Клиент и сервер Dial Home

Создание серверной программы «Dial Home» (DIAL_HOME_SERVER) дляMYPC, который прослушивает любой набор номера дома, а затем "наберет" любой SOMESERVER, который "набирает номер" с использованием SSH.

Создайте клиентскую программу "dial home" (DIAL_HOME_CLIENT) для SOMESERVER, которая загружается как частьпакет

Часть 2. Прокси-сервер

Создание программы прокси-сервера ssh-telnet (PROXY_SERVER) для SOMESERVER, которая прослушивает соединения из MYPC и направляет их в соединение telnet с DEVICE (x).

Благодаря Грегу Хьюгиллу звучит так, будто я могу использовать Paramiko , чтобы собрать код PROXY_SERVER на SOMESERVER.Похоже, что Paramiko также требуется PyCryto , и двоичный файл Windows для него можно найти здесь .

Future Robustness

В будущем,telnet-соединение будет заменено SSH-клиентом (dropbox на DEVICE (x)).

При закрытии

Я думаю, что вышеизложенное позволит MYPC подключаться «без проблем», но деталикак собрать эти программы мне неизвестно.Я уже знаю, как упаковать программу на python, используя Innosetup и / или py2exe.Я хотел бы видеть ссылки, указывающие на разные части решения, чтобы я мог собрать все это вместе.И тогда я могу опубликовать его.

Заранее спасибо!

1 Ответ

0 голосов
/ 02 декабря 2011

Я должен признать, что я не совсем следовал всему вашему описанию, особенно клиент / серверная часть "dial home". Тем не менее, ваша диаграмма кажется достаточной для понимания.

  1. Настройте переадресацию портов на «router2», который перенаправляет входящий SSH-порт на ваш сервер Windows.
  2. Напишите программу на Python (вы, вероятно, найдете paramiko полезной), которая работает на вашем сервере Windows, прослушивает SSH-соединения и открывает telnet-соединение с одним из ваших устройств на заднем конце.

Мне кажется, этого достаточно. Если у вас есть странные ограничения на сервере Windows в отношении возможности запускать исполняемый файл только один раз, прежде чем он будет удален, то это похоже на еще одну проблему, которую нужно решить, которая на самом деле не связана с этой проблемой туннелирования.

...