Dlaczego mój plik resolv.conf jest generowany za każdym razem?

17

Mój /etc/resolv.confplik jest generowany za każdym razem, co powoduje, że tracę serwery Google DNS po ponownym podłączeniu modemu 3G.

Aby zmienić ustawienia DNS, spojrzałem na http://code.google.com/intl/fr-FR/speed/public-dns/docs/using.html .

Mój dhclient.confjest dość duży (58 linii), więc opublikowałem go na pastebin .

Oto jednak całość dhclient.confbez linii komentarza lub pustych linii:

option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
send host-name "<hostname>";
request subnet-mask, broadcast-address, time-offset, routers,
    domain-name, domain-name-servers, domain-search, host-name,
    netbios-name-servers, netbios-scope, interface-mtu,
    rfc3442-classless-static-routes, ntp-servers;
prepend domain-name-servers 8.8.8.8, 8.8.4.4;

Używam wvdialzamiast Network Managera.

Jakh Saidlikp
źródło
Niestety nic nie wiem wvdial. W tym momencie podejrzewam, że dotyczy to innego pakietu, który nie został jeszcze odkryty. Czy wiesz, czy zainstalowałeś inne aplikacje sieciowe lub narzędzia, które mogą w jakiś sposób dotykać DNS, DHCP, interfejsów itp.?
belacqua

Odpowiedzi:

6

W 12.04 resolvconf jest instalowany domyślnie. Oto krótkie podsumowanie wprowadzania zmian w konfiguracji DNS w niektórych typowych przypadkach użycia:

Aby uzyskać konfigurację statyczną ifup, użyj, użyj dns-nameserversi dns-searchwpisy w /etc/network/interfaces.

W przypadku konfiguracji statycznej za pomocą NetworkManagerwybierz Automatic (DHCP) addresses only Methodi wprowadź adresy i nazwy domen w polach Additional DNS serversi Additional search domainsw Edytorze połączeń.

Aby zastąpić resolvconf na domyślna konfiguracja, użytkowanie base, heada tailw /etc/resolvconf/resolv.conf.d/. Adresy i nazwy domen należy wprowadzać w tych plikach tylko tymczasowo, ponieważ tak naprawdę należą one gdzie indziej, jak opisano powyżej.

Wyłączenie resolvconf nie jest zalecane, ale można zastąpić dowiązanie symboliczne /etc/resolv.confzwykłym plikiem.

Aby uzyskać więcej informacji, zobacz post na blogu Stéphane Grabera .

Robie Basak
źródło
4

Jeśli wszystko, co chcesz zrobić, to utrzymać serwery Google DNS w resolv.conf, możesz edytować
/etc/dhcp3/dhclient.confi dodawać:

prepend domain-name-servers 8.8.8.8;
prepend domain-name-servers 8.8.4.4;

Jedyną różnicą między tym, co masz, a tym, co tutaj pokazuję, jest to, że masz oba serwery nazw w jednym wierszu, zgodnie ze wspomnianymi dokumentami.

Chyba że czegoś mi brakuje, twój dhclient.conf nie stanowi tutaj problemu. W tym momencie zakładam, że problem dotyczy wvdial.

Oto coś do wypróbowania, od ubuntuforums :

gksudo gedit /etc/ppp/peers/wvdial

USUŃ parametr usepeerdns i zapisz plik. Kod:

gksudo gedit /etc/wvdial.conf

dodaj te linie:

check DNS = no
auto DNS = no
Belacqua
źródło
@jgbelacqua Próbowałem w liniach spearated, ale nie
działałem
@Jakh Zakładam, że przesuwanie linii prepend bliżej góry również się nie udaje? (Tak ustawiłem mój.)
Belacqua,
@jgbelacqua tak, próbowałem też, że tak;]
Jakh Saidlikp,
@Jakh - próbowałeś edytować request subnet-mask, broadcast-address, time-offset, routers, domain-name, domain-name-servers, domain-search, host-name, netbios-name-servers, netbios-scope, interface-mtu, rfc3442-classless-static-routes, ntp-servers;linię, aby usunąć tam serwery nazw?
belacqua
@jgbelacqu Nie źle, spróbuj teraz i daj
znać
4

Najlepszym sposobem ustawienia serwera nazw za pomocą interfejsu CLI, bez NetworkManger, ze statycznym adresem lub niezależnym od połączenia jest:

Zainstaluj pakiet resolvconf .

Biegać

sudo nano /etc/resolvconf/resolv.conf.d/head

(zignoruj ​​straszne ostrzeżenie. /etc/resolv.conf jest generowany automatycznie, więc ostrzeżenie tam jest, więc zostanie umieszczone w pliku /etc/resolv.conf po wygenerowaniu /etc/resolv.conf.) Na końcu pliku, Dodaj

 nameserver <ip_of_nameserver>

Naciśnij Ctrl xi odpowiedz „tak”, aby zapisać plik. Aby zakończyć, ponownie wygeneruj plik /etc/resolv.conf, aby zmiany zostały zastosowane w tej chwili:

 sudo resolvconf -u
Azendale
źródło
Należy dodać, że generalnie nie jest dobrym pomysłem umieszczanie statycznego adresu serwera nazw w resolv.conf. Proszę przeczytać /usr/share/doc/resolvconf/README.gz.
jdthood
0

Możesz ustawić domain-name-serversopcję dhclient.conf.

Adam Byrtek
źródło
sprawdź jego pastebin - wygląda na to, że już go ma.
belacqua
Dzięki, nie zauważyłem tego. Nawiasem mówiąc, twoje rozwiązanie może być poprawne, więc rozważ opublikowanie go jako odpowiedzi zamiast komentarza.
Adam Byrtek
witaj @adam, czy możesz być bardziej jasny im a noob:] dziękuję
Jakh Saidlikp
0

Rozwiązałem ten sam problem za pomocą następujących poleceń:

echo "nameserver 212.217.0.1" >> /etc/resolvconf/resolv.conf.d/head
ln -s /etc/resolvconf/resolv.conf.d/head /etc/resolv.conf
resolvconf -u
/etc/init.d/networking restart
moha
źródło
1
Być może problem został rozwiązany w ten sposób, ale jest to całkowicie błędna konfiguracja. Skończyło się łączenie /etc/resolv.conf z plikiem statycznym, który jest jednym z plików konfiguracyjnych resolvconf. Jeśli chcesz wyłączyć resolvconf, byłoby o wiele łatwiej po prostu usunąć dowiązanie symboliczne /etc/resolv.conf i umieścić tam plik statyczny.
jdthood
-1

prawdopodobnie masz zainstalowany pakiet resolvconf. w takim przypadku, ilekroć pojawi się interfejs, plik resolv.conf jest aktualizowany. możesz dodać wpisy statyczne za pomocą pliku /etc/resolv.conf.tail, więcej informacji znajdziesz na stronie manuala dla resolv.conf.

eFloh
źródło
noo, nie mam zainstalowanego tego pakietu
Jakh Saidlikp,
Program resolvconf aktualizuje /etc/resolv.conf, ale tylko jeśli /etc/resolv.conf jest dowiązaniem symbolicznym do ../run/resolvconf/resolv.conf. Pakiet resolvconf został wprowadzony, ponieważ tak wiele innych programów tupało na /etc/resolv.conf niezależnie od siebie, powodując chaos. Proszę przeczytać /usr/share/doc/resolvconf/README.gz. Zatem z faktu, że plik /etc/resolv.conf został zaktualizowany, nie wynika (w marcu 2011 r., Kiedy zadano pytanie), że resolvconf został zainstalowany. Bardziej prawdopodobne, że pppd przepisał plik. (Od wersji Ubuntu 12.04 jednak resolvconf jest częścią systemu podstawowego.)
jdthood,
-1

Miałem dokładnie ten sam problem, serwer DNS, który zapewnia mój operator komórkowy, był raczej słaby, więc chciałem użyć DNS Google. Również NetworkManager ma naprawdę kiepską pracę z mobilnymi połączeniami szerokopasmowymi, więc wvdialjest to konieczne.

Jak się okazuje, /etc/resolv.confjest to łącze symboliczne, ubuntu 12.10a może nawet 12.04. Oto, co zrobiłem sudo unlink /etc/resolv.confpo tym, możesz utworzyć nowy za resolv.confpomocą vimlub wybranego edytora i dodać serwery nazw Google lub dowolne inne serwery nazw, które wolisz. Zapisz to i gotowe.

Jeśli boisz się zepsuć coś, możesz zanotować istniejące dowiązanie symboliczne, robiąc to ls -la /etc/resolv.confwcześniej unlinking.

Mam nadzieję, że to pomoże.

nikhil
źródło
@Downvoter, prosimy o komentarz. Jeśli moja odpowiedź jest naprawdę złą radą, chętnie ją usunę. Daj mi znać, co robię źle. Dzięki
nikhil