Co robi „sudo echo nameserver 8.8.8.8> /etc/resolv.conf”?

13

Czy ktoś może mi powiedzieć, co sudo echo nameserver 8.8.8.8 > /etc/resolv.confrobi?

Zwykle miałem przypadkowe zrywanie połączenia internetowego przez 15 sekund do 3 minut, ale po użyciu tego polecenia połączenie internetowe działa jak urok. Jestem tylko ciekawy, co zrobiła ta magiczna linia poleceń.

Jeanno
źródło
3
Dziwię się, że to faktycznie działa - sudo powinno mieć zastosowanie tylko do echa tutaj, a nie do przekierowania, a użytkownik inny niż root nie powinien mieć dostępu do /etc/resolv.conf
Max
@Max Masz absolutną rację. Tęskniłem za tą częścią - zaktualizowałem swoją odpowiedź.
gertvdijk

Odpowiedzi:

27

Zastępuje serwer nazw (DNS) używany na twoim komputerze przez usługę Google Public DNS . Jeśli uruchomienie tej komendy pomoże ci, masz problemy z DNS w ustawieniach domyślnych zapewnionych przez twoją sieć (DHCP). Chociaż lepiej byłoby rozwiązać pierwotną przyczynę problemu, jest to ogólna odpowiedź na twoje pytanie.


Objaśnienie polecenia

sudo echo nameserver 8.8.8.8 > /etc/resolv.conf
  • sudo podnosi uprawnienia do rootowania w tym przypadku.
  • echopo prostu wyprowadza argumenty następujące po standardowym wyjściu (w tym przypadku wyprowadza nameserver 8.8.8.8)
  • > przekierowuje standardowe wyjście do pliku (zastępuje go) w zwykłej powłoce uniksowej.
  • /etc/resolv.conf to plik, w którym zapisywane jest wyjście.
  • Mając na linię nameserver 8.8.8.8w /etc/resolv.confsprawia, że system za pomocą serwera nazw posiadający adres IP 8.8.8.8dla rozwiązywania nazw domen na adresy IP. (bardzo krótka wersja tego, co faktycznie się dzieje)
  • 8.8.8.8jest jednym z adresów opublikowanych przez Google, w których nasłuchują ich publiczne usługi DNS.

sudo błąd

Chociaż to wyjaśnienie wydaje się prawdopodobne, nie zadziała, ponieważ wystąpi błąd :

bash: /etc/resolv.conf: Permission denied

Dlaczego? Przekierowanie danych wyjściowych jest obsługiwane przez powłokę (tutaj: Bash) i nie jest brane pod uwagę dla polecenia użytego dla sudo. Podobne do mnożenia w matematyce ma pierwszeństwo przed dodawaniem. Po prostu echoma podwyższone uprawnienia, ale twoja skorupa nie! Aby rozwiązać ten problem, należy uruchomić to polecenie jak

sudo sh -c "echo nameserver 8.8.8.8 > /etc/resolv.conf"

lub za pomocą potoku i teewyprowadzić go do pliku:

echo nameserver 8.8.8.8 | sudo tee /etc/resolv.conf  #prints to screen as well

Ubuntu and Network Manager

W Ubuntu jest to tylko tymczasowa zmiana, ponieważ Network Manager „zarządza” /etc/resolv.confplikiem. Lokalne modyfikacje zostaną zastąpione. Dlatego należy skonfigurować to w Menedżerze sieci, aby było trwałe.


Konfiguracja za pomocą Network Managera

Zalecam prawidłowe skonfigurowanie komputera za pomocą Network Managera. Zakładam, że używasz DHCP w swojej sieci (najczęściej). Następnie zrób to, aby wykonać to samo, co odpowiednik polecenia, którego używałeś:

  1. Otwórz edycję połączeń :

    wprowadź opis zdjęcia tutaj

  2. Edytuj używany profil połączenia.

    wprowadź opis zdjęcia tutaj

  3. Na karcie Ustawienia IPv4 :

    • Metoda: tylko adresy automatyczne (DHCP)

      To ustawienie powoduje, że wykonuje on regularne żądanie DHCP dotyczące konfiguracji adresu IP hosta, ale zignoruje inne nieobowiązkowe opcje, takie jak sugerowane serwery DNS.

    • Serwery DNS: 8.8.8.8
    • Hit Save

    wprowadź opis zdjęcia tutaj

Gotowy.


Ważne notatki

W sieci lokalnej lub korporacyjnej lokalny serwer DNS może być używany do hostów lokalnych. Utracisz tę funkcję, prosząc bezpośrednio serwery Google o rozpoznanie dla Ciebie nazw. Tak więc, jeśli na przykład lokalny serwer DNS wiedziałby, co to jest „drukarka”, oznacza to, że utracisz używanie drukarki o tej nazwie.

Dlatego zamiast tego napraw lokalny serwer DNS. Jeśli jest to zwykły forwarder do uszkodzonego serwera DNS twojego dostawcy usług internetowych i nie możesz tego zmienić (na przykład router All-in-one-router zarządzany przez dostawcę usług internetowych), to 8.8.8.8rozwiązanie może być Twoją jedyną opcją.

gertvdijk
źródło
1
Kolejna ważna uwaga: Google prawdopodobnie zbiera informacje o tym, kto szuka informacji w DNS, więc zastanów się, czy nie czujesz się z tym dobrze. Istnieje wiele innych publicznych serwerów DNS, z których można skorzystać i są one ogólnie niezawodne. Wygląda na to, że OP używał złego serwera DNS, który mógł, ale nie musi być lokalnym serwerem. (Miałem towarowe routery ADSL, które wykonują wyjątkowo słabą pracę z dns).
mc0e