Przeszukałem kilka rozwiązań, a niektórzy programiści Ubuntu wymyślili konfigurację proxy (opartą na Squid) dla wersji 10.04 i późniejszych. To się nazywa squid-deb-proxy
. Wymaga tylko komputera działającego jako serwer. Duże organizacje zwykle prowadzą własne pełne kopie lustrzane, ale dla większości ludzi wystarczy kopia lustrzana na żądanie.
Dlaczego Squid-Deb-proxy?
- Brak edycji plików po stronie klienta.
- Użyj zeroconf, aby klienci mieli „zerową konfigurację”
- Użyj istniejącego, solidnego rozwiązania proxy zamiast pisać nowe narzędzie.
- Łatwy w konfiguracji dla typowego administratora systemu Linux.
Konfiguracja serwera
Na komputerze, który ma działać jako serwer, zainstaluj narzędzie za pomocą:
sudo apt-get install squid-deb-proxy avahi-utils
Teraz uruchom bity usługi:
sudo start squid-deb-proxy
I bity avahi (Nie potrzebujesz tego, jeśli masz 12.04+):
sudo start squid-deb-proxy-avahi
Spowoduje to zainstalowanie serwera proxy (który domyślnie nasłuchuje na porcie 8000) oraz narzędzi avahi potrzebnych do tego, aby serwer zareklamował się w sieci za pośrednictwem zeroconf.
Konfiguracja klienta
Na każdym komputerze , z którego chcesz korzystać z pamięci podręcznej (klienci i sam serwer, aby również mógł korzystać z pamięci podręcznej), musisz zainstalować narzędzie po stronie klienta, które pozwoli nam automatycznie wyszukać serwer, niech klikną tutaj :
lub za pomocą wiersza poleceń:
sudo apt-get install squid-deb-proxy-client
Opcjonalnie : Aby uzyskać maksymalną wydajność, należy ustawić jeden komputer na automatyczne pobieranie aktualizacji, aby gdy inne maszyny tego potrzebowały, znajdował się już w pamięci podręcznej. Możesz to zrobić, przechodząc do System-> Administracja-> Menedżer aktualizacji, a następnie kliknij przycisk „Ustawienia ...”, w zakładce Aktualizacja ustaw automatyczne pobieranie wszystkich aktualizacji.
Buforowanie źródeł zewnętrznych
Domyślnie pamięć podręczna jest skonfigurowana do buforowania tylko oficjalnych repozytoriów Ubuntu. Aby dodać więcej, musisz dodać je do listy źródeł w /etc/squid-deb-proxy/mirror-dstdomain.acl
. Tutaj możesz dodać ppa.launchpad.net lub inne usługi, z których możesz skorzystać. Po wprowadzeniu zmian w tym pliku należy uruchomić sudo restart squid-deb-proxy
, aby zmiany były skuteczne.
Konfiguracja ręczna
Jeśli z jakiegoś powodu nie chcesz używać zeroconf (z powodów sieciowych itp.), Możesz ręcznie ustawić klienta do korzystania z proxy, edytując /etc/apt/apt.conf
i dodając następującą sekcję (zamień 0.0.0.0 na adres IP serwera ):
Acquire {
Retries "0";
HTTP { Proxy "http://0.0.0.0:8000"; };
};
Zapora ogniowa
W przypadku korzystania z zapory, avahi używa adresu 5353 w odniesieniu do adresów 224.0.0.0/4 i wymaga reguły, która wygląda następująco:
# 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
Następnie należy otworzyć port TCP 8000 dla faktycznej komunikacji przez proxy. Coś mniej więcej takiego:
-A INPUT -i eth2 -p tcp -m tcp --dport 8000 -d 192.168.0.1 -s 192.168.0.0/24 --syn -j ACCEPT
Te zasady mają ci tylko pomóc. Prawdopodobnie nie będą pasować do twojej konfiguracji jeden do jednego. (tj. zły interfejs, złe adresy IP sieci prywatnej itp.)
Potwierdzenie, że działa
Najpierw sprawdź dziennik na serwerze, abyś mógł na niego spojrzeć: tail -F /var/log/squid-deb-proxy/access.log
a następnie uruchom aktualizację na dowolnym komputerze, na którym jest zainstalowany klient; dziennik powinien zacząć się przewijać z następującymi wpisami:
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
Co oznacza, że klienci widzą pamięć podręczną, ale jej brakuje, co jest oczekiwane, ponieważ niczego jeszcze nie buforował. Każde kolejne uruchomienie powinno pokazywać się jako TCP_HIT. Możesz znaleźć same pliki pamięci podręcznej kałamarnic /var/cache/squid-deb-proxy
.
Użyj tego
Od tego momentu wszystkie maszyny w twojej sieci sprawdzą pamięć podręczną przed wejściem do sieci zewnętrznej w celu pobrania pakietów. Jeśli dostępne są nowe pakiety, pierwsza maszyna pobierze je z sieci, po czym kolejne żądania dotyczące tego pakietu będą wysyłane z serwera do klientów.
DO ZROBIENIA
Nadal musimy włączyć apt, aby po prostu używał reklamowanej pamięci podręcznej w sieci po wyjęciu z pudełka i domyślnie nie trzeba instalować klienta. Musimy także naprawić błąd polegający na tym, że deb 403 nie znajduje się na liście kopii lustrzanych.