Jak opróżnić lokalną pamięć podręczną DNS w CentOS


20

Szukam sposobu na opróżnienie lokalnej pamięci podręcznej DNS na CentOS 6.

W systemie nie działa żaden serwer DNS ani nic takiego, i chcę, aby każde zapytanie DNS wysyłane było do skonfigurowanego serwera nazw, nawet w przypadku duplikatów.

Większość tego, co znalazłem w Internecie, każe mi robić service nscd restart, ładować lub robić nscd -i hosts. Jednak wydaje się, że nikt nie opróżnia pamięci podręcznej.

Zastanawiam się więc, czy ktoś ma pomysł, jak to zrobić. Czy w jądrze jest jakiś przełącznik, który muszę przerzucić? Każdy rodzaj obejścia jest również w porządku.


Co robisz, aby sprawdzić, czy pamięć podręczna została opróżniona, czy nie?
John

ok, jest to trochę skomplikowane, mam program w moim systemie nasłuchujący na porcie 53 i przekazujący zapytania DNS w określony sposób, a także serwer proxy HTTP wykorzystujący localhost jako „serwer DNS”; przy pierwszym zapytaniu (powiedzmy wget -e 'http_proxy=localhost:3128' xxx.com) widzę, że zapytanie jest przesyłane poprawnie, ale wszystkie kolejne nie są. Jeśli zaczekam wystarczająco długo (pamięć podręczna wygasa), to będzie działać ponownie.
zee

Skonfigurowałem też proxy (kałamarnicę), aby nie buforował żadnego obiektu, więc zakładam, że system wciąż buforuje odpowiedź
Zee

1
nscd -i hosts -> działa za każdym razem. Zrestartowałem nscd 3 razy z rzędu i nie chciałem wyczyścić pamięci podręcznej.
Danie

nscd nie wydaje się być czymś minimalnym w CentOS 7. Wiem, że pytanie wywołuje CentOS 6, ale tytuł ogólnie woła o CentOS. Jaki jest sposób CentOS 7?
duct_tape_coder

Odpowiedzi:


11

To nie twoje lokalne urządzenie buforuje żądania DNS, ale jest to resolver DNS, którego używasz w swoim /etc/resolv.confbuforze.

Aby zapobiec otrzymywaniu odpowiedzi na te buforowane zapytania:

  1. Zmień resolver.

    $ dig @<resolve-ip> www.google.com

  2. Opróżnij pamięć podręczną DNS programu tłumaczącego, jeśli możesz uzyskać dostęp do serwera DNS.

    $ sudo /etc/init.d/bind restart


Hmm, ale ustawiłem dns_nameservers 127.0.0.1w pliku konfiguracyjnym proxy, a nasłuchiwanie przesyła zapytania tylko do wstępnie skonfigurowanego serwera nazw, czy nie powinno być tak, że resolv.conf nawet nie jest konsultowany?
Zee

4
„bash: /etc/init.d/bind: Brak takiego pliku lub katalogu”. Metoda OP otrzymuje komunikat „Nie można zrestartować nscd.service: Nie można załadować jednostki nscd.service: Brak takiego pliku lub katalogu”. Myślę, że zostały one przeniesione / zmienione. Dlaczego nie mogą po prostu zostawić rzeczy, które działają, lub przynajmniej zachować aliasy? Wystarczająco źle, aby zostać specjalistą od systemu operacyjnego, aby po prostu użyć Linux-boxa. Gorzej, gdy musisz ponownie nauczyć się systemu operacyjnego z każdą wersją.
JosephK,

3

Nawet po odświeżeniu lub opróżnieniu pamięci podręcznej DNS na komputerze klienckim, jeśli to nie działa, spójrz, czy twój serwer lub komputer kliencki jest powiązany z dowolnym serwerem NIS, jeśli tak, zmień opcję „hosts: pliki nis dns” na „hosts: pliki dns nis” wpis w pliku /etc/nsswitch.conf, a także musisz zmienić adres IP na liście hostów serwera głównego NIS.


Doprowadziło to do mojego rozwiązania. Wewnątrz / etc / hosts znajdował się poprzednio skonfigurowany statycznie stary adres IP. Coś, co zrobiłem jakiś czas temu. Usunięcie tej linii (lub zastąpienie jej nowym adresem IP) rozwiązało problem i pozwoliło mi na pingowanie mojego komputera przy użyciu jego nazwy hosta.
Paul

3

Jestem prawie pewien, że to nie system buforuje odpowiedź - ta część (buforowanie systemu) jest obsługiwana tylko przez nscddemona. Ponowne uruchomienie (lub całkowite zatrzymanie) tego demona resetuje lub eliminuje buforowanie przez system operacyjny odpowiedzi na żądania usługi nazw.

Oferuję dwie możliwości, chociaż niestandardowy odbiornik, który skonfigurowałeś na porcie 53, znacznie zabija wody:

  • Odp .: Twój system wysyła zapytania w górę, ale natychmiastowe rozpoznawanie nazw w górę zapisuje w pamięci podręcznej odpowiedź na podstawie ustawień lub TTL rekordu.
  • B) Twój niestandardowy obiekt nasłuchujący buforuje odpowiedzi wewnętrznie i po prostu przekazuje tę odpowiedź z powrotem do systemu, gdy zostanie ponownie zapytany przed upływem czasu pamięci podręcznej.

Dzięki za dane wejściowe, ale słuchacz nie robi nic poza przekazywaniem zapytania i odpowiedzi, w końcu to tylko 200 linii kodu. Nie powinien to być drugi przypadek; również słuchacz drukuje wszystko, co otrzymuje, więc jestem pewien, że tak naprawdę nic nie otrzymuje: |
zee
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.