Provided by: manpages-pl_4.15.0-9_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 and SIOCGARP respectively set, delete, and get an ARP mapping.  Setting
       and  deleting  ARP  maps  are privileged operations and may be performed only by a process
       with the CAP_NET_ADMIN capability or an effective UID of 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           │
              ├──────────────────────────┼───────────────────────────┤
              │Zażądano danych końcowych │ 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), arpd(8)

       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  5.13  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  są:  Andrzej  Krzysztofowicz
       <ankry@green.mf.pg.gda.pl>,   Robert   Luberda   <robert@debian.org>   i   Michał   Kułach
       <michal.kulach@gmail.com>

       Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe  informacje  o  warunkach  licencji
       można   uzyskać   zapoznając   się   z   GNU   General   Public   License   w   wersji   3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  lub  nowszej.  Nie   przyjmuje   się   ŻADNEJ
       ODPOWIEDZIALNOŚCI.

       Błędy  w  tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres listy dyskusyjnej
       ⟨manpages-pl-list@lists.sourceforge.net⟩.