Odwrotne wyszukiwania DNS spowalniają operacje sieciowe w sieci LAN

9

Środowisko

Konfiguracja mojej sieci LAN jest dość prosta:

  • Router podłączony do modemu usługodawcy internetowego i Internetu
  • Mój komputer programistyczny podłączony bezpośrednio do routera

Router zapewnia DHCP, ale nie uruchamia własnego serwera DNS. W rzeczywistości w mojej sieci LAN nie ma serwera DNS (typowa konfiguracja sieci domowej). Router jest skonfigurowany do wysyłania serwerów DNS usługodawcy internetowego w ramach informacji o dzierżawie DHCP.

Skonfigurowałem maszynę VirtualBox na moim komputerze programistycznym i zainstalowałem na niej Debian Squeeze (6.0.4). Tryb sieci VirtualBox polega Bridged Adapterna symulacji samodzielnego serwera w mojej sieci LAN. Bycie serwerem VirtualBox zamiast serwera fizycznego nie jest tak naprawdę ważne, ale wspominam o nim dla kompletności.

Problem

Za każdym razem, gdy operacja sieci wykonuje odwrotne wyszukiwanie DNS adresu IP sieci LAN przed wykonaniem, serwer ma duże opóźnienia. Niektóre przykłady powolnych operacji sieciowych:

  • Połączenie SSH z serwerem z mojego komputera deweloperskiego
  • Połączenie z portem administracyjnym serwera Glassfish
  • netstat -l( netstat -nljest bardzo szybki)
  • Starting MTA: exim4 po uruchomieniu zajmuje dużo czasu

Niektóre z nich mają obejścia, takie jak dodanie IP mojego dewelopera do komputera /etc/hostslub dodanie opcji specyficznej dla polecenia, aby uniknąć wyszukiwania wstecznego DNS. Oczywiście używanie /etc/hoststylko idzie tak daleko, ponieważ jest sprzeczne z DHCP.

Nie mogę jednak nie myśleć, że coś mi umknęło. Czy naprawdę muszę skonfigurować serwer DNS gdzieś w mojej sieci LAN? To wydaje się być ogromnym i bezużytecznym wysiłkiem dla moich potrzeb i nie mogę uwierzyć, że nie ma innej opcji w środowisku DHCP takim jak moje.

Często szukałem tego w sieci i może nie mam odpowiednich wyszukiwanych haseł, ale nie mogę znaleźć rozwiązania ...

aktualizacja 1 po odpowiedzi BillThora

Używanie hosta (dig daje te same wyniki):

# ip of stackoverflow.com
$ time host -v 64.34.119.12
Trying "12.119.34.64.in-addr.arpa"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15537
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;12.119.34.64.in-addr.arpa.     IN      PTR

;; ANSWER SECTION:
12.119.34.64.in-addr.arpa. 143  IN      PTR     stackoverflow.com.

Received 74 bytes from 192.168.1.1#53 in 15 ms

real    0m0.020s
user    0m0.008s
sys     0m0.000s

# ip of dev pc
$ time host -v 192.168.1.50
Trying "50.1.168.192.in-addr.arpa"
;; connection timed out; no servers could be reached

real    0m10.004s
user    0m0.004s
sys     0m0.000s

Mój /etc/resolv.conf (został automatycznie utworzony podczas instalacji)

nameserver 192.168.1.1

Zarówno host, jak i dig zwracają się bardzo szybko dla publicznego adresu IP, ale potrzeba 10 sekund na przekroczenie limitu czasu dla adresu IP LAN. Chyba 10s to moja bieżąca wartość limitu czasu.

aktualizacja 2

W dev-pcpliku / etc / hosts:

$ time getent hosts 192.168.1.50
192.168.1.50    dev-pc

real    0m0.001s
user    0m0.000s
sys     0m0.000s

Bez dev-pcw pliku / etc / hosts:

$ time getent hosts 192.168.1.50

real    0m10.012s
user    0m0.004s
sys     0m0.000s

Wygląda coraz bardziej, że będę musiał znaleźć częściowe opcje programu lub parametry dla każdego, kto próbuje wykonać odwrotne wyszukiwanie DNS! Żadna z maszyn (wirtualnych lub nie) nie może działać jako serwer DNS w mojej sieci LAN, ponieważ nie zawsze działają. Niestety oprogramowanie układowe routera nie obejmuje serwera DNS.

bernie
źródło

Odpowiedzi:

3

Czy 192.168.1.1 adres IP twojego routera?

nameserver 192.168.1.1 sugeruje, że router reklamuje się jako serwer DNS, a nie „wysyła serwery DNS usługodawcy internetowego”.

Jaką markę i model routera posiadasz? Czy interfejs sieciowy wyświetla komunikaty dziennika?

Zastanawiam się, czy router przekazuje żądanie do serwerów nazw Twojego dostawcy usług internetowych, ale serwery nazw Twojego dostawcy internetowego odrzucają to żądanie, ponieważ nie chcą, abyś wiedział, jak 192.168.1.50nazywa się ich komputer z adresem IP .

Propozycje:

  • Sprawdź dokładnie ustawienia routera. Powinien odpowiadać na prośby o twoją prywatną sieć . Może możesz dodać statyczny wpis hosta w interfejsie internetowym routera?
  • Spróbuj zainstalować Avahi na wszystkich systemach w sieci.
  • Powiedz routerowi, aby używał Google Public DNS ( 8.8.8.8i 8.8.4.4) lub OpenDNS
Mikel
źródło
Mój router to „NETGEAR Router WNR3500L” @ 192.168.1.1. Dzienniki pokazują tylko dzierżawę DHCP i loginy do interfejsu administratora. Masz rację, router wysyła 192.168.1.1 jako serwer dns podczas obsługi dzierżawy DHCP (potwierdzone Wireshark). W interfejsie administratora routera używam „Uzyskaj automatycznie od dostawcy usług internetowych” dla adresów DNS. Inną opcją jest określenie serwerów DNS bezpośrednio według adresu IP. Myślę, że to oznacza, że ​​żądania DNS są faktycznie przekazywane przez router.
bernie
Tak, zgaduję, że przekazuje żądania DNS. Co się stanie, jeśli zmienisz go, aby zamiast tego korzystał z Google Public DNS ( 8.8.8.8i 8.8.4.4)?
Mikel
Wow, to robi WIELKĄ różnicę! Najwyraźniej te serwery DNS (Google i OpenDNS) szybko się psują, jeśli otrzymają prywatny adres IP. Przeprowadzę jeszcze kilka testów, ale myślę, że to rozwiązuje mój problem!
bernie
Oznacz to jako zaakceptowaną odpowiedź. Te 3 odpowiedzi były pomocne, ale zmiana serwerów dns rozwiązała problem „w całości”.
bernie
4

Niepowodzenie wyszukiwania DNS powinno szybko zakończyć się niepowodzeniem. Jednak generalnie uruchamiam dnsmasq, który odczyta plik hosts i wyświetli te wpisy dla wyszukiwania do przodu i wstecz. Działa również jako serwer buforujący DNS, aby zmniejszyć obciążenie twoich serwerów DNS.

Możesz użyć polecenia hostlub, digaby zobaczyć, które wyszukiwania są wolne. Jeśli zostaniesz przekierowany na serwer DNS, na którym nie działa DNS, może to potrwać dość długo. Możesz dostosować limity czasu i ponownych prób, /etc/resolv.confaby przyspieszyć awarie.

EDYCJA: Aby przetestować odpowiedź resolvera, spróbuj użyć time getent hosts 192.168.1.50. Powinno to zwrócić wyszukiwania z twojego /etc/hostspliku oraz DNS. Te hosti digpolecenia tylko sprawdzić DNS. Jeśli to nastąpi, ale potrwa kilka sekund, możesz zmienić kolejność hostswpisów w /etc/nsswitch.confplikach przenoszenia na początek listy.

Skonfigurowanie dnsmasqi używanie go jako podstawowego serwera nazw DNS w /etc/resolve.confpowinno rozwiązać problem, jeśli masz jakieś programy, które polegają tylko na DNS do wyszukiwania nazw. Exim powinien używać resolvera do wyszukiwania podstawowego. Będziesz potrzebował /etc/hostspliku, chyba że możesz wyłączyć serwer DHCP na routerze, możesz użyć dnsmasqdla DHCP. dnsmasqautomatycznie zarejestruje nazwy, jeśli są podane w żądaniach DHCP, które obsługuje.

EDYCJA 2: Jeśli żaden z twoich komputerów nie zawsze działa, możesz spróbować zainstalować sambę i użyć jej winsw konfiguracji nsswitch. Powinien być szybki, więc może działać, jeśli umieścisz go przed dnswpisem hostów.

Możesz także spojrzeć na instalację avahinarzędzi, które umożliwią automatyczne wykrywanie w sieciach lokalnych. Mam go działającego po stronie IPv6, ale nie publikuje adresów IPv4. Domyślna domena dla hostów to „.local”. Może to nie być odpowiednie w twoim przypadku, ale może zostać zastąpione. Wydaje się również, że wyszukiwanie jest wolniejsze niż wcześniej, winsdlatego mdnswyprzedzanie dnskonfiguracji nsswitch może nie być odpowiednie.

BillThor
źródło
Wydaje mi się, że powiedział, że wszystkie (i tylko) wyszukiwanie LAN jest wolne i próbuje całkowicie uniknąć pliku hosts.
ckhan
Ponieważ jest to tylko serwer testowy (i także wirtualny!), Nie mogę na nim polegać jako serwer DHCP dla całej sieci LAN. Istnieją również inne okazjonalne klienty bezprzewodowe, które potrzebują adresu IP, nawet jeśli mój komputer programistyczny, a zatem serwer testowy, nie działa.
bernie
Zaktualizowałem mój post ponownie. Dziękuję za pomoc do tej pory.
bernie
3

Jeśli nie chcesz wykonywać czynności konfigurowania lokalnego serwera DNS (i potencjalnie DHCP) dla sieci domowej, możesz poinformować usługi tam, gdzie to możliwe, aby nie przeprowadzały wyszukiwania wstecznego DNS.

Na przykład, aby wyłączyć wyszukiwanie SSN do SSN, dodaj do sshd_configpliku następujące (lub podobne w zależności od dystrybucji):

UseDNS no

Możesz usunąć ten wiersz z konfiguracji Exim, chociaż nie jestem pewien, czy będzie to miało wpływ na szybkość uruchamiania, uniemożliwi to odwrotne wyszukiwanie dns przy łączeniu klientów:

host_lookup = *

Wygląda na to, że możesz wyeksportować tę zmienną środowiskową dla użytkownika, który rozpoczyna proces Glassfish:

export AS_NO_REVERSE_DNS=true

George M.
źródło
Chciałbym móc skonfigurować serwer DNS z rzeczywistym sprzętem, który mam, ale tak naprawdę nie jest to wykonalne, dopóki nie załaduję alternatywnego oprogramowania układowego na routerze. Dzięki za opcje konfiguracji; Nie dowiedziałem się o AS_NO_REVERSE_DNSopcji Glassfish, więc przyjrzę się.
bernie
1

Miał ten sam problem po zmianie z dynamicznego na statyczny adres IP. Moja sieć skonfigurowana teraz: STATYCZNA - BRAK IPv6 i nie zamierza używać serwera pocztowego.

Rozwiązałem problem, wykonując:

1: uruchom dpkg-rekonfiguruj exim4-config

2: Po przejściu do pytania wyszukiwania DNS -> Ustaw wyszukiwanie DNS na minimum (połączenie telefoniczne)

Dał mi błąd, że tego rodzaju wyszukiwania nie będą działać, i sugestię edytowania / etc / hosts - ale jedyną rzeczą, którą zrobiłem z / etc / hosts, było skomentowanie linii ip6-allnodes i ip6-allrouters.

Ponowne uruchomienie powinno być teraz szybkie (przynajmniej dla mnie).

PIŁA
źródło