Офлайн-пакеты VPN: спросите у целевой машины, что ей нужно
Пусть отключённая машина сама опишет свой набор зависимостей. Два рейса туда и обратно, запрос, затем импорт, и следом транзакция APT, которую вам всё равно выполнять.
Клиенту VPN нужен доступ к сети, которая обычно поставляет его пакеты, и это получается аккуратный замкнутый круг. Загрузка одного DEB OpenVPN на другой машине обычно заканчивается второй недостающей зависимостью, потом третьей, а потом вечером, потраченным на поиски версий библиотек. Альтернатива — позволить отключённой машине самой, на её собственном языке, сказать, что нужно её менеджеру пакетов. Всё дальнейшее следует из этой перемены того, кто спрашивает.
В системах семейства Debian этот разговор идёт через apt-offline, рабочий процесс «запрос и возврат». Его собственный рантайм должен сначала присутствовать на целевой машине, установленный с одобренного носителя или другим загрузчиком, которым управляет администратор, потому что ни один инструмент не может поднять себя из ничего.
Начинайте с состояния пакетов целевой машины, а не вспомогательной
До всего остального зафиксируйте выпуск дистрибутива, архитектуру пользовательского пространства и настроенные источники пакетов целевой машины. Эти три факта решают, какая реализация VPN и какая интеграция с рабочим столом уместны, и это факты, которые подключённый помощник предоставить не может.
Помощник скачивает файлы; он не становится базой зависимостей. Более новый ноутбук, где OpenVPN уже установлен, имеет совершенно иное состояние пакетов, чем целевая машина, поэтому его успех ничего не доказывает о том, что целевая машина способна принять.
Определите и то, что вам действительно нужно. Движок VPN, плагин службы NetworkManager и графический редактор — это отдельные пакеты, и правильный выбор зависит от выпуска и от того, как пользователь будет управлять подключением. Серверу без графики нужен движок и файл конфигурации; рабочему столу нужен плагин, который позволяет его сетевым настройкам владеть туннелем. Запрос неправильного набора даёт установку, которая проходит успешно, и подключение, которое никто не может запустить.
Два рейса, именно в этом порядке
Руководство разделяет три операции: сформировать запрос на отключённой системе, скачать на подключённом помощнике, импортировать обратно на цели. Обновите метаданные репозитория цели перед запросом пакетов, потому что запрос пакетов строится из этих метаданных, а устаревшие индексы дают запросы, которые помощник не сможет удовлетворить.
На целевой машине команда администратора вида apt-offline set vpn-meta.sig --update записывает запрос на обновление. Перенесите этот файл на подключённую машину и скачайте набор с помощью apt-offline get vpn-meta.sig --bundle vpn-meta.zip. Верните набор и импортируйте его на цели с помощью apt-offline install vpn-meta.zip, снова как администратор.
Теперь сформируйте запрос пакетов из обновлённых метаданных, например apt-offline set vpn-deps.sig --install-packages openvpn, и повторите рейс с новым именем набора. Держите каждый запрос в паре с набором, который он породил; набор, собранный по старым метаданным, — это уже не тот же запрос, даже если имена файлов выглядят взаимозаменяемыми.
Добавляйте пакеты интеграции только тогда, когда этого требует замысел
Если рабочий стол должен управлять туннелем через свои сетевые настройки, запросу нужен подходящий плагин, а не только движок. Включайте конкретные имена пакетов, которые предлагает ваш выпуск, а не список, запомненный из другого дистрибутива, и формируйте новый запрос всякий раз, когда список меняется. Закрепление версий тоже заслуживает мысли: пакет, собранный для более нового выпуска, может удовлетворить имени и всё равно отказать при запуске. Именно здесь фиксированный набор из четырёх пакетов становится обузой, потому что правильный список — свойство целевой машины, и вычислить его может только она.
Здесь же фиксированный набор из четырёх пакетов становится обузой. Правильный список — свойство целевой машины, и только целевая машина способна вычислить его верно.
Импорт набора — это не установка VPN
Несмотря на название, операция установки лишь помещает данные APT в среду управления пакетами. Она не выполняет транзакцию пакетов. Завершите и проверьте фактические действия APT на цели по локально доставленным данным, и читайте вывод, а не предполагайте, что успех ZIP означает наличие программы.
Если эта транзакция всё ещё просит недоступные файлы, сохраните конкретную недостающую зависимость или ошибку репозитория и сформируйте из неё следующий запрос. Не подменяйте DEB из другого выпуска и не отключайте проверку контрольных сумм или аутентификацию репозитория, чтобы протолкнуть его силой. Руководство прямо предостерегает от пропуска проверки скачанных файлов, и справедливо: непроверенный пакет — худший исход, чем неудачная установка.
Пакеты — это только первая половина
Установка программы отделена от получения одобренной конечной точки, профиля, доверенных материалов и учётных данных, у каждого из которых может быть своя контролируемая передача. Рабочий набор пакетов без действительного профиля ни к чему не подключается.
Затем поддерживайте офлайн-канал передачи для будущих обновлений. Если считать первое успешное подключение концом обслуживания, следующее обновление безопасности будет ждать, пока кто-нибудь с машиной сможет приехать, и именно так офлайн-сеть тихо отстаёт на годы.