Ś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 Adapter
na 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 -nl
jest 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/hosts
lub dodanie opcji specyficznej dla polecenia, aby uniknąć wyszukiwania wstecznego DNS. Oczywiście używanie /etc/hosts
tylko 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-pc
pliku / 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-pc
w 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.
źródło
8.8.8.8
i8.8.4.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
host
lub,dig
aby 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.conf
aby 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/hosts
pliku oraz DNS. Tehost
idig
polecenia tylko sprawdzić DNS. Jeśli to nastąpi, ale potrwa kilka sekund, możesz zmienić kolejnośćhosts
wpisów w/etc/nsswitch.conf
plikach przenoszenia na początek listy.Skonfigurowanie
dnsmasq
i używanie go jako podstawowego serwera nazw DNS w/etc/resolve.conf
powinno 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/hosts
pliku, chyba że możesz wyłączyć serwer DHCP na routerze, możesz użyćdnsmasq
dla DHCP.dnsmasq
automatycznie 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
wins
w konfiguracji nsswitch. Powinien być szybki, więc może działać, jeśli umieścisz go przeddns
wpisem hostów.Możesz także spojrzeć na instalację
avahi
narzę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,wins
dlategomdns
wyprzedzaniedns
konfiguracji nsswitch może nie być odpowiednie.źródło
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_config
pliku 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
źródło
AS_NO_REVERSE_DNS
opcji Glassfish, więc przyjrzę się.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).
źródło