Czym jest APIPA?

Tomasz Wądołowski
Tomasz Wądołowski Skomentuj

Do działania komunikacji w sieci komputerowej potrzebna jest adresacja IP. Może ona zostać nadana ręcznie w sposób statyczny lub dynamicznie przez serwer DHCP. Co jednak stanie się, gdy adres nie zostanie nadany ręcznie, a w sieci nie będzie serwera DHCP lub jego pula adresów zostanie wyczerpana? Nie oznacza to od razu braku możliwości komunikacji w sieci, gdyż z pomocą przychodzi nam tytułowa APIPA. Cóż oznacza ten być może dziwnie i tajemniczo brzmiący skrót? Po rozwinięciu go jest to ang. Automatic Private IP Addressing.

Wstęp

Gdy już wiemy co oznacza ten skrót to możemy zacząć pogłębiać temat. Mówiąc wprost, jest to metoda, która umożliwia komputerowi przypisanie sobie adresu IP wówczas, gdy serwer DHCP jest niedostępny lub nie istnieje w danej sieci. Brzmi dobrze i użytecznie prawda?

Co prawda taka sytuacja nie powinna się zdarzyć w profesjonalnie zbudowanej sieci, gdyż wystarczyłoby tak naprawdę zastosować połączenia lub serwery redundantne. Nie zawsze jednak jest to możliwe, a nawet i w takiej sytuacji może nam się coś w sieci „wysypać”. APIPA może nas wówczas uratować. Warto jednak pamiętać, że ten mechanizm ułatwia konfigurację i obsługę niewielkiej i prostej sieci LAN jak na przykład połączenie bezpośrednie (ang. point-to-point). Mamy wtedy do czynienia tylko z dwoma komputerami połączonymi ze sobą skrętką.

Z historycznego punktu widzenia nazwa APIPA została wprowadzona przez firmę Microsoft w roku 1998 przy okazji premiery systemu operacyjnego Windows 98 (i pod taką nazwą występuje tylko w systemach od Microsoft). Określała ona metodę automatycznej konfiguracji połączenia lokalnego (ang. link-local). Sam otwarty standard opisany został w RFC 3927.

Jedna funkcja przeszła przez kilka zmian nazw na przestrzeni lat, w tym:

  • AutoNet,
  • Auto-IP Configuration,
  • Automatic Private IP Addressing.

W Win2K Release Candidate 2 (RC2), Microsoft ostatecznie zdecydował się na Automatic Private IP Addressing (APIPA). Używana jest w Zero-configuration networking (zeroconf), czyli zestawie technologii, które automatycznie tworzą użyteczną sieć komputerową opartą na stosie protokołów internetowych (TCP/IP).

Dlaczego dostaję adres zaczynający się na 169.254?

Załóżmy, że na urządzeniu końcowym w ustawieniach karty sieciowej i protokołu TCP/IP karty sieciowej wybrano opcję dynamicznego przydzielenia adresu IP. Gdy serwer DHCP nie będzie dostępny to mechanizm APIPA przydzieli komputerowi adres IPv4 z puli 169.254.0.1 – 169.254.255.254 i maską 255.255.0.0.

Maska /16 umożliwia istnienie 65534 unikalnych adresów IP w tej sieci, natomiast ciężko sobie wyobrazić tak wielką sieć zbudowaną przy użyciu APIP-y. Uznajmy to zatem tylko za teorię oraz jako ciekawostkę 😅.

Organizacja IANA (ang. Internet Assigned Numbers Authority) zarezerwowała tę pulę adresacji na potrzeby właśnie automatycznej konfiguracji adresu lokalnego.

Następnie, gdy serwer przydzielający adresy stanie się znów dostępny w sieci, APIPA uzyska adres IP właśnie z tego serwera.

W momencie komunikacji sieciowej pomiędzy urządzeniem chcącym uzyskać dynamicznie adres IP a serwerem, jeśli wszystko pójdzie bez przeszkód między urządzeniami powinny zostać wymienione 4 pakiety:

  • DISCOVER,
  • OFFER,
  • REQUEST,
  • ACKNOWLEDGEMENT.

W szczegółach, o tym czym jest serwer DHCP i jak działa pisaliśmy w tym artykule.

Zobrazowanie początku komunikacji DORA – po braku odpowiedzi następuje automatyczna alokacja adresu IP

Zobaczmy to na konkretnym przykładzie zasymulowanym w Cisco Packet Tracer:

Pokaz prostej komunikacji pomiędzy dwoma urządzeniami końcowymi i zastosowaniem APIPA

W tym konkretnym przypadku w naszej sieci nie mamy nawet serwera DHCP. Czy jest to problem? Absolutnie nie! Łączymy komputery ze sobą za pomocą skrętki bezpośrednio lub przez switch (to nie ma znaczenia), ustawiamy kartę sieciową na automatyczne pobieranie adresu IP (czekamy parę sekund, podczas których komputer szuka tego serwera) i już, to tyle! Adresy z puli adresacji zostały nam przydzielone automatycznie przez sam komputer. Jak widać komunikacja pomiędzy komputerami działa.

Oczywiście można byłoby stwierdzić, że w powyższym wypadku nie ma sensu użycie APIP-y, gdyż ten sam efekt dałoby zaadresowanie komputerów statycznie i jest to prawda. Jednak gdyby był tam serwer DHCP, a nie działał, wówczas ma to już sens. Przy okazji ten sposób może być szybszy niż adresowanie ręczne. Jednak w dalszym ciągu warto podkreślić, że w większości sytuacji APIPA umożliwi jedynie komunikowanie się w obrębie sieci lokalnej 169.254.0.0/16. W mało których organizacjach blok ten jest przeroutowany.

Przydzielenie adresu w systemie macOS

Zabezpieczenia przed konfliktem adresów

Adres APIPA nie jest wybierany losowo. Do ustalenia adresu IP adaptera sieciowego używany jest algorytm oparty o adres MAC. Ponieważ adres MAC powinien być unikalny na każdym interfejsie, adres APIPA powinien być również unikalny.

Skąd klient wie, że adres IP, którego używa, nie jest używany przez inną maszynę? Używa protokołu GARP (ang. Gratuitous Address Resolution Protocol) do rozwiązywania potencjalnych konfliktów. Do wykrywania duplikatów adresów są też używane zapowiedzi i sondy ARP (probe i announcement ARP). O protokole ARP dowiesz się więcej w naszym artykule.

Załóżmy, że pierwszy klient, który się uruchomi, chce przypisać sobie adres IP 169.254.111.22. Wysyła on GARP, ale nikt nie odpowiada, więc zatrzymuje ten adres. Kiedy drugi klient się uruchamia, wybiera losowo adres 169.254.111.55. Aby uniknąć duplikacji w sieci, on również wysyła GARP, aby upewnić się, że żaden inny klient nie wybrał tego adresu. Następnie uruchamia się trzeci klient i wybiera 169.254.111.22 (ten sam adres, który wybrał pierwszy klient).

Pierwszy klient mówi trzeciemu klientowi, że już używa tego adresu IP, więc trzeci klient próbuje innego adresu IP i zatrzymuje go, jeśli nie ma konfliktu. Dla każdego konfliktu adresów klienci próbują samokonfiguracji do 10 razy.

Przykłady zastosowania

Przykład 1: Brak poprzedniego adresu IP i brak serwera DHCP

Kiedy komputer z systemem Windows (skonfigurowany do obsługi DHCP) inicjalizuje się, rozgłasza trzy lub więcej komunikaty typu „discover”. Jeśli serwer DHCP nie odpowie po rozesłaniu kilku komunikatów „discover”, komputer przypisuje sobie adres klasy B (APIPA). Następnie wyświetli komunikat o błędzie dla użytkownika komputera (pod warunkiem, że w przeszłości nie został mu przydzielony adres IP z serwera DHCP). Kolejno będzie co trzy minuty wysyłał komunikat discover, próbując nawiązać komunikację z serwerem DHCP.

Przykład 2: Poprzedni adres IP i brak serwera DHCP

Komputer sprawdza, czy nie ma serwera DHCP, a jeśli żaden nie zostanie znaleziony, podejmowana jest próba kontaktu z bramą domyślną. Jeśli brama domyślna odpowie, wówczas zachowuje wcześniej wydzierżawiony adres IP. Jeśli jednak komputer nie otrzyma odpowiedzi od bramy domyślnej lub jeśli żaden nie został przydzielony, wówczas używa funkcji automatycznego prywatnego adresowania IP, aby przypisać sobie adres IP. Użytkownikowi prezentowany jest komunikat o błędzie, a komunikaty discover są wysyłane co 3 minuty. Po osiągnięciu serwera DHCP generowany jest komunikat informujący o ponownym nawiązaniu komunikacji z serwerem DHCP.

Przykład 3: Wygaśnięcie dzierżawy adresu IP i brak serwera DHCP

Komputer próbuje ponownie ustanowić dzierżawę adresu IP. Jeśli nie znajdzie serwera DCHP, to po wygenerowaniu komunikatu o błędzie przydziela sobie adres IP. Następnie rozgłasza cztery komunikaty discover, a po każdych 5 minutach powtarza całą procedurę, aż do momentu pojawienia się serwera DHCP. Generowany jest wtedy komunikat informujący o ponownym nawiązaniu komunikacji z serwerem DHCP.

Wady i zalety APIPA

Zalety ✅:

  • używa GARP (Gratuitous Address Resolution Protocol), aby potwierdzić, że adres nie jest aktualnie używany,
  • nie doprowadza do niepożądanego zalewu sieci dużą ilością pakietów typu broadcast,
  • można go wykorzystać jako backup DHCP, ponieważ gdy DHCP przestanie działać to ma możliwość przydzielenia IP hostom na poziomie systemu operacyjnego.

Wady ❌:

  • APIPA nie przydziela adresu domyślnej bramy sieciowej, tak jak robi to DHCP – zaspokoi więc jedynie potrzeby komunikacji w obrębie jednej sieci LAN,
  • adresy IP przydzielone przez APIPA mogą spowolnić działanie sieci, gdyż trwa to kilka sekund, podczas gdy komputer szuka serwera (np. w systemie Windows Vista trwa to 6 sekund).

Ograniczenia

Jak wszystko na świecie, tak i APIPA ma ograniczenia oraz limity. Doszukałem się trzech o których warto wiedzieć. Przeczytasz o tym w naszym darmowym NSSletterze – mailingu dla sieciowców głodnych wiedzy.

Dołączając uzyskasz dostęp również do archiwum – tematykę tego artykułu rozszerzyliśmy w NSSletterze #19. Rozwiń swoją wiedzę już teraz i zapisz się używając formularza poniżej.

Zostaw komentarz
Otrzymuj powiadomienia z tej dyskusji
Powiadom mnie o
guest

0 - Ilość komentarzy
Inline Feedbacks
View all comments