Własny, prywatny mirror Fedory



Linuksowe dystrybucje od lat polegają na sieci serwerów lustrzanych (mirrorów) aby dotrzeć do użytkowników. Taka Fedora ma półtorej setki miejsc, z której można pobierać pakiety. Stworzenie prywatnego mirrora dla swoich systemów czasem się przydaje i na szczęście jest łatwiutkie.

Zgłoszenie w Fedorze

Pierwsze co, to wybieramy, skąd będziemy pobierać pakiety. Z oficjalnych serwerów Fedory mogą ciągnąć tylko publiczne serwery lustrzane – nam zostaje ściąganie właśnie z któregoś z nich. Wybieramy co nas interesuje i ustawiamy periodyczne wywołanie rsynca.

Teraz informujemy infrastrukturę Fedory, że mamy prywatny serwer lustrzany. Dopisujemy zakresy sieci, z których komputery mają korzystać z naszego mirrora [*]. Co jakiś czas uruchamiamy skrypt, który wysyła spis zawartości naszego prywatnego serwera lustrzanego. Serwery publiczne są przeczesywane automatycznie przez Fedorę.

Konfiguracja stacji klienckich

Nic. Od tej pory wszystko dzieje się automatycznie! A to dlatego, że każda fedora aktualizując się, najpierw pyta serwery dystrybucji o listę mirrorów. Dystrybucja widząc połączenie przychodzące z „naszych” sieci jako główny serwer lustrzany podaje nasz prywatny mirror. Wysłana wcześniej lista zawartości pozwala też wykluczyć mirror z odpowiedzi, jeśli nie zawiera pakietów dla odpowiedniego wydania i architektury.

Oczywiście zapytania z innych sieci (nie podanych w liście naszych) nigdy w odpowiedzi nie dostaną adresu naszego prywatnego mirrora.

Taka zero-konfiguracja po stronie klienta działa naprawdę fajnie. Każda wirtualka, kontener, komputer gościa czy nawet proces budowania pakietu w środowisku mock automatycznie korzysta z pakietów przechowywanych lokalnie.

[*] – własność sieci nie jest weryfikowana; można więc wyobrazić sobie sytuację, że chcąc zaatakować jakąś instytucje, podajemy jej podsieci jako mające korzystać z naszego mirrora. A potem ingerujemy w jego zawartość, np. nie wystawiając poprawek podatności, którą chcemy użyć w ataku.

Comments


Comments powered by Disqus