Лучший способ кэширования подходящих загрузок в локальной сети?

Нажмите Ctrl kbd> + Alt kbd> + F1 kbd>, затем войдите в систему и выполните следующую команду:

sudo chown -R user:user /home/user/.*

Где user - ваше имя пользователя, например qasim:qasim.

Дополнительную информацию можно найти здесь:

152
задан 15.05.2020, 19:48

5 ответов

Я провел некоторое исследование по ряду решений, и некоторые разработчики Ubuntu придумали конфигурацию прокси (на основе Squid) для 10.04 и позже. Это называется squid-deb-proxy. Это только требует, чтобы машина действовала как сервер. Крупные организации обычно используют собственные полные зеркала, но для большинства людей достаточно зеркалирования по требованию.

Почему squid-deb-proxy?

  • Нет редактирования файлов на стороне клиента.
  • Используйте zeroconf, чтобы клиенты были «нулевыми»
  • Используйте существующее твердое решение для прокси вместо написания нового инструмента.
  • Легко настроить для типичного администратора Linux.

Конфигурация сервера

На компьютере, на котором вы хотите действовать как сервер, установите инструмент с:

sudo apt-get install squid-deb-proxy avahi-utils

Теперь запустите служебные биты:

 sudo start squid-deb-proxy

И биты avahi (вам это не нужно, если вы на 12.04+):

 sudo start squid-deb-proxy-avahi

Это установит прокси-сервер (который прослушивает порт 8000). по умолчанию) и инструменты avahi, необходимые серверу для рекламы себя в сети через zeroconf.

Client Config

На на каждом из компьютеров , для которого вы хотите использовать кеш (клиенты и сам сервер, чтобы он тоже мог использовать кеш), вы Нужно установить клиентский инструмент, который позволит автоматически искать сервер, попросите его щелкнуть здесь:

Install via the software center

или через командную строку:

sudo apt-get install squid-deb-proxy-client

Необязательно : для максимальной эффективности вы должны настроить одну машину на автоматическую загрузку обновлений, чтобы, когда она понадобилась другим вашим машинам, она уже находилась в кэше. Вы можете сделать это, зайдя в «Система-> Администрирование-> Диспетчер обновлений», затем нажмите кнопку «Настройки ...», на вкладке «Обновление» установите его для автоматической загрузки всех обновлений.

alt text

Кэширование сторонних источников

По умолчанию кэш настроен на кэширование только официальных репозиториев Ubuntu. Чтобы добавить больше, вам нужно добавить их в список источников на /etc/squid-deb-proxy/mirror-dstdomain.acl. Здесь вы можете добавить ppa.launchpad.net или другие сервисы, которые вы можете использовать. После внесения изменений в этот файл вы должны запустить sudo restart squid-deb-proxy, чтобы изменения вступили в силу.

Ручная настройка

Если по какой-то причине вы не хотите использовать zeroconf (по сетевым причинам или что-то еще), вы можете вручную настроить клиент для использования прокси, отредактировав /etc/apt/apt.conf и добавив следующий раздел (замените 0.0.0.0 на IP-адрес сервера):

 Acquire { 
   Retries "0"; 
   HTTP { Proxy "http://0.0.0.0:8000"; };
 };

Брандмауэр

Если вы используете брандмауэр, avahi использует 5353 по адресам 224.0. 0.0 / 4 и требует правила, которое выглядит следующим образом:

# Specifically port 5353 which avahi uses
-A INPUT -i eth2 -d 224.0.0.0/4 --dport 5353 -j ACCEPT

# OR

# Wide open so all local broadcasting works
-A INPUT -i eth2 -d 224.0.0.0/4 -j ACCEPT

Далее необходимо открыть TCP-порт 8000 для фактического обмена данными через прокси. Что-то более или менее подобное:

-A INPUT -i eth2 -p tcp -m tcp --dport 8000 -d 192.168.0.1 -s 192.168.0.0/24 --syn -j ACCEPT

Эти правила только для того, чтобы помочь вам. Они, вероятно, не будут соответствовать вашим настройкам один на один. (т.е. неправильный интерфейс, неправильные IP-адреса в частной сети и т. д.)

Подтверждение его работоспособности

Сначала задайте журнал на сервере, чтобы вы могли посмотреть его: tail -F /var/log/squid-deb-proxy/access.log, а затем запустите обновление на любой машине, на которой установлен клиент; журнал должен начать прокручиваться с записями, подобными этим:

1307310795.647     32 192.168.1.106 TCP_MISS/302 768 GET http://us.archive.ubuntu.com/ubuntu/dists/natty-proposed/universe/i18n/Translation-en.xz - DIRECT/141.210.26.10 text/html
1307310795.683     34 192.168.1.106 TCP_MISS/302 752 GET http://us.archive.ubuntu.com/ubuntu/dists/natty/main/i18n/Translation-en_US.lzma - DIRECT/141.210.26.10 text/html
1307310795.716     32 192.168.1.106 TCP_MISS/302 746 GET http://us.archive.ubuntu.com/ubuntu/dists/natty/main/i18n/Translation-en.lzma - DIRECT/141.210.26.10 text/html
1307310795.750     32 192.168.1.106 TCP_MISS/302 764 GET http://us.archive.ubuntu.com/ubuntu/dists/natty/multiverse/i18n/Translation-en_US.lzma - DIRECT/141.210.26.10 text/html
1307310795.784     32 192.168.1.106 TCP_MISS/302 758 GET http://us.archive.ubuntu.com/ubuntu/dists/natty/multiverse/i18n/Translation-en.lzma - DIRECT/141.210.26.10 text/html
1307310795.817     32 192.168.1.106 TCP_MISS/404 657 GET http://us.archive.ubuntu.com/dists/natty-proposed/multiverse/i18n/Translation-en_US.xz - DIRECT/141.210.26.10 text/html

Это означает, что клиенты видят кэш, но пропускают его, что ожидается, поскольку он еще ничего не кэшировал. Каждый последующий запуск должен отображаться как TCP_HIT. Вы можете найти сами файлы кеша squid в /var/cache/squid-deb-proxy.

Использование

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

TODO

Нам все еще нужно разрешить apt просто использовать объявленный кеш в сети из коробки и по умолчанию, поэтому вам не нужно устанавливать клиентскую часть. Нам также нужно исправить ошибку , из-за которой у 403 deb нет в списке зеркал.

129
ответ дан 15.05.2020, 19:50
  • 1
    Конечно, если apt.conf.d - то, как это делается сейчас, пожалуйста, внесите изменения в этот ответ, ура! – ghostdog74 15.05.2020, 19:50
  • 2
    Вам также необходимо установить Squid. – Philipp Schwarz 15.05.2020, 19:50
  • 3
    Похоже, что Manual Config больше не действует. В разделе /etc/apt нет файла apt.conf. Тем не менее, существует множество файлов с настройками в /etc/apt/apt.conf.d. Я полагаю, что мы должны вместо этого создать файл там? – Neil G 15.05.2020, 19:51
  • 4
    Кроме того, похоже, что решение TODO разрешено. То есть мне не нужно было ничего делать и кеш использовался первым. Хотя ошибка не выглядит так, как будто она была помечена как исправленная. – japreiss 15.05.2020, 19:51
  • 5
    2014/01/21 14: 56: 31 | ОШИБКА: / var / cache / squid-deb-proxy / 03: (2) Нет такого файла или каталога. FATAL: Не удалось проверить один из каталогов подкачки. Подробности смотрите в cache.log. Запустите 'squid -z', чтобы создать каталоги подкачки, если это необходимо, или если вы запускаете Squid в первый раз. Squid Cache (версия 3.3.8): ненормально завершен. – Ciprian Tomoiagă 15.05.2020, 19:51

Я предпочитаю настраивать локальное зеркало с помощью утилиты debmirror.

Вот пример заклинания.

debmirror --progress --verbose --nosource --method=ftp --passive \
 --host=ftp.osuosl.org --root=pub/ubuntu \
 --dist=lucid,lucid-updates,lucid-security,lucid-backports \
 --section=main,restricted,universe,multiverse --arch=amd64 \
 /d2/ftp/mirror/ubuntu-lucid

Я запускаю это примерно раз в неделю, и использую его в качестве основы для установления одного или нескольких «уровней исправлений». Например ...

 cd /d2/ftp/mirror/
 cp -al ubuntu-lucid ubuntu-lucid-20100908

Это создает связанную копию дерева (использует почти нулевое дисковое пространство), на которую я могу указать каждый из моих локальных серверов в apt sources.list

6
ответ дан 15.05.2020, 19:48
  • 1
    Вы должны проверить ubumirror, это удобный пакет в архиве, в котором есть все, что уже настроено для вас. Это то, что используют официальные зеркала. – user23462 15.05.2020, 19:49

Одним из самых простых решений является настройка apt-proxy.

Прочтите документацию по Ubuntu здесь: https://help.ubuntu.com/community/AptProxy

.
6
ответ дан 15.05.2020, 19:49

apt-cacher-ng - это ответ для меня - я не сталкивался с какими-либо проблемами в небольших средах (около 20 клиентов), поэтому я предполагаю, что упомянутые проблемы @MagicFab решено в текущей версии (установлено в Ubuntu 10.04 и 10.10). Для сервера не требуется никаких настроек, и вам нужно только дать указание своим клиентам использовать сервер в качестве прокси-сервера менеджера пакетов.

Сервер полностью установлен и настроен путем установки пакета apt-cacher-ng.

Клиенты должны быть настроены путем настройки прокси-сервера APT - путем добавления файла /etc/apt/apt.conf.d/01proxy, содержащего это (где «your-apt-server» - это имя или IP-адрес вашего сервера):

Acquire::http { Proxy "http://your-apt-server:3142"; };
[ 1111] Готово - теперь пакеты будут кэшироваться сервером, независимо от того, какие источники вы используете или какая у вас версия системы (например, сервер 10.04 может без проблем использоваться клиентами 9.10, 10.04 и 11.04. или конфликты).


Если у вас есть клиентские переносные компьютеры, которые перемещаются между сетями, это становится немного сложнее - я создал скрипт, который устанавливает правильный прокси в зависимости от сетевого адреса; скрипт исполняемый и в /etc/network/if-up.d/apt-proxy. После получения адреса IPv4 от сервера DHCP сценарий установит правильный сервер apt-cacher для соответствующей сети:

#!/bin/sh

set -e
# Don't bother when lo is configured.
if [ "$IFACE" = lo ]; then
    exit 0
fi
# Only run from ifup.
if [ "$MODE" != start ]; then
    exit 0
fi
# currently only cares about IPv4
if [ "$ADDRFAM" != inet ] && [ "$ADDRFAM" != NetworkManager ]; then
    exit 0
fi
# only run for DHCP-assigned addresses
if [ "$DHCP4_IP_ADDRESS" = "" ]; then
    exit 0
fi

# we're matching on network *broadcast* address,
#  not the specific IP address we were assigned
case "$DHCP4_BROADCAST_ADDRESS" in
    10.3.141.255)
        PROXY='Acquire::http::Proxy "http://my-home-server:3142";';
        ;;
    192.168.154.255)
        PROXY='Acquire::http::Proxy "http://work-server.foo.bar.example.com:3142";';
        ;;
    # add as needed
    *)
        # unknown, no proxying
        PROXY=""
        ;;
esac

# set the proxy
FNAME="/etc/apt/apt.conf.d/01proxy"
echo -n "$PROXY">$FNAME

exit 0
37
ответ дан 15.05.2020, 19:50
  • 1
    Год спустя я перешел к squid-deb-proxy и squid-deb-proxy-client: zeroconf действительно означает нулевую конфигурацию на клиентах, что чрезвычайно полезно для кочевых пользователей - и в случае, если сервер не отвечает, клиент по умолчанию использует прямую загрузку , – Martin Thoma 15.05.2020, 19:50
  • 2
    apt-cacher-ng также поддерживает IPv6 (я помню, что некоторые другие решения этого не сделали). – ghostdog74 15.05.2020, 19:51
  • 3
    apt-cacher-ng работает отлично. У вас что-то не так с вашей системой. На Precise squid-deb-proxy хочет установить Squid. Настаивает на этом. – guideX 15.05.2020, 19:51
  • 4
    Теперь это лучшее решение для работы с кешем pbuilder. Это сработало из коробки. Также похоже, что есть поддержка zeroconf (в 2016 году), но я не мог (пока) заставить это работать на моем конце. – RajSan 15.05.2020, 19:52
  • 5
    apt-cacher-ng отстой, очень глючит, зависает при загрузке пакетов. например, я видел, что он скачал 150 МБ только для пакета 30 МБ – Maximiliano Cesán 15.05.2020, 19:52

apt-cacher не было самым простым в настройке, и он не переживет dist-upgrade.

Установите squid-deb-proxy на сервере, squid-deb-proxy-client на клиентах. Он использует Zeroconf Avahi, поэтому настройка не требуется.

Если вы хотите кэшировать больше, чем просто дэбы, я бы не стал беспокоиться о Squid. Apache Traffic Server - следующая большая вещь. http://trafficserver.readthedocs.org

1
ответ дан 15.05.2020, 19:50
  • 1
    squid-deb-proxy настаивает на установке squid. И apt-cacher давно умер, apt-cacher-ng - это то, где он находится. – Ogglas 15.05.2020, 19:51

Теги

Похожие вопросы