resolv.conf - plik konfiguracyjny mechanizmu obsługi nazw
(ang. resolver)
Obsługa nazw (resolver) jest zbiorem funkcji
biblioteki C, które umożliwiają dostęp do
internetowego systemu serwerów nazw (DNS). Plik konfiguracyjny
zawiera informacje, odczytywane przez procedury obsługi nazw podczas
ich pierwszego wywołania przez proces, i jest czytelny zarówno
dla maszyny, jak i dla człowieka. Zawiera listę
słów kluczowych z wartościami, które
udostępniają różne informacje dotyczące
obsługi nazw. Plik konfiguracyjny jest uważany za zaufane
źródło informacji DNS; więcej informacji w
opisie opcji trust-ad.
Jeśli ten plik nie istnieje, to jedynym odpytywanym
serwerem nazw jest wtedy ten z maszyny lokalnej, a lista przeszukiwań
zawierająca nazwę lokalnej domeny jest konstruowana z nazwy
komputera.
Opcje konfiguracji są następujące:
- nameserver
Adres IP serwera nazw.
- Adres internetowy serwera nazw, który powinien być
odpytywany przez funkcje obsługi nazw albo jako adres IPv4 (w
notacji kropkowej) lub jako adres IPv6 w notacji dwukropkowej (i
być może kropkowej) zgodnie z RFC 2373. W pliku można
podać maksymalnie MAXNS (obecnie 3, patrz
<resolv.h>) serwery nazw, po jednym przy słowie
kluczowym. Jeśli jest kilka serwerów, biblioteka
obsługi nazw odpytuje je w kolejności, w jakiej
zostały wymienione. Jeśli nie ma żadnego wpisu
nameserver, domyślnym zachowaniem jest korzystanie z serwera
nazw na maszynie lokalnej. (Stosowany algorytm polega na próbie
odpytania serwera nazw, a jeśli przekroczy ona czas oczekiwania,
następuje próba odpytania następnego, aż
zabraknie serwerów nazw. Następnie występuje
ściśle określona liczba ponownych odpytań
wszystkich serwerów nazw).
- search Lista
przeszukiwania nazw komputerów.
- Domyślnie, lista przeszukiwań zawiera jeden wpis -
nazwę lokalnej domeny. Jest ona określana na podstawie nazwy
lokalnego komputera, zwróconej przez gethostname(2) - za
domenę uważa się wszystko po pierwszej
„.”. Ostatecznie, jeśli nazwa komputera nie zawiera
„.” za domenę główną przyjmowana
jest nazwa lokalnej domeny.
- Można to zmienić, przez podanie żądanej
ścieżki poszukiwania domeny po słowie kluczowym
search, używając spacji lub tabulacji do oddzielenia
nazw. Funkcje obsługi nazw dla zapytań zawierających
w sobie mniej niż ndots kropek (domyślnie - 1)
będą próbowały kolejnych
składników ścieżki poszukiwania, aż do
znalezienia. Dla środowisk z wieloma poddomenami, proszę
przeczytać poniżej options ndots:n, aby
uniknąć ataków typu man-in-the-middle oraz
niepotrzebnego odpytywania głównych serwerów nazw.
Należy zauważyć, że proces ten może
być powolny i powodować duże obciążenie
sieci, jeśli serwery dla podanych domen nie są lokalne, a
czas oczekiwania na odpowiedź po zapytaniu przekracza czas
oczekiwania, gdy dla którejś z domen wszystkie serwery
są niedostępne.
- Jeśli występuje wiele wpisów search,
użyta będzie wyłącznie lista
przeszukiwań z ostatniego wpisu.
- W glibc 2.25 i wcześniejszych, lista przeszukiwania jest
ograniczona do sześciu domen z maksymalną liczbą 256
znaków. Od glibc 2.26 brak limitów listy
przeszukiwania.
- Opcja domain jest przestarzałym odpowiednikiem listy
przeszukiwania search, która obsługuje tylko
pojedynczy wpis.
- sortlist
- Umożliwia sortowanie adresów zwracanych przez
gethostbyname(3). Lista sortowania jest podawana przez pary
adresów IP i masek sieci. Maska sieci jest opcjonalna i
domyślnie ma wartość naturalnej maski dla danej
sieci. Adres IP jest oddzielany od maski sieci ukośnikiem. W polu
tym można podawać do 10 par. Przykład:
-
sortlist 130.155.160.0/255.255.240.0 130.155.0.0
- options
- Pole to umożliwia modyfikację pewnych wewnętrznych
zmiennych funkcji obsługi nazw. Jego składnia to:
- options opcja ...
gdzie opcja jest jedną z
następujących:
- debug
- Ustawia RES_DEBUG w _res.options (działa tylko gdy
glibc został zbudowany z obsługą debugowania; zobacz
resolver(3)).
- ndots:n
- Ustawia próg liczby kropek, które muszą
pojawić się w nazwie podanej do res_query (zobacz
resolver(3)) przed wykonaniem początkowego absolutnego
zapytania. Domyślną wartością jest
"1", co oznacza, że jeśli w nazwie znajdują
się jakieś kropki, to powinna być najpierw sprawdzona
jako nazwa absolutna, bez dokonywania żadnych podstawień
listy poszukiwania. Maksymalną wartością jest 15,
większe wartości zostaną zmniejszone, bez wypisywania
żadnych ostrzeżeń.
- timeout:n
- Ustawia czas, przez który funkcja obsługi nazw będzie
czekać na odpowiedź ze zdalnego serwera nazw przed
wysłaniem zapytania do innego serwera nazw. Może to
nie być całkowity czas, jaki jaki zajmie
wywołanie interfejsu obsługi nazw i brak gwarancji,
że pojedyncze wywołanie odpowiada jednemu limitowi czasu.
Wyrażony w sekundach, domyślnie - RES_TIMEOUT
(obecnie 5, patrz <resolv.h>). Maksymalną
wartością jest 30, większe wartości
zostaną zmniejszone, bez wypisywania żadnych
ostrzeżeń.
- attempts:n
- Ustawia liczbę prób wysyłania przez funkcję
obsługi nazw zapytań do serwerów nazw przed poddaniem
się i zwróceniem błędu. Domyślnie -
RES_DFLRETRY (obecnie 2, patrz <resolv.h>). Maksymalną
wartością jest 5, większe wartości
zostaną zmniejszone, bez wypisywania żadnych
ostrzeżeń.
- rotate
- Ustawia RES_ROTATE w _res.options, powodując
wybór serwera nazw spośród wymienionych
serwerów za pomocą algorytmu round-robin. Efektem tej opcji
jest rozłożenie obciążenia zapytaniami
wszystkich wymienionych serwerów nazw, zamiast odpytywania za
każdym razem pierwszego z nich.
- no-aaaa (od glibc
2.26)
- Ustawia RES_NOAAAA w _res.options, co powstrzymuje zapytania
AAAA wykonywane przez minimalny mechanizm rozwiązujący nazwy
(ang. stub resolver), w tym wyszukiwania AAAA wyzwolone przez interfejsy
oparte o NSS, takie jak getaddrinfo(3). Dotyczy to
wyłącznie zapytania DNS: dane IPv6 w hosts(5)
są wciąż używane, getaddrinfo(3) z
AI_PASSIVE wciąż utworzy adresy IPv6, a
skonfigurowane serwery nazw IPv6 są wciąż
używane. Aby utworzyć prawidłowe wyniki Name Error
(NXDOMAIN), zapytania AAAA są tłumaczone na zapytania A.
Opcja ta służy głównie do zastosowań
diagnostycznych, aby wykluczyć negatywny wpływ,
leżący po stronie zapytań AAAA DNS. Jest
niekompatybilna z używaniem EDNS0 oraz walidacją DNSSEC
przez aplikacje.
- no-check-names
- Ustawia RES_NOCHECKNAME w _res.options, co
wyłącza sprawdzanie przez nowoczesne serwery BIND
przychodzących nazw komputerów i nazw pocztowych pod
kątem niepoprawnych znaków, takich jak podkreślenie
(_), znaki nie-ASCII lub znaki sterujące.
- inet6
- Ustawia RES_USE_INET6 w _res.options. Efektem tego jest
próbowanie zapytań AAAA przed zapytaniami A wewnątrz
funkcji gethostbyname(3) i mapowanie odpowiedzi IPv4 na
"tunelowaną formę" IPv6, jeżeli znaleziono
tylko rekordy A, bez rekordów AAAA. Od glibc 2.25 opcja ta jest
przestarzała, aplikacje powinny korzystać z
getaddrinfo(3), zamiast z gethostbyname(3).
Niektóre programy zachowują się dziwacznie,
jeśli ta opcja jest włączona.
- ip6-bytestring (od glibc
2.3.4 do glibc 2.24)
- Ustawia RES_USE_BSTRING w _res.options. Powoduje to,
że odwrotne wyszukiwania IPv6 będą
używać formatu etykiet bitowych ("bit-label")
opisanego w RFC 2673. Jeśli ta opcja nie jest ustawiona (tak
jest domyślnie), to będzie używany format
półbajtowy. Opcja usunięta w glibc 2.25,
ponieważ korzystała z niekompatybilnego wstecznie
rozszerzenia DNS, które nigdy nie zostało zaimplementowane w
Internecie.
- ip6-dotint/no-ip6-dotint
(od glibc 2.3.4 do glibc 2.24)
- Czyści lub ustawia RES_NOIP6DOTINT w _res.options.
Jeśli opcja ta jest wyczyszczona (ip6-dotint), wyszukiwania
odwrotne IPv6 są przeprowadzane w (niezalecanej) strefie
ip6.int. Gdy opcja ta jest włączona
(no-ip6-dotint), odwrotne wyszukiwania IPv6 są
przeprowadzane w strefie ip6.arpa. Opcje te są
dostępne do glibc 2.24, gdzie no-ip6-ditint jest
domyślnie włączona. Ponieważ obsługa
ip6-dotint dawno temu zaniknęła w Internecie, opcje
usunięto w glibc 2.25.
- edns0 (od wersji 2.6
biblioteki glibc)
- Ustawia RES_USE_EDNS0 w _res.options. Włącza
to obsługę rozszerzeń DNS opisanych w
RFC 2671.
- single-request (od
wersji 2.10 biblioteki glibc)
- Ustawia RES_SNGLKUP w _res.options. Domyślnie glibc
równolegle odpytuje IPv4 i IPv6 od glibc 2.9. Niektóre
urządzenia serwerów DNS nie obsługują
poprawnie takich zapytań i powodują błąd
przekroczenia czasu oczekiwania na odpowiedź. Opcja ta
wyłącza takie zachowanie i sprawia, że glibc odpytuje
o IPv6 i IPv4 sekwencyjnie (kosztem pewnego spowolnienia procesu
translacji nazw).
- single-request-reopen
(od wersji 2.9 biblioteki glibc)
- Ustawia RES_SNGLKUPREOP w _res.options. Mechanizm
rozwiązujący używa tych samych gniazd do
żądań A i AAAA. Część
rozwiązań sprzętowych nieprawidłowo
odsyła pojedynczą odpowiedź. Gdy tak się
stanie, klient systemowy poczeka na drugą odpowiedź.
Włączenie tej opcji zmienia to zachowanie, dzięki
czemu jeśli dwa żądania z tego samego portu nie
są poprawnie obsługiwane, to nastąpi
zamknięcie oraz otworzenie nowego gniazda przed wysłaniem
drugiego żądania.
- no-tld-query (od wersji
2.14 biblioteki glibc)
- Ustawia RES_NOTLDQUERY w _res.options. Ta opcja powoduje,
że res_nsearch() nie próbuje
rozwiązywać niejednoznacznej nazwy w sposób, jak
gdyby była ona domeną najwyższego poziomu (ang. top
level domain - TLD). Ta opcja może powodować problemy, gdy
strona jako TLD ma "localhost", zamiast umieścić
"localhost" jako jeden z elementów listy wyszukiwania.
Opcja nie działa, jeśli nie ustawiono ani RES_DEFNAMES, ani
RES_DNSRCH.
- use-vc (od wersji 2.14
biblioteki glibc)
- Ustawia RES_USEVC w _res.options. Wymusza użycie TCP
do rozwiązywania nazw DNS.
- no-reload (od wersji
2.26 biblioteki glibc)
- Ustawia RES_NORELOAD w _res.options. Opcja
wyłącza automatyczne przeładowanie zmienionego pliku
konfiguracyjnego.
- trust-ad (od wersji
2.31 biblioteki glibc)
- Ustawia RES_TRUSTAD w _res.options. Opcja kontroluje
zachowanie bitu AD w minimalnym mechanizmie rozwiązującym
nazwy (ang. stub resolver). Jeśli walidująca funkcja
obsługi nazw ustawi bit AD w odpowiedzi, oznacza to że dane
zawarte w odpowiedzi zostały zweryfikowane zgodnie z
protokołem DNSSEC. Aby móc polegać na bicie AD,
lokalny system musi ufać zarówno walidującej funkcji,
jak i ścieżce sieciowej prowadzającej do niej - co
jest powodem konieczności jawnego włączenia tego
ustawienia. Jeśli opcja trust-ad jest aktywna, minimalny
mechanizm rozwiązujący nazwy ustawia bit AD w
wychodzących zapytaniach DNS (aby włączyć
obsługę bitu AD) i zachowuje go w odpowiedziach. Bez tej
opcji, bit AD nie jest ustawiany w zapytaniach oraz jest zawsze usuwany z
odpowiedzi, przed ich przekazaniem aplikacjom. Oznacza to, że
aplikacje mogą zaufać bitowi AD w odpowiedziach,
jeśli opcja trust-ad została prawidłowo
ustawiona.
- W glibc 2.30 i starszych, AD nie jest ustawiany automatycznie w
zapytaniach, a w odpowiedziach jest przekazywany aplikacjom bez
żadnych zmian.
Słowo kluczowe search systemowego resolv.conf
można nadpisać dla danego procesu nadając zmiennej
środowiskowej LOCALDOMAIN wartość
będącą rozdzieloną spacjami listą domen
poszukiwania.
Słowo kluczowe options systemowego
resolv.conf można poprawić dla danego procesu
nadając zmiennej środowiskowej RES_OPTIONS
wartość będącą rozdzieloną
spacjami listą opcji obsługi nazw (opcje opisano
powyżej, pod hasłem options).
Słowo kluczowe i wartość muszą
pojawiać się w tej samej linii oraz słowo kluczowe (np.
nameserver) musi rozpoczynać linię.
Wartość jest elementem następującym po
słowie kluczowym i jest od niego oddzielona znakiem spacji lub
tabulacji.
Linie zaczynające się od znaku średnika
(";") lub hasha ("#") są traktowane jako
komentarze.
/etc/resolv.conf, <resolv.h>
Tłumaczenie niniejszej strony podręcznika: Przemek
Borys <pborys@dione.ids.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 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.