« poprzedni punkt  następny punkt »


6. Proxy ARP jako alternatywa dla podsieci

Kiedy host przygotowuje się do wysłania datagramu IP, najpierw określa, czy adres przeznaczenia znajduje się w tym samym segmencie sieci, czy też w innym. Jeśli adres odbiorcy należy do innego segmentu, host wysyła datagram IP na adres rutera. Jeśli host wysyłający datagram oraz adres przeznaczenia znajdują się w tym samym segmencie sieci, to pakiet przesyłany jest bezpośrednio do odbiorcy.

Warstwa łącza danych nie wie jednak nic o adresach IP. Każda maszyna ma zwykle niepowtarzalny adres sprzętowy, który nie ma nic wspólnego z adresem IP. Adresy sprzętowe przydzielane są maszynom (lub kartom interfejsów) przez producentów, bez względu na to, gdzie ta maszyna będzie używana. Adresy IP z kolei przydzielane są przez lokalnego administratora i mają strukturę, która jest kontrolowana lokalnie i zawiera wiele informacji o tym, gdzie dokładnie urządzenie się znajduje. Kiedy host IP chce wysłać datagram do lokalnego segmentu sieci, musi jakoś odwzorować adres IP przeznaczenia na odpowiedni adres sprzętowy.

Są trzy podstawowe metody odwzorowania adresów IP na adresy sprzętowe. Pierwszą z nich jest tablica lookup. Każda maszyna przechowuje skończoną listę odwzorowań adresów IP na adresy sprzętowe dla każdej z maszyn w lokalnym segmencie sieci. Choć wydaje się to bardzo proste, utrzymywanie tablicy powoduje powstawanie błędów, a uaktualnianie tablic hostów w całej sieci po zmianie jednego adresu staje się koszmarem, kiedy maszyn w sieci jest więcej niż tuzin.

Drugą metodą jest algorytmiczne mapowanie pomiędzy adresami IP i adresami sprzętowymi. Jednym z przykładów może być warstwa łącza danych pracująca z 8-bitowymi adresami sprzętowymi. W takim przypadku host może mapować adresy IP na adresy sprzętowe używając mniej znaczącego oktetu adresu IP jako adresu sprzętowego. Taki algorytm działa nieźle pod warunkiem, że administrator ma możliwość ustawiania adresu sprzętowego i że takie proste odwzorowanie w ogóle istnieje.

Trzecią metodą, najczęściej wybieraną w przypadku zestawu protokołów IP, jest użycie sieciowej bazy danych, którą host pyta o adres sprzętowy odpowiadający jakiemuś adresowi IP. Ta baza danych może być umieszczona na pojedynczym serwerze lub dystrybuowana pomiędzy hostami, które są wtedy odpowiedzialne za udzielanie odpowiedzi dotyczących ich adresów.

ARP - Address Resolution Protocol

W najczęściej używanych mediach sieci LAN standardową metodą odwzorowywania adresów jest Address Resolution Protocol (ARP). Używając tego protokołu wysyłający pakiet host wysyła najpierw komunikat za pomocą sprzętowej usługi broadcast (o ile to możliwe), prosząc maszynę o danym numerze IP, by odpowiedziała przez odesłanie swego adresu sprzętowego. Kiedy wskazana maszyna odpowie, maszyna nadająca wysyła kolejne datagramy IP, wykorzystując przekazany adres sprzętowy odbiorcy. Ponieważ jest bardzo prawdopodobne, że w najbliższej przyszłości zostaną przesłane kolejne datagramy, nadawca zachowuje w pamięci używane odwzorowanie, by móc go użyć w przyszłości.

Zwykle każda maszyna odpowiada na zapytania dotyczące jej własnego adresu IP. Nie ma jednak ograniczeń w protokole, które nie pozwalałyby, aby dana maszyna odpowiadała przez przekazanie odwzorowania adresów IP, do których trasa prowadzi przez ruter. W takim przypadku ruter odpowiada na pytanie przesyłając swój własny adres. Maszyna wysyłająca pytanie akceptuje ten adres jako obowiązujące mapowanie, a kolejne datagramy adresowane na to IP wysyła na adres sprzętowy interfejsu rutera. Działanie takie znane jest jako proxy ARP lub ARP hack.

Proxy ARP wymyślono jako sposób na złagodzenie przejścia do konfiguracji sieci wykorzystujących podsieci IP. Wiele maszyn pracuje z oprogramowaniem, które nie rozumie masek podsieci. Maszyny te wierzą, że wszystkie hosty w sieci klasowej będą dostępne bezpośrednio przez warstwę łącza danych, a ARP użyją w stosunku do maszyn pracujących w innych podsieciach. Zapewniając obsługę proxy ARP ruter IP sprawia, że maszyny te funkcjonują w podsieci IP, bez konieczności uaktualniania ich oprogramowania do nowszej wersji. Maszyny, które nie potrafią pracować w podsieciach IP, są obecnie rzadkością. Wielu ludzi wierzy jednak, że proxy ARP jest użyteczne jako alternatywa do konfigurowania poprawnych masek podsieci (a czasem nawet rutowania) na hostach pracujących w sieci. Często nie rozumieją oni wad, jakie niesie ze sobą nieostrożne stosowanie proxy ARP, aż jest za późno i trzeba rekonfigurować całą sieć.

Problemy związane z proxy ARP

Włączanie wszędzie usługi proxy ARP ma pewne zalety dla zapracowanego administratora sieci. Nie musi on już wtedy informować administratorów sieci LAN oraz użytkowników, jakie są ich maski podsieci, ani wyjaśniać, co to jest maska podsieci. Hosty pracujące w końcowych sieciach mogą nawet nie wiedzieć nic o rutowaniu IP i wszystko otrzymywać od ARP, nawet adres IP odległych miejsc. W takim przypadku to rutery wykonują całą pracę.

Jednym z problemów, jaki powstaje przy wykorzystywaniu ARP, jest to, że obciążenie ruterów, które i bez tego protokołu jest duże, wyraźnie wzrasta. Poprawnie skonfigurowany host IP, który komunikuje się z czterema maszynami znajdującymi się w innym segmencie sieci, wie, że wszystkie datagramy wchodzące w skład tych sesji muszą być wysyłane do rutera IP. Kiedy pierwszy pakiet jest gotowy do wysłania, host, posługując się ARP, uzyskuje adres sprzętowy rutera i zapamiętuje go w pamięci podręcznej ARP, by móc go użyć ponownie. Kolejne trzy sesje będą rutowane przez ten sam ruter, ale host ma już informację o adresie sprzętowym rutera, więc nie musi wysyłać kolejnego pytania. Natomiast maszyna posługująca się proxy ARP musi wysłać zapytanie ARP o adres sprzętowy każdej z maszyn, z którą się komunikuje. W naszym przypadku działanie to zwiększa liczbę ramek ARP aż czterokrotnie. Jeśli pomnoży się to przez wszystkie maszyny dołączone do wszystkich interfejsów ruterów, dodatkowe obciążenie ruterów może być znaczne. Ponieważ zapytania ARP wysyłane są jako broadcast, kierowany do wszystkich maszyn w lokalnym segmencie, każda maszyna pracująca w tym segmencie musi przerwać normalną pracę i sprawdzić nadchodzące pytanie ARP, upewniając się, czy nie dotyczy ono jej adresu IP. Tak więc stosowanie proxy ARP zwiększa nie tylko obciążenie ruterów, ale także innych hostów w sieci.

Kolejną wadą rozpowszechniania proxy ARP jest fakt, że usługa ta powoduje powstawanie błędów w konfiguracji sieci. Pracuję obecnie z zestawem maszyn w lokalnej sieci kampusowej, które mają zapisaną trasę domyślną wskazującą na adres IP, który nie został nikomu przydzielony, ale będzie wykorzystany jako adres rutera w kolejnej podsieci. Ruter działający w lokalnej podsieci został skonfigurowany do obsługi proxy ARP wiele lat temu i do dziś nie sprawdzono, czy usługa ta jest jeszcze potrzebna. Źle skonfigurowane maszyny działające w tej sieci szczęśliwie poprawnie wysyłały pakiety. Jeśli jednak taka konfiguracja pozostałaby nadal niewykryta, to jakakolwiek zmiana w sieci mogłaby spowodować, że maszyny te przestałyby się komunikować z kimkolwiek. Koszmarem dla każdego administratora jest sytuacja, w której po dokonaniu jakiejś zmiany w jednym miejscu sieci nagle ni stąd, ni zowąd przestaje coś działać w innym miejscu.

Na nieszczęście niektórzy producenci ruterów domyślnie włączają proxy ARP na wszystkich interfejsach. Sądzą, że proxy ARP pomaga w traktowaniu sieci IP jako sieci typu plug-and-play, zwłaszcza w przypadku małych miejsc, gdzie administratorzy nie mają dużego doświadczenia w konfigurowaniu sieci. Choć w niektórych przypadkach tak się rzeczywiście dzieje, nadal obstaję przy swoim zdaniu, że proxy ARP robi więcej złego niż dobrego. Na szczęście łatwo w większości dostępnych obecnie ruterów wyłączyć obsługę proxy ARP. Przedstawione poniżej kody pokazują część konfiguracji pary interfejsów Ethernet w ruterze Cisco. Pierwszy z nich ma włączoną obsługę ARP (domyślna konfiguracja), w drugim obsługa ta jest wyłączona, ponieważ nie jest potrzebna.

! proxy ARP enabled explicitly (1t is on by default) interface Ethernet 0/0
ip address 172.16.1.1 255.255.255.0
ip proxy-arp
! proxy ARP disabled on this interface
interface Ethernet 0/1
ip address 172.16.2.1 255.255.255.0
no ip proxy-arp

Kiedy niezbędne jest użycie proxy ARP?

Mimo wad proxy ARP, konieczne jest zastosowanie go, gdy pojawi się problem komunikacji w sieci. Zdarza się, że w Twojej sieci będą pracowały hosty, które nie potrafią obsługiwać podsieci IP. Jeśli nie możesz usunąć takich komputerów z sieci, to nie ma innego wyjścia, jak zastosować obsługę proxy ARP w segmencie lub segmentach, gdzie są one dołączone. Innym, dość częstym, przypadkiem, jest sytuacja, kiedy masz w sieci host, który nie może poprawnie komunikować się z hostami pracującymi w podsieci 0 i podsieci 1 (same bity 1). (Pamiętaj, że te dwie podsieci są formalnie zarezerwowane.) Kiedy natrafisz na taki host, możesz nie mieć innego wyjścia, jak tylko okłamać go, że jego maska podsieci jest maską dopuszczalnej podsieci, przez co będzie myślał, że adresy, z którymi się komunikuje, nie pochodzą z podsieci zerowej lub jedynkowej. Oczywiście konieczne będzie również uruchomienie proxy ARP na ruterze obsługującym ten segment.

Pamiętaj, że musisz uważnie kontrolować wykorzystanie proxy ARP i nie należy posługiwać się nim w całej sieci. Postaraj się trzymać maszyny, które naprawdę wymagają tej usługi, w jak najmniejszej liczbie segmentów. Możliwe, że uda się je wszystkie zebrać w jednym segmencie, dzięki czemu proxy ARP można będzie uruchomić tylko na jednym interfejsie rutera.


« poprzedni punkt  następny punkt »