Настройка кэширующего прокси сервера apt-cacher-ng для установки обновлений РЕДОС Linux в локальной сети
Для загрузки обновление в РЕДОС Linux по умолчанию используются сервера разработчика или зеркала Яндекса. Когда в сети насчитывается больше 10 ПК постоянная загрузка одних и тех же файлов может создавать значительный трафик до этих серверов.
Чтобы не загружать одни и те же файлы много раз, имеет смысл установить кэширующий прокси-сервер, созданный специально для загрузки и временного хранения метаданных репозиториев и файлов с пакетами.
Одним из популярных таких серверов является apt-cacher-ng. Изначально он создавался для работы с APT-репозиториями, но со временем его доработали, и он так же хорошо работает с RPM-репозиториями.
Все загружаемые файлы автоматически сохраняются в специальной папке на сервере. При следующем обращении, при условии, что файл не изменился, клиенту будет отдан уже загруженный файл, таким образом снижается нагрузка на канал провайдера сети Интернет и повышается скорость загрузки, так как внутри сети она всегда выше!
Установка apt-cacher-ng в РЕДОС linux
Установим пакет:
sudo dnf install apt-cacher-ngАктивируем автозапуск службы:
sudo systemctl status apt-cacher-ngЕсли используется межсетевой экран, обязательно разрешим доступ по порту:
sudo ufw allow 3142/tcpВключим службу:
sudo systemctl enable --now apt-cacher-ngЧтобы следить за процессом загрузки воспользуемся командой в консоли:
sudo tail -f /var/log/apt-cacher-ng/apt-cacher.logВ последующем, в нём будут появляться строки вида:
1770335215|I|2821|192.168.1.21|repo.red-soft.ru/redos/8.0/x86_64/os/repodata/repomd.xml
1770335215|O|2617|192.168.1.21|repo.red-soft.ru/redos/8.0/x86_64/os/repodata/repomd.xml
1770335239|I|614462|192.168.1.21|repo.red-soft.ru/redos/8.0/x86_64/os/repodata/269af7f579eea2bd2d741d0ad8d3c4276ac017c2b8cb6e7c15438c93e1a96f3f-comps.xml
1770335239|O|614316|192.168.1.21|repo.red-soft.ru/redos/8.0/x86_64/os/repodata/269af7f579eea2bd2d741d0ad8d3c4276ac017c2b8cb6e7c15438c93e1a96f3f-comps.xmlЗагруженные файлы будут размещены в папке с кэшем:
/var/cache/apt-cacher-ng/Настройка клиента
Для того, чтобы клиенты могли использовать прокси-сервер для загрузки обновлений, нам нужно указать указать адрес прокси-сервера в настройках утилиты dnf.
В файл
/etc/dnf/dnf.confДобавим строку:
proxy=http://192.168.1.4:3142Заменим:
192.168.1.4Где 192.168.1.4 адрес сервера на котором запущен apt-cacher-ng!
Для этого запустим:
echo -e "\nproxy=http://192.168.130.4:3142\n" | sudo tee -a /etc/dnf/dnf.confПомимо этого, внесем изменения в файлы с настройками репозиториев:
Откроем файл:
sudo mcedit /etc/yum.repos.d/RedOS-Base.repoЗаменим содержимое на:
[base]
name=RedOS - Base
baseurl=https://mirror.yandex.ru/redos/8.0/$basearch/os
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-RED-SOFT
enabled=1Откроем файл:
sudo mcedit /etc/yum.repos.d/RedOS-Updates.repoЗаменим содержимое на:
[updates]
name=RedOS - Updates
baseurl=https://mirror.yandex.ru/redos/8.0/$basearch/updates
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-RED-SOFT
enabled=1Запустим
sudo dnf updateЗагрузка зависнет или выдаст ошибку:
RedOS - Base 0.0 B/s | 0 B 00:00
Errors during downloading metadata for repository 'base':
- Curl error (56): Failure when receiving data from the peer for https://mirror.yandex.ru/redos/8.0/x86_64/os/repodata/repomd.xml [CONNECT tunnel failed, response 403]
Error: Не удалось загрузить метаданные для репозитория «base»: Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried
RedOS - Updates 0.0 B/s | 0 B 00:00
Errors during downloading metadata for repository 'updates':
- Curl error (56): Failure when receiving data from the peer for https://mirror.yandex.ru/redos/8.0/x86_64/updates/repodata/repomd.xml [CONNECT tunnel failed, response 403]
Error: Не удалось загрузить метаданные для репозитория «updates»: Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried
Игнорируются репозитории: base, updates
Зависимости разрешены.
Отсутствуют действия для выполнения.
Выполнено!Прокси сервер не смог выполнить запрос, так как для использования HTTPS нужна дополнительная настройка сервера apt-cacher-ng с указанием сертификатов.
Внутри сети мы будем использовать http, так как пакеты и так уже подписаны GPG и их модификация исключена.
Используем протокол HTTP для загрузки обновлений через apt-cacher-ng
Откроем файл:
sudo mcedit /etc/yum.repos.d/RedOS-Base.repoЗаменим содержимое на:
[base]
name=RedOS - Base
baseurl=http://mirror.yandex.ru/redos/8.0/$basearch/os
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-RED-SOFT
enabled=1
Откроем файл:
sudo mcedit /etc/yum.repos.d/RedOS-Updates.repoЗаменим содержимое на:
[updates]
name=RedOS - Updates
baseurl=http://mirror.yandex.ru/redos/8.0/$basearch/updates
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-RED-SOFT
enabled=1Мы изменили протокол на http://
Перезапустим службу:
sudo systemctl restart apt-cacher-ngЗапустим на сервере apt-cacher-ng:
sudo tail -f /var/log/apt-cacher-ng/apt-cacher.logЗапустим на клиенте:
sudo dnf updateРезультат:
1770348180|I|614632|192.168.1.21|mirror.yandex.ru/redos/8.0/x86_64/os/repodata/269af7f579eea2bd2d741d0ad8d3c4276ac017c2b8cb6e7c15438c93e1a96f3f-comps.xml
1770348180|O|614316|192.168.1.21|mirror.yandex.ru/redos/8.0/x86_64/os/repodata/269af7f579eea2bd2d741d0ad8d3c4276ac017c2b8cb6e7c15438c93e1a96f3f-comps.xml
1770348220|I|17174609|192.168.1.21|mirror.yandex.ru/redos/8.0/x86_64/os/repodata/4f44a969e75281a6e25cb775eb1c407132fe50ecbb52780a6896a6c7036eb9a8-primary.xml.zst
1770348220|O|17174291|192.168.1.21|mirror.yandex.ru/redos/8.0/x86_64/os/repodata/4f44a969e75281a6e25cb775eb1c407132fe50ecbb52780a6896a6c7036eb9a8-primary.xml.zstНа этот раз загрузка обновлений произойдет без проблем.
Будет создана папка:
/var/cache/apt-cacher-ng/mirror.yandex.ruС загруженными файлами.
sudo dnf updateНачнется обновление
Настройка apt-cacher-ng для загрузки обновлений по HTTPS
В настоящее время в сети Интернет повсеместно используется протокол HTTPS. Возможно и в вашей локальной сети существует требование загрузки обновлений только по протоколу HTTPS. В таком случае нам потребуется дополнительная настройка сервера и клиента.
На сервере apt-cacher-ng создадим файл
/etc/apt-cacher-ng/backends_yandexС содержимым:
https://mirror.yandex.ru/redos/8.0/x86_64Для этого запустим:
echo "https://mirror.yandex.ru/redos/8.0/x86_64" | sudo tee /etc/apt-cacher-ng/backends_yandexВ файл:
/etc/apt-cacher-ng/acng.confДобавим строку:
Remap-mirror-yandex: http://m.ya.ru ; file:backends_yandexДля этого запустим:
echo -e "\nRemap-mirror-yandex: http://m.ya.ru ; file:backends_yandex\n" | tee -a /etc/apt-cacher-ng/acng.confПерезапустим службу:
sudo systemctl restart apt-cacher-ngНастройка клиента для обновления по протоколу HTTPS
На клиентском ПК изменим файлы c настройками репозиториев.
Откроем файл:
sudo mcedit /etc/yum.repos.d/RedOS-Base.repoЗаменим содержимое на:
[base]
name=RedOS - Base
baseurl=http://mos.ya.ru
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-RED-SOFT
enabled=1Откроем файл:
sudo mcedit /etc/yum.repos.d/RedOS-Updates.repoЗаменим содержимое на:
[updates]
name=RedOS - Updates
baseurl=http://mup.ya.ru
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-RED-SOFT
enabled=1Запустим обновление:
sudo dnf updateОбновление будет произведено.
Заключение
Дело в том
Использование apt-cacher-ng как прокси сервера
В конец файла
sudo mcedit /etc/apt-cacher-ng/acng.conf
PassThroughPattern: mirror\.yandex\.ru:443$
Перезапустим службу
sudo systemctl restart apt-cacher-ng
(65-66/292): avahi-libs-0.8-21.red80.x86_64.rpm 32% [=============================== ] 4.6 MB/s | 152 MB 01:09 ETA
Загруженные пакеты были сохранены в кэше до следующей успешной транзакции.
Вы можете удалить кэшированные пакеты, выполнив «dnf clean packages».
Ошибка: Ошибка при загрузке пакетов:
avahi-glib-0.8-21.red80.x86_64: Cannot download, all mirrors were already tried without success
Добавить комментарий