Provided by: manpages-pl_0.7-2_all bug

NAZWA

       arp - moduł ARP jądra Linuksa

OPIS

       Ten  moduł  protokołu w jądrze zawiera implementację protokołu rozpoznawania adresów (ang.
       Address Resolution Protocol) zdefiniowanego w RFC 826.  Służy do  przekształcania  adresów
       sprzętowych  warstwy  2  na  adresy  protokołu  IPv4 w sieciach o bezpośrednim połączeniu.
       Normalnie użytkownik nie korzysta bezpośrednio z tego modułu, z  wyjątkiem  konfigurowania
       go; służy on innym protokołom w jądrze.

       Proces  użytkownika  może odbierać pakiety ARP za pomocą gniazd packet(7).  Istnieje także
       mechanizm zarządzania pamięcią podręczną ARP w przestrzeni użytkownika  za  pomocą  gniazd
       netlink(7).  Tabelą  ARP  można również zarządzać za pomocą ioctl(2) lub dowolnego gniazda
       AF_INET.

       Moduł ARP zarządza pamięcią podręczną odwzorowań pomiędzy adresami sprzętowymi i  adresami
       protokołu.  Pamięć  podręczna ma ograniczony rozmiar, więc stare i rzadko używane wpisy są
       usuwane. Wpisy oznaczone jako trwałe nie są nigdy  usuwane  podczas  procesu  czyszczenia.
       Można  manipulować  bezpośrednio tą pamięcią podręczną za pomocą kontrolek wejścia/wyjścia
       (ang. ioctls) a jej zachowanie można dostrajać za  pomocą  opisanych  poniżej  interfejsów
       /proc.

       Gdy  dla  istniejącego odwzorowania nie ma pozytywnych odpowiedzi, po pewnym czasie (patrz
       interfejsy /proc poniżej) wpis w pamięci podręcznej dla  danego  adresu  jest  uważany  za
       przestarzały.  Pozytywna  odpowiedź  może  zostać odebrana od wyższej warstwy; na przykład
       jako pozytywne potwierdzenie TCP.  Inne protokoły mogą sygnalizować postępy  w  połączeniu
       za  pomocą  znacznika  MSG_CONFIRM  w  sendmsg(2).  Gdy  nie ma postępów w połączeniu, ARP
       próbuje  próbkować  ponownie.  Najpierw  próbuje  odpytać  o  zaktualizowany   adres   MAC
       app_solicit razy lokalnego demona ARP. Gdy to się nie powiedzie, a stary adres jest znany,
       to dokonywane jest ucast_solicit razy próbkowanie  pojedyncze.  Gdy  to  się  również  nie
       powiedzie,  wysyłane  jest w sieć nowe zapytanie rozgłoszeniowe ARP. Zapytania są wysyłane
       jedynie wtedy, gdy w kolejce do wysłania czekają jakieś dane.

       Linux automatycznie dodaje nietrwałe wpisy proxy arp po otrzymaniu  zapytania  dotyczącego
       adresu,  dla  którego  są  przekazywane  pakiety,  o ile dla interfejsu odbierającego dany
       pakiet włączono proxy arp. Gdy dla danego celu ustawiona jest  droga  odrzucająca  pakiety
       (ang. reject route), wpis proxy arp nie jest dodawany.

   Kontrolki systemowe (ioctl)
       Dla  wszystkich  gniazd  AF_INET dostępne są trzy kontrolki wejścia/wyjścia. Pobierają one
       jako argument wskaźnik do struktury struct arpreq.

           struct arpreq {
               struct sockaddr arp_pa;      /* adres protokołu */
               struct sockaddr arp_ha;      /* addres sprzętowy */
               int             arp_flags;   /* znaczniki */
               struct sockaddr arp_netmask; /* maska sieciowa adresu protokołu */
               char            arp_dev[16];
           };

       SIOCSARP, SIOCDARP i SIOCGARP odpowiednio ustawiają, usuwają i pobierają odwzorowanie ARP.
       Ustawianie  i usuwanie odwzorowań ARP jest operacją uprzywilejowaną i może zostać wykonane
       jedynie przez proces z ustawionym znacznikiem CAP_NET_ADMIN lub posiadający efektywny  UID
       równy 0.

       arp_pa  musi być adresem AF_INET, a arp_ha musi być tego samego typu, co urządzenie podane
       w arp_dev. arp_dev jest zakończonym znakiem NULL łańcuchem stanowiącym nazwę urządzenia.

              ┌────────────────────────────────────────────┐
              │                 arp_flags                  │
              ├────────────────┬───────────────────────────┤
              │znacznik        │ znaczenie                 │
              ├────────────────┼───────────────────────────┤
              │ATF_COM         │ Zapytanie zakończone      │
              ├────────────────┼───────────────────────────┤
              │ATF_PERM        │ Wpis trwały               │
              ├────────────────┼───────────────────────────┤
              │ATF_PUBL        │ Wpis publikacji           │
              ├────────────────┼───────────────────────────┤
              │ATF_USETRAILERS │ Zażądano danych końcowych │
              ├────────────────┼───────────────────────────┤
              │ATF_NETMASK     │ Używanie maski sieci      │
              ├────────────────┼───────────────────────────┤
              │ATF_DONTPUB     │ Nie odpowiadać            │
              └────────────────┴───────────────────────────┘
       Gdy ustawiony jest znacznik ATF_NETMASK, to arp_netmask powinno być prawidłowe. Linux  2.2
       nie  wspiera  wpisów  proxy ARP dla sieci, więc należy to ustawić na 0xffffffff lub 0, aby
       usunąć istniejący wpis ARP. ATF_USETRAILERS jest przestarzałe i nie powinno być używane.

   Interfejsy /proc
       ARP wspiera interfejsy /proc, pozwalające konfigurować parametry globalne  lub  lokalne  -
       dla  podanego  interfejsu. Dostęp do tych interfejsów można uzyskać odczytując i zapisując
       pliki /proc/sys/net/ipv4/neigh/*/*. Każdy interfejs w systemie ma swój  własny  katalog  w
       /proc/sys/net/ipv4/neigh/.  Ustawienia w katalogu "default" są używane dla wszystkich nowo
       tworzonych urządzeń. Jeśli nie podano inaczej, wszystkie wartości interfejsów związanych z
       czasem są podawane w sekundach.

       anycast_delay (od Linuksa 2.2)
              Maksymalna liczba jiffies oczekiwania przed odpowiedzeniem na komunikat zaproszenia
              sąsiada IPv6. Obsługa  anycast  nie  jest  jeszcze  zaimplementowana.  Domyślnie  1
              sekunda.

       app_solicit (od Linuksa 2.2)
              Maksymalna  liczba  prób  wysyłania  demonowi  ARP  przestrzeni użytkownika poprzez
              netlink przed przejściem do prób multicast (patrz mcast_solicit). Domyślnie 0.

       base_reachable_time (od Linuksa 2.2)
              Kiedy tylko sąsiad zostanie  znaleziony,  wpis  jest  uważany  za  ważny  przez  co
              najmniej     losową     wartość     czasu    pomiędzy    base_reachable_time/2    a
              3*base_reachable_time/2. Ważność wpisu może  być  przedłużona,  jeżeli  otrzyma  on
              takie  wskazówki  z  protokołów  wyższego  poziomu.  Domyślnie 30 sekund. Plik jest
              obecnie przestarzały, zamiast niego prosimy używać base_reachable_time_ms.

       base_reachable_time_ms (od Linuksa 2.6.12)
              Tak jak base_reachable_time, ale  czas  jest  wyrażany  w  milisekundach.  Domyślną
              wartością jest 30000 milisekund.

       delay_first_probe_time (od Linuksa 2.2)
              Oczekiwanie  przed  pierwszą próbą po tym, jak sąsiad został uznany za niedostępny.
              Domyślnie 5 sekund.

       gc_interval (od Linuksa 2.2)
              Jak często powinien się uruchamiać proces oczyszczania  śmieci  z  listy  wpisów  o
              sąsiadach. Domyślnie 30 sekund.

       gc_stale_time (od Linuksa 2.2)
              Określa,  jak często należy sprawdzać wpisy o niedostępnych sąsiadach. Kiedy sąsiad
              zostanie uznany za niedostępnego, jest on ponownie sprawdzany przed próbą  wysłania
              danych do niego. Domyślnie 60 sekund.

       gc_thresh1 (od Linuksa 2.2)
              Minimalna  liczba  wpisów przechowywanych w buforze ARP. Proces czyszczenia starych
              wpisów nie uruchomi się,  jeżeli  bufor  zawiera  mniej  wpisów  niż  podana  tutaj
              wartość. Domyślnie 128.

       gc_thresh2 (od Linuksa 2.2)
              Miękka maksymalna liczba wpisów trzymanych w buforze ARP. Proces czyszczenia śmieci
              pozwoli przekroczyć tę liczbę wpisów na 5 sekund  przed  rozpoczęciem  czyszczenia.
              Domyślnie 512.

       gc_thresh3 (od Linuksa 2.2)
              Twarda  maksymalna  liczba wpisów przechowywanych w buforze ARP. Proces czyszczenia
              śmieci zawsze się uruchomi, jeśli bufor zawiera więcej wpisów niż wynosi ta liczba.
              Domyślnie 1024.

       locktime (od Linuksa 2.2)
              Minimalna  liczba  jiffies,  przez  którą  wpis ARP będzie przechowywany w buforze.
              Zabezpiecza to bufor ARP przed zabiciem,  jeżeli  jest  więcej  niż  jedno  możliwe
              mapowanie (z powodu złej konfiguracji sieci). Domyślnie 1 sekunda.

       mcast_solicit (od Linuksa 2.2)
              Maksymalna  liczba  prób  rozwiązywania  adresu za pomocą multicast/broadcast przed
              zaznaczeniem wpisu jako niedostępny. Domyślnie 3.

       proxy_delay (od Linuksa 2.2)
              Kiedy otrzymano żądanie ATP dla znanego adresu proxy-ARP, to  poczekaj  proxy_delay
              jiffies  przed  wysłaniem  odpowiedzi.  Jest to używane, aby zapobiec zalaniu sieci
              żądaniami w pewnych przypadkach. Domyślnie 0.8 sekundy.

       proxy_qlen (od Linuksa 2.2)
              Maksymalna liczba pakietów, które mogą  być  zakolejkowane   w  adresie  proxy-ARP.
              Wartość domyślna to 64.

       retrans_time (od Linuksa 2.2)
              Liczba  jiffies  oczekiwania przed ponowną transmisją żądania. Domyślnie 1 sekunda.
              Plik jest obecnie przestarzały, zamiast niego prosimy używać retrans_time_ms.

       retrans_time_ms (od Linuksa 2.6.12)
              Liczba milisekund oczekiwania przed  ponowną  transmisją  żądania.  Domyślnie  1000
              milisekund.

       ucast_solicit (od Linuksa 2.2)
              Maksymalna  liczba  prób  wysłania żądań unicast przed zapytaniem demona ARP (patrz
              app_solicit). Domyślnie 3.

       unres_qlen (od Linuksa 2.2)
              Maksymalna liczba pakietów, które mogą być kolejkowane przez inne warstwy sieci dla
              każdego nierozwiązanego adresu. Domyślnie 3.

WERSJE

       W  Linuksie  2.0 zmieniono struct arpreq, dodając pole arp_dev oraz jednocześnie zmieniono
       numery kontrolek wejścia/wyjścia. W Linuksie 2.2 porzucono wsparcie dla starych  kontrolek
       wejścia/wyjścia.

       W  Linuksie  2.2  porzucono  wsparcie dla wpisów proxy ARP dla sieci (maska sieci inna niż
       0xffffffff). Zostało ono zastąpione przez automatyczną konfigurację proxy ARP w jądrze dla
       wszystkich  komputerów  osiągalnych  na  innych  interfejsach  (gdy  dla danego interfejsu
       włączone są przekazywanie pakietów i proxy ARP).

       Interfejsy neigh/* nie istniały w Linuksie przed wersją 2.2.

BŁĘDY

       Niektóre  ustawienia  timera  są  podawane  w  jednostkach  jiffy,  które  są  zależne  od
       architektury i wersji jądra; patrz także time(7).

       Nie  ma  możliwości  zasygnalizowania  postępów  w  połączeniu  z przestrzeni użytkownika.
       Oznacza to, że protokoły połączeniowe  zaimplementowane  w  przestrzeni  użytkownika  będą
       generować  nadmierny ruch ARP, gdyż ndisc będzie dokonywał regularnego próbkowania adresów
       MAC. Ten sam problem dotyczy niektórych protokołów jądra (np. NFS-u po UDP).

       Ta strona podręcznika miesza ze  sobą  funkcje  charakterystyczne  dla  IPv4  z  funkcjami
       wspólnymi dla IPv4 i IPv6.

ZOBACZ TAKŻE

       capabilities(7), ip(7)

       RFC 826  do  opisu  ARP.  RFC 2461 dla opisu znajdywania sąsiadów w IPv6 oraz podstawowych
       stosowanych w tym celu algorytmów. ARP IPv4 w Linuksie  2.2+  używa  algorytmów  IPv6  tam
       gdzie jest to celowe.

O STRONIE

       Angielska  wersja  tej  strony  pochodzi  z  wydania  4.05  projektu Linux man-pages. Opis
       projektu, informacje dotyczące zgłaszania błędów oraz  najnowszą  wersję  oryginału  można
       znaleźć pod adresem https://www.kernel.org/doc/man-pages/.

TŁUMACZENIE

       Autorami   polskiego   tłumaczenia  niniejszej  strony  podręcznika  man  są:  Andrzej  M.
       Krzysztofowicz (PTM) <ankry@mif.pg.gda.pl>, Robert Luberda  <robert@debian.org>  i  Michał
       Kułach <michal.kulach@gmail.com>.

       Polskie  tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na
       stronie  http://sourceforge.net/projects/manpages-pl/.  Jest   zgodne   z   wersją    4.05
       oryginału.