oracular (7) arp.7.gz

Provided by: manpages-pl_4.23.1-1_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           │
              ├──────────────────────────┼───────────────────────────┤
              │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.

USTERKI

       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.

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⟩.