Что делает & ldquo; sudo echo nameserver 8.8.8.8 > /etc/resolv.conf” делать?

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

Раньше у меня была случайная потеря подключения к Интернету на 15 секунд до 3 минут, но после использования этой команды подключение к Интернету работает как чудо. Мне просто любопытно, что сделала эта волшебная командная строка.

12
задан 30 January 2013 в 13:52

1 ответ

Это заменяет сервер имен (DNS), используемый на Вашей машине сервисом Google Public DNS. Если выполнение той команды выручает Вас, у Вас есть проблемы 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. Откройте соединения Edit:

    enter image description here

  2. Отредактируйте профиль подключения, который Вы используете.

    enter image description here

  3. На вкладке IPv4 Settings:

    • Метод: Автоматический (DHCP) обращается только

      Эта установка делает его делающий обычный запрос DHCP для конфигурации IP-адреса Вашего хоста, но это проигнорирует другие необязательные опции как предложенные серверы DNS.

    • DNS-серверы: 8.8.8.8
    • Хит сохраняет

    enter image description here

Готово.


Важные примечания

В локальной или корпоративной сети локальный сервер DNS мог бы использоваться для локальных хостов. Вы освободите эту функциональность путем прямой просьбы, чтобы серверы Google разрешили имена Вас. Так, если бы, например, локальный сервер DNS знал бы, каков "принтер", затем Вы освободите использование Вашего принтера тем именем.

Так, почините свой локальный сервер DNS вместо этого. Если это - просто простое средство передачи к поврежденному серверу DNS Вашего ISP, и Вы не можете изменить это (управляемый ISP all-in-one-router, например), то это 8.8.8.8 решением могла бы быть Ваша единственная опция.

26
ответ дан 30 January 2013 в 13:52

Другие вопросы по тегам:

Похожие вопросы: