Есть ли способ использовать uPnp или что-то еще, чтобы автоматически попросить маршрутизатор / брандмауэр перенаправить данные, поступающие извне, на машину, на которой работает ubuntu?
Дело в том, что я должен подготовить определенное количество машин, которые будут действовать как киоски, и они будут отправлены за границу; те, кто их получают, должны просто подключить кабель переменного тока и локальной сети и ничего больше. Теперь мне понадобятся несколько открытых портов для управления этими машинами (ssh), и я не буду там настраивать их маршрутизаторы. Кто будет их подключать, тот окажется совершенно некомпетентным и захочет просто подключить их и быть готовым к работе.
Я мог бы также переформулировать вопрос следующим образом: когда я запускаю на нем демон no-ip, я хочу, чтобы ответила ЭТА машина, а не маршрутизатор.
Большое спасибо за терпение
Да, это именно то, для чего был разработан UPnP: клиентские устройства, запрашивающие переадресацию определенного порта у интернет-маршрутизатора. Однако вы не можете полагаться на маршрутизатор, поддерживающий и правильно настроенный для UPnP (и если вы также поставляете маршрутизатор, просто обязательно предварительно настройте его для своих нужд).
Для этого вы будете искать UPnP. клиент для Ubuntu; обычно Ubuntu используется как UPnP сервер при работе в качестве маршрутизатора для остальной сети (это сильно снизило качество моих результатов Google по этой теме). Однако UPnP - это, по сути, протокол обнаружения плюс веб-служба на основе SOAP; я нашел скрипт на Python для базового клиента / сервера SSDP (протокол обнаружения) вы можете адаптироваться, и работа с SOAP должна быть достаточно простой, если у вас есть голова для такого рода вещей. Существуют библиотеки SOAP, доступные для большинства языков сценариев.
Вы также можете найти UPnP Спецификация (1,1 МБ Adobe PDF) полезно.
Единственное другое решение, которое я могу придумать, - заставить киоск инициировать соединение; возможно, у вас может быть область киоск-приложения, которая позволяет сотрудникам в этом месте инициировать техническое соединение, в результате чего киоск связывается с вашим сервером. Если бы это был я, эта кнопка, вероятно, инициировала бы какое-то VPN-соединение (например, OpenVPN или L2TP / IPSec) с вашим сервером, устанавливая ссылку сетевого уровня, которую вы затем можете использовать для подключения к серверу любым способом, который вы считаете нужным. (Включение этой опции может даже потребовать ввода «кода поддержки», который на самом деле является только что измененным паролем пользователя VPN.) Недостатки этого решения включают постоянное установление VPN-соединения через киоск или его установку для заранее определенных окон «обслуживания» . Если вы выберете автоматический вариант, я настоятельно рекомендую раскрыть эту практику своим клиентам - они могут не одобрить эту идею, если они обнаружат ее позже (я знаю, что не стал бы!).