Я провів декілька досліджень щодо ряду рішень, і деякі розробники Ubuntu придумали конфігурацію проксі (на основі Squid) 10.04 і пізніше. Це називається 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.
Налаштування клієнта
На кожному з комп’ютерів, які ви хочете використовувати кеш (клієнти та сам сервер, щоб він також міг використовувати кеш), вам потрібно встановити клієнтський інструмент, який дасть змогу автоматично шукати сервер, дозволити їм натиснути тут :

або за допомогою командного рядка:
sudo apt-get install squid-deb-proxy-client
Необов’язково : для максимальної ефективності слід встановити одну машину для автоматичного завантаження оновлень, так що коли інші ваші машини потребують цього, вони вже знаходяться в кеші. Зробити це можна, перейшовши до системи-> Адміністрація-> Менеджер оновлень, потім натисніть кнопку "Налаштування ...", на вкладці "Оновлення" встановіть його для автоматичного завантаження всіх оновлень.

Керування джерелами сторонніх організацій
За замовчуванням кеш встановлюється лише для офіційних сховищ 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. Ви можете знайти самі файли кешу кальмарів /var/cache/squid-deb-proxy
.
Використовуючи його
З цього моменту всі машини у вашій мережі перевірять кеш, перш ніж потрапляти на зовнішню мережу для отримання пакетів. Якщо є нові пакети, тоді перша машина завантажить її з мережі, після чого наступні запити щодо цього пакета надійдуть від сервера до клієнтів.
РОБИТИ
Нам все ще потрібно включити apt просто використовувати рекламований кеш у мережі поза скринькою та за замовчуванням, тому вам не потрібно встановлювати клієнтську частину. Нам також потрібно виправити помилку, яку дебют 403 року не знаходиться у списку дзеркал.