В Ubuntu Touch два вопроса задают как один: запустится ли этот пакет для рабочего стола и получит ли телефон VPN. Контейнер отвечает на первый. Ничто в нём не отвечает на второй, потому что у контейнера свой взгляд на файловую систему, а сетевой стек и его политика принадлежат телефону. Проследите, где живёт каждая часть, прежде чем обещать рабочий процесс.

Два вопроса, которые выглядят как один

Запуск приложения для рабочего стола в контейнере — достижение упаковки. Заставить менеджер соединений телефона установить туннель, удержать его через сон и решить, что происходит при обрыве, — это работа платформы. Установщик, который завершается внутри контейнера, доказывает лишь то, что зависимости там разрешились. Он ничего не говорит о том, есть ли у телефона одобренный плагин VPN, переживёт ли туннель перезагрузку и какие приложения им пользуются.

Держите эти две вещи в отдельных предложениях в любой оценке. Их слияние — это путь, которым лабораторная демонстрация превращается в обязательство поддержки, которое никто не может выполнить.

Что на самом деле даёт граница контейнера

Контейнер Libertine — это записываемая среда, наложенная на телефон, базовая система которого доступна только для чтения. Поэтому установка пакета там вообще работает и поэтому та же установка в базовой системе не работает. Он также запускает приложения на переднем плане, интегрированными с экраном телефона, и явно не является способом запускать серверное программное обеспечение или держать процесс живым в фоне. Эти ограничения важны для клиента VPN, который должен оставаться включённым.

libertine-container-manager list
libertine-container-manager info -i <container-id>
libertine-launch -i <container-id> bash

Список показывает, какие контейнеры существуют, а команда info сообщает дистрибутив и состояние установки. Команда launch даёт вам оболочку внутри, и это правильное место, чтобы проверить, что пакет действительно установил. Чего она не даёт, так это власти над сетью телефона. Бинарный файл внутри контейнера, который хочет создать туннель, нуждается в привилегированном интерфейсе, а этот интерфейс принадлежит платформе, а не контейнеру.

Где живёт сетевое состояние телефона

Имена, маршруты и профили соединений управляются сетевой службой телефона, вне любого контейнера. Запись туннеля появляется там только тогда, когда платформа поддерживает этот тип VPN и оператор установил соответствующий плагин.

nmcli connection show
ip route get 10.42.0.10
ip -br addr show

Список соединений — авторитетный ответ на вопрос, есть ли на этом телефоне профиль VPN. Если вашего туннеля нет в этом списке, никакая работа внутри контейнера не заставит его появиться. Поиск маршрута отвечает на более узкий вопрос: какой интерфейс этот телефон использовал бы для одного назначения. Именно эту проверку нужно повторять после любого изменения, потому что профиль может существовать и всё же не быть путём, которым идёт данное приложение.

Прочитайте один рабочий процесс от начала до конца

Выберите реальную задачу, например доступ к частной базе данных с клиентом для рабочего стола. Затем проследите поток: приложение стартует в контейнере, разрешает имя хоста через любой резолвер, который использует телефон, открывает сокет, и маршрутизация телефона решает, какой интерфейс его понесёт. У каждого шага есть владелец. Контейнер владеет приложением, платформа владеет резолвером и маршрутизацией, а конечная точка VPN владеет аутентификацией. Сбой на любом шаге — это сбой этого шага, а не всей идеи.

Проверяйте частное имя хоста и частный адрес по отдельности. Имя, которое разрешается в публичный адрес, и адрес, который маршрутизируется в туннель, — это разные наблюдения, и их смешение даёт отчёт, который невозможно воспроизвести.

Что записать, когда ответ — нет

Иногда честный вывод состоит в том, что этот телефон в этом выпуске не может нести рабочий процесс. Запишите это с доказательствами: какие типы соединений предлагает платформа, какие клиенты были опробованы и на каком шаге произошёл сбой.

Затем укажите принятую альтернативу: другое устройство, другой способ доступа или более узкая задача, которая остаётся внутри контейнера, не касаясь частных сетей.

Сопротивляйтесь искушению снова смонтировать базовую систему или выдать необъяснённые привилегии, чтобы воспроизвести старый рецепт. Телефон, который загружается, — это не то же самое, что телефон, о сетевой политике которого вы всё ещё можете рассуждать полгода спустя.

Похожие статьи