Moje miejsce pracy ma intranetu z nazwami domen, takich jak server01.foo.local
, server02.foo.local
itp Niedawno uruchomiony na Fedora 16 na żywo środowisko przetestować go i odkrył, że te nazwy domen nie rozwiążą.
Na przykład:
$ ping server01.foo.local
ping: nieznany host server01.foo.local
$ ping server01
PING server01.foo.local (XXXX) ...
Dlaczego server01
rozwiąże (i wydrukuje nazwę jako server01.foo.local
), ale server01.foo.local
nie zrobi tego?
linux
networking
dhcp
rhollencamp
źródło
źródło
Odpowiedzi:
Chociaż nie jestem w 100% przekonany, dlaczego nie działa zgodnie z oczekiwaniami, wydaje się, że istnieje bardzo duży konflikt z usługą mDNS (Avahi w Linuksie, Bonjour / Zeroconf w Mac / Windows) i sieciami Windows, które użyj .local jako wewnętrznej nazwy routingu dla domen. Wydaje się, że zdarza się, że podczas pingowania server01 pomija użycie mDNS do rozpoznawania, a następnie dołącza domenę wyszukiwania (foo.local) do żądania, pomyślnie wysyłając zapytanie do serwera DNS o server01.foo.local. Jednakże, gdy używasz mDNS (który używa .local jako domyślnego rozszerzenia nazwy komputera), kiedy próbujesz pingować server01.foo.local, w rzeczywistości transmituje przez mDNS, szukając komputera o nazwie „server01.foo”; gdy zawiedzie, z jakiegokolwiek powodu nie przechodzi do bezpośredniego DNS. Dużym obejściem tego problemu jest brak nazewnictwa domeny .local, co prawdopodobnie stoi w sprzeczności ze szkoleniem większości administratorów Windows w zakresie strukturyzowania domen. Biorąc to pod uwagę:
Jeśli mDNS nie ma znaczenia w Twojej sieci (jak to zwykle bywa w przedsiębiorstwie, które ma tendencję do uruchamiania dedykowanych serwerów DNS w porównaniu do sieci domowej, w której czasami używany jest mDNS), zmiana kolejności wyszukiwania jest najłatwiejszym obejściem.
Można to znaleźć w pliku /etc/nsswitch.conf. Sekcja dla hostów wyświetli listę kolejności, która dla Fedory 16 jest domyślna:
Jeśli zmienisz to na:
gdzie przesuwasz dns do przodu w kolejności wyszukiwania, to na razie powinno to naprawić. Alternatywnie, jeśli wiesz, że wcale nie będziesz potrzebować mDNS, po prostu usuń część „mdns4_minimal [NOTFOUND = return]”.
Patrząc na ten błąd w trackerze Red Hata , wydaje się, że jest to długotrwały problem bez widocznego rozwiązania w tej chwili. Gdyby ktoś mógł uzyskać więcej informacji na temat tego, dlaczego tak się dzieje, byłoby to mile widziane.
źródło
vpnc
nie może się połączyć po usunięciu tych wpisów whosts: .*
linii/etc/nsswitch.conf
. Zastąpienie tych ustawień rozwiązało problem.[NOTFOUND=return]
oznacza „jeśli mDNS powie ci, że nie znaleziono nazwy lokalnej, to jest to autorytatywne i nie ma sensu pytać dalej”. Przenoszenie DNS przed mDNS jest obejściem, ale samo spowodowanie braku autoryzacji mDNS jest już wystarczające.Proponuję inne rozwiązanie na wypadek korzystania z
.local
domeny. Po pierwsze, nie jest to dobry pomysł, ponieważ wydaje się, że standardem / konwencją jest stosowanie w.local
przypadku dynamicznego wykrywania multiemisji.Ale jeśli nalegasz, łatwiej jest po prostu usunąć
nss-mdns
pakiet lublibnss-mdns
pakiet w zależności od dystrybucji, a problem zostanie rozwiązany. Jeśli nie potrzebujesz tej funkcji, to dlaczego masz ją tam?Oto
yum info nss-mdns
:źródło
Niektóre rzeczy, które możesz sprawdzić:
czy w /etc/host.conf jest zamówienie, które określa sprawdzenie / etc / hosts przed wysłaniem zapytania do DNS?
jest server01 w / etc / hosts?
czy jest plik
search foo.local
/ etc / resolv, conf? To by dopisało foo.local do dowolnej nazwy hosta, której szukaszZastanawiam się, czy twój serwer nazw jest poprawnie skonfigurowany. Jeśli nadal masz nslookup, co to za powrót
server01
,server01.foo.local
a adres IP (reverse lookup)?źródło