Обзор:
У меня есть устройство, которое находится в локальной сети на компьютере, который находится во внешней сети.Я хотел бы создать программу, которая позволяет без проблем подключаться к устройству с компьютера в другой сети.Для целей этого вопроса я создал картинку, которая поможет описать сетевой поток.Мне нужна помощь с тем, какие пакеты 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.
Вот изображение, которое помогает объяснить вышеуказанную проблему:
Решение:
То, что я хочукак следует.Мне нужна помощь с деталями и с какими пакетами мне может потребоваться, чтобы это произошло.
Часть 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.Я хотел бы видеть ссылки, указывающие на разные части решения, чтобы я мог собрать все это вместе.И тогда я могу опубликовать его.
Заранее спасибо!