Когда сегодня скорость передачи данных и обычные скорости интернета измеряются в десятках гигабайт за мгновение даже для обычных интернет-клиентов, вы можете спросить: “Какова цель установки локального кэша репозитория в ЛВС?”

Одной из причин является сокращение интернет-пропускной способности и высокая скорость загрузки пакетов из локального кэша. Но еще одной основной причиной должна быть конфиденциальность. Представьте себе, что клиенты вашей организации ограничены в доступе к Интернету, но их Linux-системам необходимы регулярные обновления системного программного обеспечения и безопасности, или просто требуются новые программные пакеты. Для упрощения представления, сервер, работающий в частной сети, содержит и предоставляет секретную конфиденциальную информацию только для ограниченного сегмента сети и быть никогда не должен быть подвергнут публичному интернету.
Это лишь несколько причин, почему вам следует создать локальное зеркало репозитория в вашей ЛВС, назначить краевой сервер для этой задачи и настроить внутренних клиентов для загрузки программного обеспечения из его зеркального кэша.
Ubuntu предоставляет пакет apt-mirror для синхронизации локального кэша с официальными репозиториями Ubuntu, зеркало, которое можно настроить через HTTP или FTP сервер для обмена своими программными пакетами с локальными клиентами системы.
Для полного кэша зеркала вашему серверу требуется как минимум 120G свободного места, зарезервированного для локальных репозиториев.
Требования
- Минимум 120G свободного места
- Установленный и настроенный сервер Proftpd в анонимном режиме.
Шаг 1: Настройка сервера
1. Первое, что вам может захотеться сделать, это определить ближайшие и самые быстрые зеркала Ubuntu поблизости от вашего местоположения, посетив страницу Зеркало архива Ubuntu и выбрав страну.

Если ваша страна предоставляет несколько зеркал, вам следует определить адрес зеркала и выполнить некоторые тесты на основе результатов ping или traceroute.

2. Следующим шагом будет установка необходимого программного обеспечения для настройки локального зеркала репозитория. Установите пакеты apt-mirror и proftpd и настройте proftpd как демон автономной системы.
$ sudo apt-get install apt-mirror proftpd-basic


3. Теперь пришло время настроить сервер apt-mirror. Откройте и отредактируйте файл /etc/apt/mirror.list, добавив ваши ближайшие местоположения (Шаг 1) – необязательно, если стандартные зеркала достаточно быстрые или вам не торопиться – и выберите путь в вашей системе, куда должны быть загружены пакеты. По умолчанию apt-mirror использует местоположение локального кэша /var/spool/apt-mirror, но в этом учебнике мы собираемся использовать измененный путь системы и указать директиву set base_path на местоположение /opt/apt-mirror.
$ sudo nano /etc/apt/mirror.list

Также вы можете раскомментировать или добавить другие исходные списки перед директивой clean – включая исходные списки Debian – в зависимости от того, какие версии Ubuntu используют ваши клиенты. Вы можете добавить источники из 12.04, если хотите, но имейте в виду, что добавление дополнительных источников требует больше свободного места.
Для списков исходных файлов Debian посетите вики Debian или генератор списка исходных файлов Debian.
4. Все, что вам нужно сделать сейчас, – просто создать путь каталога и выполнить команду apt-mirror для синхронизации официальных репозиториев Ubuntu с нашим локальным зеркалом.
$ sudo mkdir -p /opt/apt-mirror $ sudo apt-mirror

Как видите, apt-mirror продолжает с индексацией и загрузкой архивов, представляя общее количество загруженных пакетов и их размер. Как мы можем представить, 110–120 ГБ достаточно большой объем, чтобы потребовалось некоторое время для загрузки.
Вы можете выполнить команду ls, чтобы просмотреть содержимое каталога.

После завершения первоначальной загрузки будущие загрузки будут маленькими.
5. Пока apt-mirror загружает пакеты, вы можете настроить свой сервер Proftpd. Первое, что вам нужно сделать, это создать конфигурационный файл без учетной записи для proftpd, запустив следующую команду.
$ sudo nano /etc/proftpd/conf.d/anonymous.conf
Затем добавьте следующее содержимое в файл anonymous.conf и перезапустите службу proftd.
<Anonymous ~ftp> User ftp Group nogroup UserAlias anonymous ftp RequireValidShell off # MaxClients 10 <Directory *> <Limit WRITE> DenyAll </Limit> </Directory> </Anonymous>

6. Следующим шагом является привязка пути apt-mirror к пути proftpd путем выполнения привязочного монтирования, выполнив команду.
$ sudo mount --bind /opt/apt-mirror/mirror/archive.ubuntu.com/ /srv/ftp/

Чтобы проверить это, выполните команду mount без параметров или опций.
$ mount

7. Последним шагом является убедиться, что сервер Proftpd автоматически запускается после перезагрузки системы и директория mirror-cache также автоматически монтируется на пути FTP-сервера. Для автоматического включения proftpd выполните следующую команду.
$ sudo update-rc.d proftpd enable
Чтобы автоматически монтировать кэш apt-mirror на proftpd, откройте и отредактируйте файл /etc/rc.local.
$ sudo nano /etc/rc.local
Добавьте следующую строку перед директивой exit 0. Также используйте задержку 5 секунд перед попыткой монтирования.
sleep 5 sudo mount --bind /opt/apt-mirror/mirror/archive.ubuntu.com/ /srv/ftp/

Если вы загружаете пакеты из репозиториев Debian, выполните следующие команды и убедитесь, что соответствующие настройки для файла rc.local активированы.
$ sudo mkdir /srv/ftp/debian $ sudo mount --bind /opt/apt-mirror/mirror/ftp.us.debian.org/debian/ /srv/ftp/debian/

8. Для ежедневной синхронизации apt-mirror вы также можете создать задание системного расписания, которое будет выполняться в 2 часа ночи каждый день. Запустите команду crontab, выберите предпочтительный редактор, затем добавьте следующий синтаксис строки.
$ sudo crontab –e

На последней строке добавьте следующую строку.
0 2 * * * /usr/bin/apt-mirror >> /opt/apt-mirror/mirror/archive.ubuntu.com/ubuntu/apt-mirror.log

Теперь каждый день в 2 часа ночи ваш кэш репозитория системы будет синхронизироваться с официальными зеркалами Ubuntu и создавать файл журнала.
Шаг 2: Настройка клиентов
9. Чтобы настроить локальных клиентов Ubuntu, отредактируйте файл /etc/apt/source.list на клиентских компьютерах, указав IP-адрес или имя хоста сервера apt-mirror – замените протокол http на ftp, затем обновите систему.
deb ftp://192.168.1.13/ubuntu trusty universe deb ftp://192.168.1.13/ubuntu trusty main restricted deb ftp://192.168.1.13/ubuntu trusty-updates main restricted ## Ad so on….

10. Чтобы просмотреть репозитории, фактически вы можете открыть браузер и указать IP-адрес сервера или его доменное имя, используя протокол FTP.

Та же система также применяется к клиентам и серверам Debian, единственное изменение, которое требуется, – это зеркало Debian и список источников.
Также, если вы устанавливаете свежую систему Ubuntu или Debian, укажите ваше локальное зеркало вручную с протоколом ftp, когда установщик спрашивает, какой репозиторий использовать.
Замечательно то, что у вас есть собственные локальные зеркала репозиториев, в том, что вы всегда находитесь в актуальном состоянии, и ваши локальные клиенты не должны подключаться к Интернету для установки обновлений или программного обеспечения.
Source:
https://www.tecmint.com/setup-local-repositories-in-ubuntu/