PermLUG |
Пермская группа пользователей Linux |
|
ОблакоВход в систему |
Создаём кэш пакетов для локальной сети
Grifon, 04.03.2009 — 20:52
Создаём кэш пакетов для локальной сети. Не знаю, много ли найдётся здесь людей, которые бы имели дело с локальной сетью, построенной на рабочих станциях с Linux, но думаю, эта проблема всё равно многих затрагивает. Цель этого мануала - держать несколько рабочих станций обновлёнными и тратить при этом минимум трафика и времени. Моим опорным дистрибутивом будет OpenSUSE 11.1, так что если кто-либо решит эту задачу для другого дистрибутива, я готов расширить статью его авторством. Всем известно, что отрытое программное обеспечение обновляется часто. Причиной этому служат улучшения, исправления в работе и безопасности и т.п., так что лучше держать софт в актуальном состоянии. Решать эту проблему можно разными способами:
Первый способ наиболее лёгок, поскольку все настройки заданы заранее, но при наличии нескольких установок, каждая будет скачивать одно и то же снова и снова. Второй способ прост, по скольку выкачивается и синхронизируется репозиторий на сервере, а клиенты уже могут устанавливать софт с него. Требуется начальная настройка сервера и много трафика. Я не буду этого делать, поскольку не использую все программы. Остановлюсь на последнем пункте. Политика будет такой: имеется сервер nfs. Создаём на нём каталог, доступный для чтения/записи с локальным машин. Они подключают его на месте хранения кэша. На всех машинах настраиваются одинаковые репозитарии с одинаковыми названиями. После этого, стоит только установить программу на одном компьютере, пакет сохраняется в кэш и лежит там, всем доступный. Что мы имеем:
Везде OpenSUSE 11.1 Краткая справка по zypper В OpenSUSE есть отличнейший инструмент управления ПО - zypper. Его настройки лежат в /etc/zypp, кэш по умолчанию в /var/cache/zypp а пакеты складируются в /var/cache/zypp/packages. Вот последний нам и нужен. У этого иструмента есть свои встроенные команды (полный список во встроенной справке): команда | сокращение | описание repos | lr | список репозитариев addrepo | ar | добавить репозитарий removerepo | rr | удалить репозитарий modifyrepo | mr | изменить репозитарий install | in | установить пакет Теперь практика (для справки):
(1) zypper mr -k --all включает кэш всех репозитариев
(2) zypper mr -K openSUSE_11.1-0 отключает кэш для репозитария
на диске. И правильно, с него мы не будем
сохранять кэш (но, в принципе, тоже можно)
Включаем на сервере кэширование пакетов командой (1). Устанавливаем на server службу nfs: linux-4ut6:~ # zypper in nfs-utils Loading repository data... Reading installed packages... Resolving package dependencies... The following NEW package is going to be installed: nfs-kernel-server Overall download size: 93.0 K. After the operation, additional 214.0 K will be used. Continue? [YES/no]: Retrieving package nfs-kernel-server-1.1.3-18.1.1.i586 (1/1), 93.0 K (214.0 K unpacked) Retrieving: nfs-kernel-server-1.1.3-18.1.1.i586.rpm [done] Installing: nfs-kernel-server-1.1.3-18.1.1 [done] Добавляем строку в /etc/exports: /var/cache/zypp/packages 192.168.0.0/24(rw,no_root_squash) Запускаем nfs:
linux-4ut6:~ # service nfsserver start
Starting kernel based NFS server:
idmapdexportfs: /etc/exports [1]: Neither 'subtree_check'
or 'no_subtree_check' specified for export
"192.168.0.0/24:/var/cache/zypp/packages".
Assuming default behaviour ('no_subtree_check')
NOTE: this default has changed since nfs-utils version 1.0.x
mountd statd nfsd sm-notify done
Если это прошло успешно, то получится такой результат: linux-4ut6:~ # showmount -e Export list for linux-4ut6: /var/cache/zypp/packages 192.168.0.0/24 Для более подробной информации, советую обратиться к справке по nfs. Далее. На рабочих станциях монтируем сетевой каталог: mount 192.168.0.1:/var/cache/zypp/packages /var/cache/zypp/packages При необходимости, можно добавить его монтирование при загрузке: echo '192.168.0.1:/var/cache/zypp/packages \ /var/cache/zypp/packages nfs defaults,rw 0 0' \ >> /etc/fstab В том случае, когда монтирование не прошло успешно, возможно, что на сервере запущен фаервол. Самый простой способ - это его отключить: service SuSEfirewall2_setup stop Теперь можно пытаться подключить каталог снова. Если мы хотим, чтобы у всех были одинаковые репозитарии, можно сделать следующее: zypper lr -e myrepos.repo А на других импортировать, перенеся файл myrepos.repo на них: zypper ar myrepos.repo Включаем так же для них кэш командой (1). Мы закончили. Теперь вы сохрание установочные пакеты в одном месте для всех машин, ставили ли вы их с помощью zypper, yast2 или апплета обновлений. |
Новые записи в блогах
Активные обсуждения форума
Новости Linux
|
| Пермская группа пользователей Linux, 2003—2010 | ||
Спасибо!
Интересует вопрос безопасности.
Если доступ к nfs будет на запись, то злоумышленник может подменить пакет и интегрировать rootkit?
Возможна ли реализация следующим образом:
1. Host шлет запрос на локальный сервер на получение пакета.
2. Локальный сервер проверяет наличие пакета у себя.
3. При наличии отдает, при отсуствии качает из Интеренета.
З.Ы. Также важно соблюдение версий и наличие более новых.
Согласен, с безопасностью не всё гладко, но проблемы подмены пакета нет, потому что они подписаны, а подпись не хранится в rw