Adres serwera DNS nie jest już przechowywany w resolv.conf; gdzie to teraz jest?

14

Czasami przełączam serwery DNS za pomocą wskaźnika NetworkManager na pasku zadań; działało to dobrze z poprzednimi wersjami i faktycznie działa również dobrze z 12.04, z wyjątkiem jednej rzeczy: używam Conky do wyświetlania niektórych informacji systemowych, w tym adresu DNS, i zauważyłem, że teraz zawsze się wyświetla 127.0.0.1.

Zajrzałem do miejsca resolv.conf, w którym znajduje się ten adres, i na pewno tak zawsze mówi. Mam jedną linię z ostrzeżeniem, aby nie edytować pliku ręcznie:

nameserver 127.0.0.1

Jedyny sposób, w jaki mogę teraz sprawdzić adres serwera DNS, to otworzyć GUI menedżera sieci, aby sprawdzić stronę informacyjną. Gdzie są teraz przechowywane te informacje?

Marty Fried
źródło

Odpowiedzi:

17

Informacje są wewnętrznie zarządzane przez Network Managera. Możesz uzyskać te informacje w wierszu poleceń za pomocą dołączonego nmclinarzędzia.

Możesz pobrać informacje Menedżera sieci dla określonego interfejsu sieciowego za pomocą następującego polecenia:

nmcli dev list iface eth0

(zamień eth0na interfejs, z którym się łączysz). Dane wyjściowe będą zawierać informacje o interfejsie i aktualnie aktywnym połączeniu na tym interfejsie:

GENERAL.DEVICE:                         eth0
GENERAL.TYPE:                           802-3-ethernet
...
IP4.DNS[1]:                             192.168.0.1
...

Wydobycie informacji z tego wyjścia nie powinno być trudne.

Jeśli potrzebujesz programowej metody dostępu do tych danych, która nie zależy od danych wyjściowych nmcli, informacje te powinny być również dostępne z interfejsu D-Bus programu Network Manager.

James Henstridge
źródło
Wielkie dzięki, to świetna informacja. Utworzenie prostego skryptu powłoki za pomocą tego nmclipolecenia powinno być dość łatwe do wyświetlenia różnych interesujących parametrów. Może uda mi się zrobić coś użytecznego i udostępnić gdzieś. Naprawdę nie sądziłem, że Network Manager jest wymagany i przypuszczam, że mogą istnieć alternatywne sposoby, aby to zrobić, ale to działa dla mnie.
Marty Fried
Cóż, możesz zobaczyć, że serwer nasłuchujący 127.0.0.1jest instancją dnsmasquruchomioną przez Network Managera (zobacz dane wyjściowe sudo netstat -tlnp). Ale najlepiej myśleć o tym jako o szczegółach implementacji i poprosić Network Managera o potrzebne informacje, ponieważ to on decyduje tutaj.
James Henstridge
Dzięki za dostarczenie tak dobrych informacji. I dziękuję również za edycję mojego pytania - postaram się poświęcić więcej czasu w przyszłości. :) Moją wymówką jest to, że właśnie uaktualniłem do 12.04 i gasiłem małe pożary na wielu frontach. :)
Marty Fried
4
nmcli dev list ifacenie działa dla mnie, ale nmcli dev showdziała [ubuntu 15.04]
Beni Cherniavsky-Paskin
10

Programiści Ubuntu powinni udokumentować te zmiany /etc/resolv.conf, ale ich nie mają.

Oto lista szybkich poleceń, które pomogą Ci zacząć.

  1. Pokaż bieżące serwery DNS

    nm-tool | grep DNS
    
  2. Zdefiniuj statyczny serwer DNS w /etc/dhcp/dhclient.conf. Dodaj następujący wiersz i zrestartuj lokalny resolver:

    supersede domain-search "sub.mydomain.com", "domain.com";
    prepend domain-name-servers 192.168.0.1;
    

    Z wiersza polecenia:

    invoke-rc.d network-manager restart
    
cmcginty
źródło
Trochę dodatkowej dokumentacji: resolvconf (8), /usr/share/doc/resolvconf/README.gz.
jdthood
4

Pamiętaj, że użycie nmcli nie zawsze daje pełną odpowiedź. np. jeśli używasz openconnect (lub prawdopodobnie VPN) do uruchomienia VPN i jeśli masz zainstalowany pakiet resolvconf (aby zająć się automatycznym zarządzaniem /etc/resolv.conf), przekonasz się, że nadal może on automatycznie wstawić Ustawienia DNS VPN do /etc/resolv.conf przed 127.0.0.1. W takich okolicznościach samo sprawdzenie (np.) „Nmcli -f IP4 dev list” nie da prawdziwej aktualnej listy DNS. Nie jestem pewien, czy ten scenariusz dotyczy Ciebie, ale uznałem, że warto o tym wspomnieć.

agd
źródło
Dzięki za dodatkowe informacje; zawsze dobrze jest dowiedzieć się więcej. W moim przypadku użytkowania nie będę musiał się tym martwić, ponieważ chcę przede wszystkim wiedzieć, który z dwóch możliwych adresów DNS jest aktywny.
Marty Fried
Jeśli używasz menedżera sieci do łączenia się z VPN, jakie polecenie powinno dać ci dns? DNS działają, ale nie mogę ich znaleźć.
Jorge Suárez de Lis