Zastanawiam się, czy istnieje sposób na zapytanie serwera DNS i ominięcie buforowania (z dig
). Często zmieniam strefę na serwerze DNS i chcę sprawdzić, czy poprawnie rozpoznaje ona strefę na mojej stacji roboczej. Ale ponieważ pamięć podręczna serwera rozwiązała żądania, często otrzymuję stare. Ponowne uruchomienie lub załadowanie serwera nie jest naprawdę przyjemne.
linux
domain-name-system
dig
Daniel
źródło
źródło
+norecurse
zaleca się.+recurse
jest domyślnie włączony, od czasu do czasu zmienia sposób, w jaki serwer DNS całkowicie interpretuje twoje pytanie.+trace
ale uważaj na buforowanie. Andrew B napisał dobre wyjaśnienie, w jaki sposób buforowanie może Cię oszukać, czekając na zmianę serwerów nazw.dig @8.8.8.8 example.com
. zapisy pojawiają się tam znacznie szybciej.Nie ma standardowego, niezawodnego sposobu zmuszenia serwera nazw do odpowiedzi bez użycia pamięci podręcznej. Dig nie jest serwerem nazw, to po prostu narzędzie, które przekazuje zapytanie do dowolnego skonfigurowanego serwera nazw, przy użyciu standardowych żądań DNS. Jest to sposób, aby powiedzieć „nie używaj rekursji”, ale to nie jest to, co chcesz - to po prostu uniknąć wyszukiwań nazw domen na szerszym dostępem do Internetu.
Jeśli chcesz zatrzymać serwer nazw przed odpowiedzią z pamięci podręcznej, musisz to osiągnąć, zmieniając konfigurację serwera nazw , ale jeśli nie kontrolujesz serwera nazw, nie możesz tego zrobić.
Możesz jednak uzyskać wykop, aby ominąć skonfigurowane serwery nazw i wykonać własne żądanie rekurencyjne, które wraca do serwerów głównych. Aby to zrobić, użyj
+trace
opcji.W praktyce, ponieważ spowoduje to wysłanie zapytania tylko do autorytatywnych serwerów, a nie lokalnego programu rozpoznawania pamięci podręcznej, wynik nie będzie przestarzały, nawet jeśli te serwery wykorzystują buforowanie wewnętrzne. Dodatkową zaletą używania
+trace
jest to, że możesz zobaczyć wszystkie oddzielne żądania złożone wzdłuż ścieżki.źródło
+norecurse
po prostu mówi serwerowi nazw, aby zwrócił wszelkie informacje, które posiada (w tym informacje z pamięci podręcznej, jeśli istnieją), więc nie jest to poprawne.+trace
będzie działać, ponieważ będzie podążać za łańcuchem rekurencji aż do autorytatywnego serwera.+norecurse
zalecenie, ponieważ pomieszało to problem.Należy tu zauważyć ważną kwestię, o której zauważam, że wiele osób nigdy nie bierze pod uwagę, gdy mówi o
+trace
tym, że użycie+trace
oznacza, że klient kopiowania wykona śledzenie, a nie serwer DNS określony w konfiguracji (/etc/resolv.conf). Innymi słowy, twój klient kopiowania będzie działał tak jak rekurencyjny serwer DNS, gdybyś go poprosił. Ale - co ważne, nie masz pamięci podręcznej.Więcej szczegółów - więc jeśli już poprosiłeś o
mx
rekord przy użyciudig -t mx example.com
i /etc/resolv.conf to 8.8.8.8, to zrobienie czegokolwiek wewnątrz TTL strefy zwróci buforowany wynik. W pewnym sensie, jeśli szukasz czegoś na temat własnej strefy i tego, jak Google ją widzi, to w pewnym sensie zatrułeś wyniki DNS za pomocą Google dla TTL swojej strefy. Nieźle, jeśli masz krótki czas TTL, nieco śmieci, jeśli masz 1 godzinę.Tak więc, chociaż
+trace
pomoże ci zobaczyć, co POWINIENEŚ zobaczyć, gdybyś poprosił Google po raz pierwszy i nie miał wpisu z pamięci podręcznej, może dać ci fałszywy pomysł, że Google powie każdemu to samo, co+trace
wynik, który nie zrobi tego, jeśli poprosiłeś wcześniej i będziesz miał długi czas TTL, ponieważ będzie on podawany z pamięci podręcznej aż do wygaśnięcia TTL - NASTĘPNIE będzie służyć tak samo, jak to, co+trace
ujawniłeś.Nie mogę mieć zbyt wielu szczegółów IMO.
źródło
dig mydomain.com +trace
po prostu zwraca miresolvd
wyniki z127.0.0.53
. Zobacz github.com/systemd/systemd/issues/5897+trace
dig rozpoczyna się śledzenie przy użyciu określonego serwera nazw (np. 8.8.8.8, jeśli tak właśnie skonfigurowałeś) dla pierwszego wyszukiwania (strefa główna), ale potem używa on zwróconych serwerów nazw dla dalszych zapytań. Jeśli więc skonfigurowany serwer nazw nie działa lub nie odpowiada poprawnie na zapytanie dotyczące głównych serwerów nazw, możesz mieć problemy (jak w powyższym komentarzu).Ta bash wykopie wpisy DNS example.com z jego pierwszego serwera nazw:
Oto to samo co alias dla .zshrc (i prawdopodobnie .bashrc):
Oto wynik dla / .:
To rozwiązanie jest wystarczająco skomplikowane, aby było niepraktyczne do zapamiętania, ale wystarczająco proste, aby problem nie został rozwiązany.
dig
to nie moja specjalność - mile widziane ulepszenia :-)źródło