Ubuntu: Jak poprawnie skonfigurować serwery DNS w / etc / network / interfaces dla resolvconf?


14

Wszystkie przykłady konfiguracji ( /etc/network/interfaces), które widziałem, pokazały, że konfigurujesz interfejs, a następnie pod spodem, który podaje następujące dns-*wiersze:

auto eth0
iface eth0 inet static
        ...
        dns-nameservers 127.0.0.2
        dns-search example.com my.example.com

Teraz wiem, że protokół DNS jest niezależny od mechanizmu transportu. Dlatego dodawanie adresu IPv6 w dns-nameserverslinii nie powinno być samo w sobie złe .

Ponieważ jednak i tak konfiguruję interfejs dla IPv6, warto dodać dns-nameserverstam linię:

iface eth0 inet6 static
        ...
        dns-nameservers ::2
        dns-search example.com my.example.com

... czy to zrobiło? Ponieważ podczas resolvconftworzenia /etc/resolv.confpo prostu ignoruje wszystkie serwery DNS IPv6. Wydaje się również, że ignoruje dns-searchi dns-domain. Jedyną linią, którą wydaje się honorować, jest dns-nameserverslinia z konfiguracji IPv4 eth0.

Jaka jest poprawna metoda konfigurowania serwerów DNS?


Dalsze poszlakowe dowody, dlaczego powinien on być częścią każdej odpowiedniej ifacezwrotki. Cytat z man 8 resolvconf:

ifup(8) Program może być używany do interfejsów sieciowych configure według ustawień /etc/network/interfaces(5). Aby ifupinformacje push resolvconfserwera nazw były konfigurowane podczas dodawania interfejsu, dodaj dns-wiersze do odpowiedniej sekcji ifacew /etc/network/interfaces. Aby dodać adresy serwerów nazw, dodaj linię zaczynającą się od dns-nameservers.


Jeśli nadal masz ten problem, prześlij cały plik / etc / network / interfaces i dane wyjściowe / usr / share / resolvconf / dump-debug-info, które są zawarte w pakiecie resolvconf w Ubuntu 15.04.
jdthood

Odpowiedzi:


9

Prawidłowe jest umieszczanie opcji dns- * w iface eth0 inet staticzwrotce lub iface eth0 inet6 staticzwrotce. Opcje stają się aktywne, gdy staje się aktywna definicja interfejsu logicznego, do którego należą.

Właśnie przetestowałem to na moim komputerze Ubuntu 15.04, który zwykle konfiguruję za pomocą DHCP. Wyłączyłem NetworkManager i edytowałem / etc / network / interfaces, aby wyglądało to tak:

iface eth0 inet static
        address 192.168.178.22
        netmask 255.255.255.0
        dns-nameservers 8.8.8.8
        dns-search foo

iface eth0 inet6 static
        address fe80::390:f5ff:fef7:96b9/64
        dns-nameservers ::2
        dns-search bar

Potem zrobiłem

$ sudo ifup eth0

Wyniki:

$ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:90:f5:f7:96:b9  
      inet addr:192.168.178.22  Bcast:192.168.178.255  Mask:255.255.255.0
      inet6 addr: fe80::390:f5ff:fef7:96b9/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:2114609 errors:0 dropped:1 overruns:0 frame:0
      TX packets:1757693 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:2033346950 (2.0 GB)  TX bytes:1318685445 (1.3 GB)
      Interrupt:20 Memory:f7e00000-f7e20000 

$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver ::2
nameserver 8.8.8.8
search bar foo

Zauważ, że adresy, serwery nazw dns i opcje wyszukiwania dns z obu zwrotek są teraz aktywne.

[Zaktualizowano 30 maja 2015 r.]


1

Na moim RPi z Ubuntu 16.04.2 LTS moje ustalenia były następujące:

Uwaga: odinstalowałem NetworkManagera i po prostu opuściłem resolvconf, aby wykonać swoje czynności. (To jest naprawiony serwer, więc nic się nie zmienia w sieci.)

JEŚLI miałem wiersze dns-search i dns-nameserver tylko na JEDNYM interfejsie (podstawowym, przewodowym), ale nie na drugim (wlan0), a następnie przy ponownym uruchomieniu, około 95% czasu to mój plik /etc/resolv.conf pusty.

np. gdy mój plik interfejsów wyglądał tak:

# The primary network interface
auto enxb827ebbfedcf
iface enxb827ebbfedcf inet static
    address 192.168.1.16
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    dns-search summer.co.uk summer.vpn
    dns-nameserver 192.168.1.16 
    dns-nameserver 192.168.1.1

# end stanza with clear line+

# The loopback network interface
auto lo
iface lo inet loopback

auto wlan0 
iface wlan0 inet static
    address 192.168.1.17
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1 
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

NASTĘPNIE po ponownym uruchomieniu mój resolv.conf wyglądałby tak:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

Jednak po jednym lub dwóch ponownych uruchomieniach zauważyłem, że NIE Miałem tego, czego chciałem, np

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.168.1.16
nameserver 192.168.1.1
search summer.co.uk summer.vpn

Rozwiązanie Kiedy podałem OBU interfejsom (przewodowym i wlan0) linie dns-search i dns-nameserver, wszystko działało dobrze przy każdym ponownym uruchomieniu komputera (jak dotąd)

tzn. działa dla mnie następujący plik interfejsów:

# The primary network interface
auto enxb827ebbfedcf
iface enxb827ebbfedcf inet static
    address 192.168.1.16
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    dns-search summer.co.uk summer.vpn
    dns-nameserver 192.168.1.16 
    dns-nameserver 192.168.1.1

# end stanza with clear line+

# The loopback network interface
auto lo
iface lo inet loopback

auto wlan0 
iface wlan0 inet static
    address 192.168.1.17
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    dns-search summer.co.uk summer.vpn
    dns-nameserver 192.168.1.16 
    dns-nameserver 192.168.1.1
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

i daje mi następujący poprawny resolv.conf po każdym ponownym uruchomieniu (do tej pory)

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.168.1.16
nameserver 192.168.1.1
search summer.co.uk summer.vpn

Zakładam, że ta zduplikowana konfiguracja jest normalna, choć nieco zbędna.

Wniosek: Jeśli interfejs (inny niż lo0) nie ma informacji o wyszukiwaniu dns i serwerze nazw dns, oznacza to, że resolvconf nie umieszcza nic w pliku resolv.conf. (To tak, jakby ifup zrobił drugi interfejs wlan0 i ifup wyczyścił plik resolv.conf lub podobny.)

Nie jestem pewien, czy jest to błąd, czy nie, jednak czuję się źle.


-1

Edycja interfejsów sieciowych w celu dodania użycia niestandardowego DNS to sposób ... ale w celu trwałej modyfikacji ogólnosystemowego pliku resolv.conf za pomocą niestandardowego serwera nazw dns należy zainstalować pakiet resolvconf (jeśli nie jest już zainstalowany domyślnie) i wypełnić jego bazę plik konfiguracyjny z niestandardowymi wartościami serwerów nazw DNS. Mam nadzieję, że ten krótki przewodnik pomoże ci w dalszych konfiguracjach dotyczących wpisów DNS resolv.conf http://www.bytelinux.com/make-permanent-changes-to-resolv-conf-file-on-ubuntu/


2
Witamy w systemach Unix i Linux! Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj więcej istotnych części tego przewodnika i podać odnośnik.
Anthon

@MateiCezar: czy mógłbyś opracować? Nie jestem pewien, czy przeczytałeś moje pytanie do końca. Pakiet resolvconf jest zainstalowany. Chciałbym /etc/network/interfacesskonfigurować moje serwery DNS odpowiednio dla IPv4 i IPv6.
0xC0000022L

-1

Chcesz korzystać z serwerów DNS IPv6 na /etc/network/interfaces ... po prostu umieść wpisy nazw DNS IPv6 w określonym interfejsie sieciowym w następujący sposób:

dns-nameservers 2001:4860:4860::8844 2001:4860:4860::8888. 

Aby trwale dodać dnsnamesers IPv6 do resolv.conf, użyj tego samego linku, który dodałem poniżej, i edytuj plik podstawowy resolvconf, wypełniając własnymi nazwami DNS IPv6:

nameserver 2001:4860:4860::8844
nameserver 2001:4860:4860::8888 

Aby skonfigurować / etc / network / interfejsy z IPv6, skorzystaj z tego przewodnika http://www.bytelinux.com/configure-permanent-static-ip-address-alias-interfaces-debian-based-systems/ i zamień IPv4 na IPv6 tak jak wygląda następująco: auto eth0

iface eth0 inet6 static
        address 2800:210:0:1::3
        netmask 64
        gateway 2800:210:0:1::1
        dns-nameservers 2001:4860:4860::8844 

Naprawiono formatowanie. Ponownie moje pytanie jasno stwierdza, że ​​nie powoduje to dodania tych serwerów DNS dla IPv6 /etc/resolv.conf. Jeśli to w jakiś sposób zadziała, dobrze byłoby znać dokładną wersję systemu.
0xC0000022L

pozwólcie, że zrozumiem to prosto ... chcesz użyć resolwerów DNS IPv6 z / etc / network / interfaces i jakoś dodanie ich do tego pliku nie działa dla ciebie?
Matei Cezar

Mogę dodać je do /etc/network/interfacesporządku. Nie dzieje się tak, że zostają przeniesieni /etc/resolv.conftak, jak powinni. Próbuję dowiedzieć się, co robię źle, tak.
0xC0000022L

Nadal tego nie rozumiesz? Te wpisy DNS z / etc / network / interfaces zostaną przeniesione do /etc/resolv.conf czy nie? Używaj tych wpisów serwerów nazw z interfejsów, które nigdy nie są przesyłane ani zapisywane na /etc/resolv.com, działają one same z tej karty sieciowej i nie są zaimplementowane w całym systemie. Tylko interfejsy DNS z pliku /etc/resolv.conf są używane przez interfejsy, którym brakuje wpisów dnsnameservers.
Matei Cezar

Przepraszam ... ale nadal nie rozumiem, co próbujesz osiągnąć dzięki tym wpisom serwerów nazw DNS.
Matei Cezar

-1

Dlaczego nie zaimplementujesz tych serwerów nazw DNS IPv6 bezpośrednio w pliku systemowym /etc/resolv.conf, edytując plik podstawowy resolvconf, jak sugerowano w mojej poprzedniej odpowiedzi z linkiem, i nadal używasz pliku interfejsów sieciowych? Możesz dodać zestaw serwerów nazw IPv6 DNS w /etc/resolv.conf, a jeśli chcesz używać innych serwerów nazw IPv6 dla konkretnej karty sieciowej, używaj ich tylko w / etc / network / interfaces.


co można wymienić w swoim ostatnim zdaniu jest właśnie powód, dlaczego nie chcę użyć config bazową resolvconf i to jest dokładnie to, co ja jestem stara. Co więcej, właśnie to zawodzi.
0xC0000022L

Ok, rozumiem! Ale dlaczego chcesz zaimplementować to w ten sposób? W każdym razie potrzebujesz tylko tych serwerów nazw DNS, aby były dostępne w całym systemie, czy istnieje jakiś powód, aby przenieść je z sieci / interfejsów do resolv.conf, kiedy możesz po prostu napisać je w obu pliki i gotowe !?
bytelinux com

Nie jestem pewien, iloma maszynami administrujesz, ale dla mnie wystarczy spróbować i ułatwić sobie życie. Ponieważ /etc/network/interfacesma to zrobić, staram się dowiedzieć, co robię źle.
0xC0000022L
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.