Що робить "sudo echo nameserver 8.8.8.8> /etc/resolv.conf"?


13

Може хтось, будь ласка, скаже мені, що sudo echo nameserver 8.8.8.8 > /etc/resolv.confробить?

У мене було випадкове переривання підключення до Інтернету протягом 15 секунд до 3 хвилин, але після використання цієї команди інтернет-з'єднання працює як принадність. Мені просто цікаво, що зробив цей магічний командний рядок.


3
Я здивований, що насправді це працює - sudo має застосовуватися лише до луни тут, а не до перенаправлення, а некористувальницький користувач не повинен мати доступ до /etc/resolv.conf
Max

@Max Ви абсолютно праві. Я пропустив цю частину - оновив свою відповідь.
gertvdijk

Відповіді:


27

Він замінює сервер імен (DNS), який використовується на вашій машині службою загального користування DNS Google . Якщо виконання цієї команди допоможе вам, у вас виникнуть проблеми з DNS у налаштуваннях за замовчуванням, які надає ваша мережа, можливо, (DHCP). Хоча краще було б вирішити першопричину проблеми, це загальна відповідь на ваше запитання.


Пояснення команди

sudo echo nameserver 8.8.8.8 > /etc/resolv.conf
  • sudo підвищує привілеї, що мають бути кореневими в цьому випадку.
  • echoпросто виводить аргументи, що відповідають стандартному виводу (у цьому випадку він виводить nameserver 8.8.8.8)
  • > перенаправляє стандартний вихід у файл (перезаписує його) у звичайній оболонці Unix.
  • /etc/resolv.conf - це файл, куди записаний вихід.
  • Маючи лінію nameserver 8.8.8.8в /etc/resolv.confробиш систему з допомогою сервера імен , що мають IP - адреса 8.8.8.8для розв'язання доменних імен IP - адреси. (дуже коротка версія того, що насправді відбувається)
  • 8.8.8.8є однією з адрес, опублікованих Google щодо того, де їх публічні служби DNS слухають.

sudo помилка

Хоча це пояснення звучить правдоподібно, це не спрацює, оскільки ви отримаєте помилку :

bash: /etc/resolv.conf: Permission denied

Чому? Перенаправлення виводу обробляється вашою оболонкою (тут: Bash) і не враховується для команди, що використовується для sudo. Подібно до того, як множення в математиці має перевагу над додаванням. Отож, це просто echoте, що має підвищені привілеї, але ваша оболонка не має! Щоб вирішити це, слід виконати цю команду, як

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

або, використовуючи трубу і teeвивести її у файл:

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

Ubuntu та мережевий менеджер

Для Ubuntu це лише тимчасова зміна, оскільки Менеджер мережі "управляє" /etc/resolv.confфайлом. Локальні модифікації будуть замінені. Ось чому ви повинні налаштувати це в Менеджері мереж, щоб воно було стійким.


Конфігурація за допомогою Менеджера мережі

Я рекомендую правильно налаштувати ваш ПК за допомогою Менеджера мереж. Я припускаю, що ви тут використовуєте DHCP у своїй мережі (найчастіше). Потім зробіть це, щоб виконати те саме, що еквівалент команді, яку ви використовували:

  1. Відкрийте Редагувати з'єднання :

    введіть тут опис зображення

  2. Відредагуйте профіль з'єднання, який ви використовуєте.

    введіть тут опис зображення

  3. На вкладці Налаштування IPv4 :

    • Метод: лише автоматичні (DHCP) адреси

      Цей параметр робить звичайний запит DHCP для конфігурації IP-адреси вашого хоста, але він ігнорує інші необов'язкові параметри, такі як запропоновані сервери DNS.

    • DNS-сервери: 8.8.8.8
    • Натисніть Зберегти

    введіть тут опис зображення

Зроблено.


Важливі примітки

У локальній або корпоративній мережі локальний DNS-сервер може використовуватися для локальних хостів. Ви втратите цю функціональність, прямо попросивши сервери Google вирішити імена для вас. Отже, якщо, наприклад, локальний DNS-сервер знав би, що таке "принтер", ви втратите використання свого принтера під цим іменем.

Отже, виправте замість цього локальний DNS-сервер. Якщо це просто простий перенаправник на зламаний DNS-сервер вашого провайдера, і ви не можете цього змінити (наприклад, все-в-одному-маршрутизаторі, що управляється провайдером), то це 8.8.8.8рішення може бути єдиним варіантом.


1
Ще одна важлива примітка: Google, імовірно, збирає того, хто шукає, що в DNS, тому подумайте, чи вам це зручно. Є багато інших загальнодоступних серверів DNS, якими ви можете користуватися, і вони, як правило, надійні. Здається, що ОП використовував поганий DNS-сервер, який може бути або не бути локальним. (У мене були товарні маршрутизатори ADSL, які роблять надзвичайно погану роботу з dns).
mc0e
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.