Jak zaktualizować /etc/network/interfaces
coś po aktualizacji bardzo podobnej do poniższej /etc/resolv.conf
? Próbowałem (jako root) resolver -u
, service networking restart
ale nie działały. Naprawiłem także dowiązanie symboliczne resolv.conf
i spróbowałem resolver -u
ponownie. W końcu z frustracji zrestartowałem komputer, co naprawiło problem poprzez przebudowę /etc/resolv.conf
.
Ubuntu 12.04, serwer 64-bitowy, wszystkie najnowsze zainstalowane łatki.
Przykład /etc/network/interfaces
:
iface eth0 inet static
address 192.168.3.3
netmask 255.255.255.0
gateway 192.168.3.1
dns-search example.com
dns-nameservers 192.168.3.45 192.168.8.10
server
dns
resolv.conf
nslntmnx
źródło
źródło
Odpowiedzi:
service networking restart
nie zawsze jest niezawodnym sposobem obniżania poziomu wszystkich interfejsów.resolvconf -u
Dowodzenia tylko aktualizacjeresolv.conf
z własnej bazy danych resolvconf jest. Musisz zaktualizować bazę danych.Aby zaktualizować bazę danych, musisz wywołać resolvconf z opcją
-a
lub-d
. Dzieje się tak za kulisami, gdy uruchamiasz ifup lub ifdown. Tak więc normalnie, podobnie jak w przypadku każdej innej zmiany/etc/network/interfaces
, aby aktywować zmiany w opcjach dns- *, należy przejść do danego interfejsu i ponownie. Lub możesz uruchomić ponownie.Jeśli chcesz wprowadzić zmiany w interfejsie bez wyłączania go (być może dlatego, że administrujesz maszyną zdalnie i zdarza się, że jesteś podłączony przez ten interfejs, natch), możesz osiągnąć ten sam wynik, uruchamiając resolvconf bezpośrednio z wiersza poleceń. Wymaga to nieco większej wiedzy na temat semantyki resolvconf. Załóżmy, że odpowiednia sekcja / e / n / i to
gdzie FFFF jest rodziną adresów („inet” lub „inet6”).
Aby aktywować te opcje dns- *, uruchom komendę resolvconf w następujący sposób (tak, z nowymi wierszami w strumieniu do resolvconf).
Dla zwrotki podanej w pytaniu byłoby to następujące.
Więcej informacji można znaleźć na stronie podręcznika resolvconf (8) i pliku README pakietu resolvconf (/usr/share/doc/resolvconf/README.gz).
źródło
resolvconf
:)/etc/network/interfaces
, można to zrobić:ifdown eth0 && ifup eth0
; działa nawet w zdalnej sesji ssh.Chociaż strona podręcznika nie jest domyślnie instalowana, jest udokumentowana opcją skryptów aktualizacji, po prostu uruchom:
źródło
Dla tych, którzy zdalnie zarządzają serwerami, możesz:
dns-nameservers
linię w/etc/network/interfaces
# ifdown eth01; ifup eth01
Zauważ, że musi to być jedna linia podzielona; (separator linii poleceń linux). Nie powinieneś nawet tracić obecnego połączenia. Wyjątkiem jest literówka w pliku interfejsów. Jeśli tak się
ifup
stanie, zawiedzie i będziesz musiał mieć fizyczny dostęp lub inneethxx
połączenie.źródło
service resolvconf restart
zregeneruje/etc/resolv.conf
plik bez większego zamieszania.źródło
Failed to restart resolvconf.service: Unit resolvconf.service not found.
/etc/resolv.conf
na serwerze Ubuntu 14.04Ta odpowiedź jest podobna do powyższej, ale wykorzystuje konfigurację przykładowego pytania, aby odpowiedzieć na pytanie. Ponadto wyjaśnia to, dlaczego oba polecenia są konieczne.
Edytuj
/etc/network/interfaces
:Te zmiany nie zostaną wprowadzone, chyba że uruchomisz ponownie lub ponownie załadujesz plik konfiguracyjny:
Aby zaktualizować plik interfejsów na żywo, należy uruchomić następujące polecenie:
Umożliwia to aktualizację interfejsu bez ponownego uruchamiania lub ponownego ładowania.
Jednak powyższe zmiany poleceń zostaną utracone po ponownym uruchomieniu, jeśli zmiany
/etc/network/interfaces
nie zostaną wprowadzone.Nawiasem mówiąc, ostatnia odpowiedź z BDenis na tej liście faktycznie działa zamiast ostatniego polecenia, analizując
/etc/network/interfaces
plik i przesyłając te wiersze do polecenia.sudo resolvconf -a eth0
To właściwie połowa odpowiedzi i naprawdę dobry przykład wbudowanego parsowania sed. Jeśli chcesz zobaczyć, jak to działa, po prostu uruchom pierwszą część polecenia i obejrzyj go, parsując/etc/network/interfaces
plik i wypluwając wszystkie niezbędne informacje potrzebne do uruchomieniasudo resolvconf -a eth0
polecenia:Zauważ, że spowodowałoby to takie samo wyjście jak polecenie:
Pod warunkiem, że
/etc/network/interfaces
plik jest skonfigurowany z tymi informacjami:źródło
/etc/network/interfaces
nie jest prawidłową opcją w tym przypadku. (Ubuntu 14.04)Prosta odpowiedź:
Wystarczy zainstalować resolvconf.
apt install resolvconf
Następnie
ifup eth0
aktualizuje dns wetc/resolv.conf
, zgodnie zdns-nameservers
linią w/etc/network/interfaces
.źródło
W dniu 18.04 następujące działa niezawodnie (uruchom jako root):
Ważne: Upewnij się, że masz
resolvconf
zainstalowany pakiet .Wydaje się, że nie jest domyślnie i bez tego niektóre (!) Zmiany z
/etc/network/interfaces
są po cichu ignorowane (npdns-*
.).źródło
To działało dla mnie:
Odpowiednio wyreguluj.
źródło
Na komputerowej wersji Ubuntu 18.04, gdzie nie ma usługi
networking
iresolvconf
nie jest instalowana domyślnie, udało mi się zregenerowaćresolv.conf
poprzez ponowne uruchomienienetwork-manager
:źródło
Możesz także wypróbować to polecenie:
źródło
dns-nameserver IP1 IP2
. Linia musi zostać powtórzonaresolv.conf
, ale nie jest./etc/network/interfaces
zastosowaniadns-nameservers
(zauważs
na końcu) podczasresolvconf
używanianameserver
. Polecenie tego nie rozwiązuje. I nawet jeśli wszystko jest w porządku, rurociągsed | grep | sed
zdecydowanie nie byłby najbardziej wydajnym sposobem.