Używam Raspberry Pi 3 z Ubuntu 18.04. W mojej firmie mamy serwer DNS i kilka domen z „.local”. Wiem technicznie, że to nie jest poprawne i zamiast tego powinno być „.lan”, ponieważ .local jest zarezerwowany dla dns multiemisji. Ale tak już jest i nie można tego łatwo zmienić. Więc na moim komputerze z systemem Windows mogę bez problemu pingować i przeglądać te nazwy domen. Jednak na moim Ubuntu nie mogę.
Nie mogę używać adresów IP, ponieważ niektóre domeny znajdują się na tym samym komputerze, a serwer IIS porządkuje, co się dzieje.
Szukałem i pojawia się dość często:
- https://smallbusiness.chron.com/resolving-local-ubuntu-38861.html
- Dlaczego żaden z moich lokalnych serwerów nie jest rozpoznawany?
- Serwer Ubuntu nie rozpoznaje nazw hostów LAN
Jednak zmiana pliku /etc/nsswitch.conf nie rozwiązuje problemu. próbowałem
- hosts: pliki mdns4_minimal [NOTFOUND = return] dns nazwa_hosta # domyślna
- hosts: pliki dns
- hosts: pliki mdns4_minimal [NOTFOUND = kontynuuj] dns moja_nazwa_hosta
- hosts: pliki mdns4 [NOTFOUND = return] dns nazwa_hosta
- hosts: pliki mdns4 [NOTFOUND = kontynuuj] dns moja_nazwa_hosta
- hosts: pliki dns mdsn4_minimal mojahostname
- gospodarze: dns
- kilka innych
Żaden z nich nie działał. Próbowałem zrestartować się również po zmianie. Próbowałem powiedzieć avahi, że nazwa domeny = alocal w /etc/avahi/avahi-daemon.conf, nie działa po ponownym uruchomieniu usługi, nie działa po ponownym uruchomieniu. Po tym nie działałem, próbowałem całkowicie wyłączyć usługę demona avahi.
sudo systemctl disable avahi-daemon
Po ponownym uruchomieniu ponownie spróbowałem kilku permutacji w /etc/nsswitch.conf, bez żadnego efektu.
przy moich bieżących ustawieniach na hostach (pliki dns) otrzymuję tę odpowiedź:
dig login.name.local # not the actual name
; <<>> Dig 9.11.3-1ubuntu1.1-Ubuntu <<>> login.name.local
;; global options: +cmd
;; Got answer:
;; WARNING .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33538
;; flags: qr rd ra; QUERY: 1, ANSWER:0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;login.name.local. 0 IN A
;; Query time: 2msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Thu Aug 23 10:51:50 CEST 2018
;; MSG SIZE rcvd: 56
Jednak gdy polecam wykopowi, aby bezpośrednio zapytał serwer, otrzymuję poprawną odpowiedź:
dig @dnsIP login.name.local
; <<>> Dig 9.11.3-1ubuntu1.1-Ubuntu <<>> login.name.local
; (1 server found)
;; global options: +cmd
;; Got answer:
;; WARNING .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57866
;; flags: qr aa rd ra; QUERY: 1, ANSWER:1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;login.name.local. 0 IN A
;; ANSWER SECTION:
login.name.local. 3600 IN A serverIP
;; Query time: 2msec
;; SERVER: dnsIP#53(dnsIP)
;; WHEN: Thu Aug 23 10:51:50 CEST 2018
;; MSG SIZE rcvd: 56
Ta wersja Ubuntu wykorzystuje netplan z menedżerem sieci. Prawidłowy adres IP DNS zdecydowanie znajduje się na liście. (w rzeczywistości jest to podstawowy DNS). Również dnsIp jest taki sam jak serverIP, ale nie powinno to stanowić problemu.
Pingowanie lub łączenie się przez przeglądarkę i takie nie działają oczywiście. Żaden nie używa zapytania dns.
Nie wiem, co robić. Z pewnością nie możemy zmienić nazwy domeny. Umieściłem nazwę serwera w / etc / hosts, ale to tylko tymczasowe rozwiązanie.
źródło
Odpowiedzi:
W Linux Mint 19 (Tara) napotkałem bardzo podobny problem (jeśli nie dokładnie taki sam). Udało mi się to rozwiązać, łącząc 3 różne informacje. Wydaje się, że wszystko to jest związane z ostatnimi zmianami w rozwiązaniu systemd.
Po pierwsze, tak, musiałem skonfigurować plik /etc/nsswitch.conf, tak jak zrobiłeś i oczekiwałbyś. Tak długo, jak dns pojawia się przed mdns, powinieneś być dobry. Skończyłem po prostu:
ref: /unix//a/457172/271210
Przed aktualizacją do tej wersji Mint jest to jedyna rzecz, którą musiałem zrobić. Teraz skończyłem też na wprowadzaniu poniższych dwóch innych zmian, aby działało ...
Następnie skonfigurowałem domenę wyszukiwania, aby systemd rozwiązany działał tak, jak chciałem. Więc zmodyfikowałem plik /etc/systemd/resolved.conf , ustawienie Domeny w sekcji [rozwiązać] . W moim przypadku wyglądało to tak:
ref: /ubuntu//a/1031271/872881
Zmieniłem również konfigurację avahi na coś innego („mdns”, jeśli dobrze pamiętam, ale to nie ma znaczenia). Z mojego zrozumienia nie powinno być to jednak wymagane. Po prostu dodaję dla kompletności.
Ale nic z tego nie działało, dopóki nie zadzwoniłem:
ref: /ubuntu//a/938703/872881
Po wywołaniu tego wszystko zaczęło działać idealnie i zgodnie z oczekiwaniami!
Możliwe więc, że tak naprawdę nie musiałem zmieniać pliku /etc/systemd/resolved.conf , ale zachowałem tę zmianę, ponieważ ma ona sens i pozwala mi tylko wpisywać nazwę komputera, bez pełnej nazwy FQDN, aby rozpoznawanie DNS działało .
źródło
Przyjęta odpowiedź nie rozwiązała mojego problemu. Nie miało to nic wspólnego z avahi - nie miałem zainstalowanej usługi avahi. Mam ustawiony system, aby pobrać jego adres IP ORAZ ustawienia serwera dns z DHCP. Jednak DNS dostarczony przez dhcp nie był sprawdzany pod kątem zapytań przy użyciu .local
Prawdziwym problemem jest to, że Ubuntu 18.4 ma swój resolv.conf połączony symetrycznie z plikiem pośredniczącym, który wskazuje na localhost w celu rozpoznawania nazw. Rozpoznawanie nazw lokalnych hostów dns oznacza, że system odmawia sprawdzenia dostarczonego serwera DNS pod kątem nazw lokalnych, uważając (niepoprawnie), że takie nazwy są nieprawidłowe. To jest domyślna konfiguracja pliku /etc/resolv.conf:
zawartość pliku pośredniczącego jest (komentarze usunięte):
„prawdziwe” polecenie conf ma „prawidłowe” ustawienie dns (z dhcp):
Aby system używał preferowanego programu rozpoznawania nazw DNS zamiast localhost, zmień dowiązanie symboliczne tak, aby wskazywało na /run/systemd/resolve/resolv.conf zamiast /run/systemd/resolve/stub-resolv.conf:
Natychmiast po tym zaczęła działać rozdzielczość .local. nie trzeba ponownie uruchamiać ani restartować żadnej usługi.
źródło
Dla mnie sposób na Ubuntu 18.04 to:
Edytuj avahi conf:
i zmień .local na .alocal:
następnie otwórz resolved.conf:
i odkomentuj i edytuj Domeny:
i wreszcie ponownie uruchom usługi:
źródło
Domains
w/etc/systemd/resolved.conf
(i ponownie uruchomić usługę).Dla mnie zadziałało dodanie lokalnego DNS jako serwera nazw
/etc/resolvconf/resolv.conf.d/head
(jak opisano tutaj ).Zainstaluj pakiet resolvconf.
Edytuj
/etc/resolvconf/resolv.conf.d/head
i dodaj następujące elementy:Uruchom ponownie usługę resolvconf.
Poprawka powinna być trwała.
źródło
head
Plik jest źródłem używanym do generowania/run/resolvconf/resolv.conf
. Jednak nie chciałbym również edytować tego pliku.Moja sytuacja była podobna, ale nieco inna: używamy nazw serwerów jak
myserver
w Windows, ale to nie działało na Ubuntu 16.04 i musiałem użyćmyserver.mycompany.local
. Po uaktualnieniu do 18.04 otrzymałem następujące zachowanie:Po prostu musiał wymienić
myserver.mycompany.local
zmyserver
moich aplikacji.źródło