Korzystanie z DNSMasq do rozpoznawania lokalnych nazw hostów


9

Pracuję nad stworzeniem domowego intranetu dla mnie i moich współlokatorów. Moim pomysłem jest to, że będziemy mogli przechowywać rzeczy, takie jak rachunki za media, w miejscu, które jest bardziej dostępne niż szuflada w kuchni itp. W każdym razie mam Apache 2 działający na Raspberry Pi, w mojej sieci LAN i jeśli używam jego adres IP, mogę uzyskać dostęp do stron obsługiwanych w Pi. Ponieważ robię ten projekt, aby dowiedzieć się więcej na temat tworzenia sieci w celu świadczenia usług w moim mieszkaniu, pomyślałem, że byłoby fajnie, gdyby moja sieć mogła zapewnić rozpoznawanie nazw hostów dla mojej sieci LAN. Więc zamiast wskazywać moją przeglądarkę na 192.168.1.151adres IP Pi, mógłbym wskazać go oberon(jego nazwę hosta) i przeglądać strony internetowe obsługiwane przez Pi.

Teraz wiedziałem, że nie jestem pierwszą osobą, która chce to zrobić, więc zacząłem od Googlinga. To pytanie, także w systemach Unix i Linux, bardzo mi pomogło: jak udostępnić maszynę z sieci LAN za pomocą jej nazwy hosta . W tym momencie próbowałem wszystkiego w zweryfikowanej odpowiedzi. Myślałem o użyciu tego hostspliku, ale oznaczałoby to, że musiałbym powiedzieć współlokatorom, aby skonfigurowali swoje maszyny, czego nie chcę, aby musieli robić. Próbowałem zarezerwować dzierżawę DHCP dla Pi na moim routerze (NETGEAR WNR1000v2 (znany również jako N150)) i podczas rezerwacji zadziałało, rozpoznawanie nazw hostów nie. Ten rodzaj frustruje mnie, ponieważ powiedziałem routerowi adres IP komputera Pi i jego nazwę hosta, ale nadal nie udostępnia tych informacji klientom w mojej sieci LAN.

Ponieważ te dwie metody nie działają, zdecydowałem się zainstalować dnsmasqna Pi. Konfiguracja wydawała się prosta i chętnie poznam nowe narzędzie. Zainstalowałem i działam dobrze (wydaje się). Mogę diglub nslookuppseudonimy Pi (które ustawiłem /etc/hostsna oberoni homenet) i uzyskać prawidłowe wyniki. Mogę zrobić to samo z nazwami internetowymi, takimi jak yahoo.comi uzyskać poprawne odpowiedzi, ponieważ skonfigurowałem Google 8.8.8.8i 8.8.4.4serwery zapasowe /etc/dnsmasq.conf. Zobacz:

me@oberon~$ dig oberon

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> oberon
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10787
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;oberon.                                IN      A

;; ANSWER SECTION:
oberon.                 0       IN      A       192.168.1.151

;; Query time: 10 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Oct  6 18:59:18 2013
;; MSG SIZE  rcvd: 40

Zauważ, że SERVERis 127.0.0.1: oberonszuka własnego adresu IP na sobie. Tego się spodziewałem. Wyjście jest takie samo, jeśli to zrobię dig oberon @localhost. Z tego powodu myślę, że dnsmasqdziała dobrze. Aby przenieść go na wyższy poziom, chcę, aby wszyscy klienci w mojej sieci LAN mogli pisać oberonw przeglądarce i przejść do oberonstrony indeksu. W tym celu wiem, że muszę skonfigurować router (przepraszam, jeśli odwróci się to od terytorium ściśle Uniksa i Linuksa).

Mam Netgear WNR1000v2, który znam dość dobrze. Skonfigurowałem przekierowanie portów, więc mogę SSH do Pi, a także rozglądałem się w innych ustawieniach. Wiem, że zanim rozpocząłem ten projekt, otrzymywałem serwery DNS od mojego dostawcy usług internetowych, ale teraz chcę przede wszystkim korzystać z tych serwerów DNS, ale także 192.168.1.151jako ostatni czek. Więc zmieniłem konfigurację DNS mojego routera na następującą:

Nowa konfiguracja DNS mojego routera.  Zaufaj mi, gdy powiem, że pierwsze dwa wpisy zostały dostarczone przez mojego dostawcę usług internetowych

Tak więc przy tej konfiguracji spodziewałem się, że będę mógł to zrobić nslookup oberonna pulpicie (Windows) i uzyskać wynik 192.168.1.151. Ale tak się nie dzieje. Oto co się dzieje:

C:\Users\me>nslookup oberon
Server:  UnKnown
Address:  fe80::226:f2ff:fefa:bea

*** UnKnown can't find oberon: Non-existent domain

Resetowanie lub dnsflushingkarta sieciowa na moim komputerze z systemem Windows niczego nie zmienia.

Oto dlaczego trochę rozdzieram tutaj włosy:

C:\Users\me>nslookup oberon 192.168.1.151
Server:  oberon.lan
Address:  192.168.1.151

Name:    oberon
Address:  192.168.1.151

Najwyraźniej dnsmasqdziała dobrze. Jeśli powiem mojemu systemowi Windows, aby używał 192.168.1.151nazwy oberon, wszystko jest w porządku ( .landomena była częścią konfiguracji dnsmasq, więc spodziewałem się, że ją tam zobaczę). Gdybym tylko mógł sprawić, aby mój router powiedział mojej maszynie z Windows, aby korzystała z 192.168.1.151zapytań DNS, powinienem być dobry!

Wydaje mi się więc, że problem tkwi w moim routerze, ale po prostu nie mogę wymyślić, co zrobić poza zmianą serwerów DNS 192.168.1.151tak, jak to już mam. Czy ktoś może mi tutaj pomóc? Postaram się podać wszelkie dalsze potrzebne informacje.


Spróbuj ustawić pi jako pierwszy serwer DNS, czy to działa?
terdon

1
Router jest właściwym miejscem do tego. Jeśli z jakiegoś powodu nie uda Ci się zmusić routera do podania nazwy Pi, uruchom dnsmasq na Pi i spraw, aby router obsługiwał Pi tak, jak działałby serwer DNS. Wygląda na to, że problem polega na prawidłowym skonfigurowaniu routera.
Gilles 'SO - przestań być zły'

Czy odnawiasz dzierżawę DHCP na kliencie po zaktualizowaniu ustawień DNS na routerze? Konfiguracja DNS jest wysyłana w dzierżawie DHCP, więc musi uzyskać nową dzierżawę, aby uzyskać nowe ustawienia. Jako alternatywne rozwiązanie, możesz również zajrzeć do mDNS / zeroconf / avahi.
Patrick,

Odpowiedzi:


2

Twój problem polega na tym, że nie rozumiesz, w jaki sposób te serwery DNS są używane, nie znam dokładnych szczegółów metody używanej przez system Windows do wyboru, który serwer DNS ma zapytać, ale stawiam na jego podstawowy> drugorzędny> trzeciorzędny / zawsze /. I nawet jeśli tak nie było i był okrężny, nadal będziesz pytał o nieprzydatny serwer 2 z 3 razy.

To, co się stanie, to serwer główny zostanie zapytany. Jeśli upłynie limit czasu, co może potrwać sekundę lub dwie, zostanie zapytany następny serwer. DNS nie jest systemem „konsensusowym”, jeśli jeden ze zdalnych serwerów jest pytany, w końcu odkryje wynik, że twoja nazwa hosta NIE istnieje, z jego perspektywy jako internetowego serwera DNS.

Potrzebujesz własnego dns LAN jako podstawowego serwera DNS. Inni stworzyliby odpowiednie serwery kopii zapasowych, ale rozważałbym po prostu ich całkowite usunięcie.

Warto również zauważyć, że twoje odwrotne dns (wyszukiwanie nazwy IP) jest rozwiązywane do „hostname.lan”, ale twoje testy rozstrzygania w przód dotyczą tylko nazwy hosta. Powinieneś także mieć gdzieś ustawioną rozdzielczość do przodu dla hostname.lan. Chociaż może istnieć wiele wyszukiwań typu „nazwa do adresu” dla hosta, można się spodziewać odwrotnego wyszukiwania adresu IP względem nazwy, która z kolei ma pasującą nazwę do tego rekordu IP. Nie zawsze jest to krytyczne i czasami powoduje, że pliki dziennika marudzą, ale niektóre rzeczy są na to bardziej wrażliwe niż inne.

Nie zapomnij też usunąć wszelkich plików z plikami hostów, które umieściłeś po uruchomieniu, gdy wszystko działa (nie wiem, czy to dotyczy dnsmasq, nigdy go nie użyłem, mam podobną, ale bardziej skomplikowaną konfigurację przy użyciu nazwy ISC-BIND serwer, który możesz skonfigurować do przekazywania na inne serwery, których używasz, lub po prostu użyj go jako nieprzesyłającego serwera DNS, który sam rozpoznaje pełne nazwy - to właśnie skonfigurowałem).

Nie trzeba dodawać, że po raz pierwszy spekulowałeś, że jesteś bardzo daleki od samodzielnego tworzenia tego zestawu, prawie każda rozsądnie rozwinięta korporacyjna sieć LAN i wiele nadmiernie rozwiniętych domowych sieci LAN będzie miało taką konfigurację.


1
Dzięki za pomoc Iain! Rozumiem, co mówisz o tym, że DNS nie jest systemem konsensusowym, więc ustawiłem Pi jako główny serwer DNS w moim routerze. Następnie odnowiłem dzierżawę DHCP na moim komputerze z systemem Windows. Jednak nslookup oberonnadal nie działa. Jedną rzeczą, o której nie wspomniałem w tekście mojego oryginalnego postu, było to, że gdy się nslookupnie powiedzie, mówi, że serwer, którego używał, był fe80adresem IPv6 - który, jak wiem, jest zarezerwowanym adresem lokalnym dla linków. Ale nie wiem, co to oznacza dla DNS. Czy moje okno systemu Windows samo się sprawdza? dnsflushnie zmienia tego zachowania.
ok.

I o ile jest to warte, rozpoznawanie nazw hostów LAN również nie działa na moich urządzeniach iOS. Nie wspomniałem o nich jeszcze, ponieważ mam o wiele więcej introspektywnej mocy w systemie Windows, ale jeśli moje problemy naprawdę wynikałyby ściśle z systemu Windows, nie spodziewałbym się, że te urządzenia będą miały ten sam problem.
ok.

Ponadto, aby rozwiać obawy dotyczące .landomeny, skonfigurowałem dnsmasqautomatyczne rozszerzanie prostych nazw hostów w celu dodania .lan. Uruchomienie nslookup oberon.lan 192.168.1.151zwraca oczekiwany wynikName: oberon.lan Address: 192.168.1.151
ok.

Zastanawiam się, czy w pracy działa „windowsizm” czy coś w tym rodzaju, nazwanie hostów bezpośrednio w domenie najwyższego poziomu („oberon.”) Jest dość dziwne, oberon.lan ma o wiele więcej sensu. Należy pamiętać, że sufiksy domen i „domeny wyszukiwania” są często dołączane do nazwy w celu jej rozwiązania, np. „Oberon” może być rozwiązany i znaleziony jako „oberon.lan”, jeśli lan znajduje się w domenach wyszukiwania. Jednak powyższe zapytania nie pokazują, że tak jest, wykop ma konkretnie okres zakończenia na nazwach hostów, ale należy o tym pamiętać podczas testowania!
iain

Hmm po naprawieniu podstawowych dns, będziesz musiał ponownie przeszukać Windows (zresetowanie adaptera powinno to zrobić), a następnie sprawdź ipconfig /all, czy używany jest prawidłowy serwer dns, jeśli to prawda, możesz potrzebować opróżnienia. Ale nie mogę myśleć o niczym innym, powinno działać.
sourcejedi

1

Może trochę późno, ale załatwienie problemu spowodowało wyłączenie ipv6 na mojej karcie sieci bezprzewodowej.


Głosowanie: zawsze dobry pomysł. Chyba że system jest nagi i wymaga tego. Do tej pory (wrzesień 2017 r.) Niewiele jest urządzeń domowych, które spełniają tę kategorię, jeśli w ogóle.
SDsolar
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.