Zmiany w /etc/hosts
pliku wydają się obowiązywać natychmiast. Jestem ciekawa implementacji. Jaką magię stosuje się, aby osiągnąć tę funkcję?
networking
hosts
Rudwna
źródło
źródło
Odpowiedzi:
Magia polega na otwarciu
/etc/hosts
pliku i jego odczytaniu:getaddrinfo(3)
Funkcja, która jest tylko nazwa rozwiązywania standardowy interfejs, po prostu otworzyć i przeczytać/etc/hosts
każdym razem, gdy jest powołany, aby rozwiązać nazwę hosta.Bardziej wyrafinowane aplikacje, które nie używają standardu
getaddrinfo(3)
, ale wciąż w jakiś sposób dodają/etc/hosts
do miksu (np.dnsmasq
Serwer DNS), mogą być używaneinotify(7)
do monitorowania zmian w/etc/hosts
plikach i ponownego odczytu tylko w razie potrzeby.Przeglądarki i inne takie aplikacje tego nie zrobią. Będą się otwierać i czytać za
/etc/hosts
każdym razem, gdy będą musieli rozwiązać nazwę hosta, nawet jeśli nie korzystają bezpośrednio z resolvera libc, ale replikują jego działanie w inny sposób.źródło
Rozpoznawaniem nazw, między innymi, zarządza
/etc/nsswitch.conf
. Oto fragment:Zanotuj
hosts
linię. Mówi: „Podczas rozwiązywania nazwy hosta najpierw przeczytaj/etc/hosts
plik, aby wyszukać nazwę hosta, jeśli nie zostanie znaleziony, a następnie uruchom zapytanie DNS, jeśli nie zostanie znaleziony, wypróbuj lokalnie skonfigurowaną nazwę hosta systemu”.Oto dlaczego jest tak szybki. Pamiętaj, że nie zależy to od usług sieciowych na komputerze, więc nie ma usługi do ponownego uruchomienia lub ponownego załadowania.
źródło
/etc/hosts
. Dlaczego nie używa wersji z pamięci podręcznej?