Po aktualizacji do 13.10 moje rozpoznawanie DNS kończy się niepowodzeniem. Wygląda na to, że serwery DNS, które otrzymuję przez DHCP (LAN) nie są używane.
Mogę tymczasowo rozwiązać problem, dodając nameserver 8.8.8.8
do /etc/resolv.conf
. Ale wtedy hostów intranetowych nadal nie można rozwiązać.
Po kliknięciu pozycji menu Informacje o połączeniu na wskaźniku sieci, Podstawowy DNS i Dodatkowy DNS są ustawione poprawnie. Ale mój komputer wydaje się nie używać ich.
Więc moje pytania:
- W co powinienem włożyć
resolv.conf
? - Jak dowiedzieć się, o które serwery nazw pyta mój komputer?
- Gdzie dalej szukać, aby dowiedzieć się, dlaczego nie używa się serwerów nazw odbieranych przez DHCP?
network-manager
Witek
źródło
źródło
Odpowiedzi:
Najpierw musisz dowiedzieć się trochę o tym, jak działa rozpoznawanie nazw w systemie Ubuntu od wersji Ubuntu 12.04.
Stephane Graber blogu kilka informacji o nim w zeszłym roku tutaj . Najważniejsze, aby wiedzieć, że zarówno Ubuntu Server, jak i Ubuntu Desktop używają resolvconf do zarządzania
resolv.conf
plikiem. Oznacza to, że nie powinieneś już edytować/etc/resolv.conf
bezpośrednio; zamiast tego należy skonfigurować narzędzie do konfiguracji interfejsu sieciowego, aby zapewniało właściwe informacje do resolvconf. W przypadku Ubuntu Server narzędziem do konfiguracji interfejsu sieciowego jest ifup i jest ono konfigurowane przez plik/etc/network/interfaces
. W przypadku Ubuntu Desktop narzędziem do konfiguracji interfejsu sieciowego jest NetworkManager . Tego właśnie używasz.NetworkManager jest konfigurowany za pomocą wskaźnika Sieć> Edytuj połączenia . Jednak w przypadku interfejsów sieciowych skonfigurowanych przez DHCP zwykle nie trzeba ręcznie zmieniać żadnych ustawień. Zwykle dzieje się tak, że (zdalny) serwer DHCP przekazuje NetworkManagerowi zarówno adres IP dla lokalnego interfejsu, jak i adres (zdalnego) serwera nazw DNS do użycia. NetworkManager uruchamia instancję przekierowującego serwera nazw, który nasłuchuje lokalnie pod adresem 127.0.1.1. Ten adres 127.0.1.1, zostanie wysłany do resolvconf co stawia
nameserver 127.0.1.1
w/etc/resolv.conf
. NetworkManager przekazuje również (zdalny) adres IP serwera DNS dostarczonego przez DHCP do serwera nazw przesyłania dalej. Tak więc program działający w systemie lokalnym prosi resolvera o przetłumaczenie nazwy hosta na adres IP; resolver wysyła zapytanie do lokalnego serwera nazw przekazywania o numerze 127.0.1.1; przekazujący serwer nazw wysyła zapytanie do zdalnego serwera nazw, o którym zostało powiedziane, odbiera odpowiedź i wysyła ją z powrotem do łańcucha.NetworkManager komunikuje się z procesem przesyłania nazw serwera przez D-Bus. Możesz zobaczyć, co NetworkManager powiedział przekazującemu serwerowi nazw, uruchamiając polecenie
Aktualizacja wynikająca z komentarzy:
Zauważ, że resolvconf faktycznie zapisuje plik,
/run/resolvconf/resolv.conf
do którego/etc/resolv.conf
ma być dowiązanie symboliczne. Jeśli/etc/resolv.conf
nie jest dowiązaniem symbolicznym, musisz go ponownie utworzyć. Aby to zrobić, możesz uruchomićlub
źródło
sudo dpkg-reconfigure resolvconf
lub możeszmv /etc/resolv.conf /run/resolvconf/resolv.conf && ln -s ../run/resolvconf/resolv.conf /etc/resolv.conf
sudo dpkg-reconfigure resolvconf
zgodnie z sugestią podaną w ostatniej części odpowiedzi.sudo dpkg-reconfigure resolveconf
wydawało się działać świetnie!Dokonałem zmiany sugerowanej na poniższym linku (wyłączenie dnsmasq). Teraz wszystko działa świetnie! http://www.ubuntugeek.com/how-to-disable-dnsmasq-in-ubuntu-12-04precise.html
Otwórz
/etc/NetworkManager/NetworkManager.conf
plik.Skomentuj wiersz jako:
źródło
sudo restart network-manager
.sudo /etc/init.d/network-manager restart
dns=default
do[main]
sekcji. NetworkManager ma własną nieprzyjemną wtyczkę dnsmasq, której użyje inaczej.network-manager
-sudo service network-manager restart
EDYCJA 2: Poprzedni post został słusznie usunięty przez moderatora, publikuję to, co uważam za rozwiązanie. Przepraszam za to.
EDYCJA: Właśnie znalazłem odpowiedź i jest na tej samej stronie - przepraszam za moje zawiłości. Poniżej opublikowałem swoje odkrycia, poszerzając poprawną odpowiedź Richarda Lindstedta znalezioną na tej stronie. Opuściłem swoje wczesne dudnienie dla nieco kontekstu. Proszę głosować za odpowiedzą Richarda, on na to zasługuje.
To z pewnością nie pomogło OP i nie pomaga mi teraz. Nie chcemy adresów statycznych, chcemy użyć tych, które wysyła nam serwer DHCP. NetworkManager wydaje się je rozpoznawać, ale Ubuntu tępo je ignoruje:
Ale...
A mój / etc / network / interfaces to:
co jest nieco dziwne, oczekiwałbym, że wszystkie interfejsy zostaną zadeklarowane tutaj (czy coś mi brakuje?).
Krótko mówiąc:
dpkg-reconfigure resolvconf
Nie otwieram kolejnego wątku, ponieważ jest to dokładny problem, z wyjątkiem tego, że mam teraz 14.10 (ale dokucza mi to od czasu aktualizacji z 12.10 na 13.04).
ROZWIĄZANIE
To ostatnie zdanie sprawiło, że znalazłem się na właściwej drodze, i dopiero wtedy zauważyłem odpowiedź Richarda.
Problem wydaje się być związany z konfliktem
dnsmasq
iresolvconf
pakietami. Do 12.10dnsmasq
używano. Począwszy od 13.04, Ubuntu wydawało się przechodzić na hybrydę dnsmasq / resolvconf, w której zainstalowałeś pakietydnsmasq-base
iresolvconf
, ale niednsmasq
sam.Nie mogę powiedzieć, czy jest to błąd w skryptach aktualizacji dla 13.04 lub coś innego, ponieważ podczas aktualizacji (jak w nowych instalacjach) resolvconf jest instalowany, dnsmasq-base jest aktualizowany, a dnsmasq jest (poprawnie) odinstalowywany.
Chwytem jest to, że skrypt aktualizacji nie komentuje
dns=dnsmasq
linii w/etc/NetworkManager/NetworkManager.conf
. Tak więc, mimo że demon dnsmasq nie jest już obecny w systemie, /etc/resolv.conf nadal tego oczekuje.źródło
dnsmasq
idnsmasq-base
zainstalowany, NM będzie umieścić127.0.0.1
w/etc/resolv.conf
zamiast127.0.1.1
. Po prostu odinstalowałemdnsmasq
(i włączyłem NM) i wszystko działa dobrze.sudo service network-manager restart
to zrobić, aby zadziałało.To jest naprawdę bardzo łatwe.
wystarczy otworzyć plik conf interfejsów -> sudo vi / etc / network / interfaces
a pod twoim interfejsem (prawdopodobnie eth0) zobaczysz całą zwykłą konfigurację.
Po bramie po prostu dodaj „dns-nameservers 8.8.8.8 8.8.8.9” lub inny serwer nazw, którego będziesz używać.
Więc twoja konfiguracja powinna być:
następnie po prostu uruchom ponownie usługę sieci sudo i możesz zacząć!
źródło