Как правильно сменить DNS IP?

56

Я подозреваю, что сервер имен, предоставленный моим модемом / маршрутизатором ADSL, глючит. Когда я впервые захожу на веб-сайт в Ubuntu, разрешение доменного имени занимает не менее 15 секунд.

Чтобы обойти эту проблему, я изменил конфигурацию сервера имен /etc/resolv.confс 192.168.1.1 (мой ADSL-модем) на 8.8.8.8 (основной DNS Google). Кажется, это решает проблему, но, к сожалению, мои изменения /etc/resolv.confперезаписываются «NetworkManager» при каждом запуске.

Как правильно настроить IP-адрес сервера имен в Ubuntu 10.4?

Вим Коенен
источник

Ответы:

51

Если у вас типичная настройка соединения с сетевым менеджером и DHCP, попробуйте следующее:

  1. Щелкните правой кнопкой мыши значок диспетчера сети на панели и выберите «Изменить подключения ...»
  2. Выберите ваше подключение на проводной или беспроводной вкладке, выберите «Изменить»
  3. (Введите свой пароль, если соединение установлено как «общесистемный доступный»)
  4. Выберите вкладку настроек IPv4
  5. Переключить метод на «Только автоматические (DHCP) адреса»
  6. Введите имя нужного сервера в поле «Дополнительные DNS-серверы» и нажмите «Применить».

Это должно делать свое дело.

Марсель Стимберг
источник
1
Это продолжает работать в Ubuntu 12.04 и более поздних версиях, хотя NetworkManager теперь использует resolvconf для обработки resolv.conf.
JDthood
4
Если вам интересно, где заканчивается конфигурация, посмотрите /etc/NetworkManager/system-connections/(вам потребуются права администратора для доступа к этим файлам конфигурации).
Лекенштейн
2
Это только меняет DNS для текущего соединения, но есть ли способ для глобального изменения DNS ?
rubo77
список для меня пуст что он использует по умолчанию?
Дж. Тейлор
1
Работает точно так же на терминальном интерфейсе, nmtuiкстати!
Гранитозавр
30

Вы можете изменить их, как это.

Сначала щелкните значок диспетчера сети на панели меню и щелкните Edit Connections...элемент.

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

Теперь переключитесь на вкладки «Проводной» или «Беспроводной», в зависимости от того, что вы используете - я использую WiFi, поэтому я буду использовать это.

Выберите название вашей сети и нажмите Edit...

Перейдите на вкладку IPv4, а затем измените ее с автоматического DHCP на автоматические (DHCP) адреса только.

Введите в свой DNS-сервер IP-адрес.

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

Нажмите сохранить, и все готово!

JRG
источник
В то время как вы можете изменить DNS-сервер в настройках сети на любом ПК, лучше всего менять их в реальном маршрутизаторе, который подключается к Интернету, чтобы все подключенные устройства извлекали из этого выгоду.
Марк Руни
3
Что если у него нет роутера как такового? Или он просто хочет сменить DNS для этого компьютера / пользователя? Что если это только один раз? Возможно, он на самом деле не имеет доступа к маршрутизатору и хочет использовать другой DNS-сервер ... Я могу добавлять причины в этот список всю ночь напролет. Хороший совет и ответ @jrg.
Бруно Перейра
6
Это хорошее графическое руководство по настройке DNS на одной машине с сетевым менеджером. Я хотел бы только отметить, что вы можете установить более одного, разделив запятую. 8.8.8.8,8.8.4.4, Установка DNS для ЛВС также может быть полезна, если локальная сеть достаточно велика, я лично использую маршрутизатор или dnsmask. В локальной сети часто проще поддерживать черный список или прокси-сервер в одном месте (router / dnsmask / squid), а не на каждом клиенте или на каждом пользователе на каждом клиенте, но это немного выходит за рамки задаваемого здесь вопроса.
Пантера
29

Лучший способ установить сервер имен через CLI, без NetworkManger, со статическим адресом или независимо от соединения:

Установите пакет resolvconf .

Бегать

sudo nano /etc/resolvconf/resolv.conf.d/head

(игнорируйте страшное предупреждение. /etc/resolv.conf генерируется автоматически, поэтому предупреждение уже есть, поэтому оно будет помещено в /etc/resolv.conf при создании /etc/resolv.conf.) В конец файла, Добавлять

 nameserver <ip_of_nameserver>

Нажмите Ctrl xи ответьте да, чтобы сохранить файл. Чтобы закончить, создайте заново /etc/resolv.conf, чтобы изменения вступили в силу прямо сейчас:

 sudo resolvconf -u
Azendale
источник
1
Почему-то месяц назад моя ночная сборка Xubuntu перестала разрешать имена хостов в локальной сети. Мой DHCP-сервер должен выдавать себя (192.168.68.1) в качестве DNS-сервера, я также жестко запрограммировал его в Network Manager и во всех местах (упомянутых выше в этом ответе). Учитывая то, как Xubuntu / NetworkMan / Wh независимо использует IP-адрес 127.0.xx в наши дни, трудно диагностировать проблему. Я мог разрешить внешние IP-адреса, поэтому он получал что-то для DNS. Во всяком случае, это был единственный ответ, который решил мою проблему. Спасибо
Адам Плохер
18

Другой способ сделать это - отредактировать, /etc/dhcp3/dhclient.confвы можете сделать это, набрав это в диалоговом окне запуска (появляется при нажатии Alt+ F2)

gksudo gedit /etc/dhcp3/dhclient.conf

Затем найдите следующую строку

#prepend domain-name-servers 127.0.0.1;

И изменить его на

prepend domain-name-servers 8.8.8.8;

Это заставит dhclient (DHCP-клиент, который использует NetworkManager) добавить это к вашим DNS-серверам, так что resol.conf будет выглядеть примерно так

nameserver 8.8.8.8
nameserver 192.168.1.1

Это решение будет работать везде, и вы всегда получите DNS, который вы выбрали в качестве основного.

LassePoulsen
источник
4
Мне кажется, что Network Manager пишет resolv.conf без консультации с dhclient.conf
daithib8
2
в Ubuntu 11.10 вам нужно изменить /etc/dhcp/dhclient.conf вместо /etc/dhcp3/dhclient.conf
Pawel Barcik
1
можно поставить в несколько?
PyRulez
1
@PyRulez Да, через запятую, точка с запятой в конце
Сергей Колодяжный
2
Я попробовал это в 14.10, но
безрезультатно
7

Другим решением является изменение конфигурации вашего маршрутизатора для использования другого DNS-сервера. Просто войдите в систему с правами администратора, и если проблема не в маршрутизаторе, все ваши клиентские машины получают более качественный DNS.

Оли
источник
+1 Согласен, если эта проблема вряд ли будет решена в ближайшее время, лучше всего исправить ее на маршрутизаторе, тогда она будет исправлена ​​для всех машин в сети. Я считаю, что лучше всего использовать Google DNS или OpenDNS.
Марк Дэвидсон
1
Я уже сделал это, но маршрутизатор тогда все еще действует как промежуточный сервер имен между клиентами и настроенным сервером имен, и это все еще очень медленно.
Вим Коенен
1
Многие интернет-провайдеры блокируют свои маршрутизаторы, поэтому вы не можете изменять эти настройки или должны платить за это.
LassePoulsen
@Wim Если ваш маршрутизатор не может обеспечить разрешение DNS в течение разумного периода времени, скажем, 50 мс при хорошем соединении, значит, с ним что-то не так. Так неправильно, это может неэффективно обрабатывать другой трафик. Это может быть время для обновления 30 $ / 20 $.
Оли
1
@Oli: проблема с DNS обнаруживается только при использовании роутера из коробки linux: у меня была такая же проблема с debian, но не было проблем с windows. Я уверен, что это просто небольшая проблема совместимости. В противном случае роутер работает нормально.
Вим Коенен
6

Нажмите на индикатор сети в правом верхнем углу экрана и выберите Edit Connections.... Выберите соединение, которое хотите изменить (вероятно, на вкладке Wiredили, Wirelessи нажмите Edit...кнопку.

Перейдите на IPv4 Settingsвкладку окна подключения и измените метод с Automatic (DHCP)на Automatic (DHCP) addresses only. Теперь вы сможете указать IP-адрес DNS-сервера.

Сохраните соединение, и вам должно быть хорошо идти. Возможно, вам придется сбросить соединение, выбрав его в меню индикатора после изменения настроек.

Джеймс Хенстридж
источник
1

Я считаю, что если вы измените его под сетевым менеджером, изменения будут сохранены.

Например, использовать eth0

Диспетчер сети -> Проводной -> Авто eth0 -> Настройки ipv4.

Установите DNS-сервер на 8.8.8.8 и примените.

Марк Дэвидсон
источник
У меня были проблемы с поиском чего-то, что называется "сетевой менеджер" Существует «Система - Администрирование - Сетевые инструменты», но это не помогает. В конце концов я обнаружил, что мне нужно «Система - Настройки - Сетевые подключения».
Вим Коенен
1
На панели есть значок диспетчера сети (отображающий состояние вашей сети), который вы можете щелкнуть правой кнопкой мыши, чтобы изменить соединения.
Марсель Стимберг
Это не работает
user568021
0

Использование терминала

Вам необходимо отредактировать /etc/resolv.confфайл, чтобы задать IP-адрес сервера имен, который должен запрашивать распознаватель. Можно определить до 3 IP-адресов серверов имен. Если имеется несколько серверов, библиотека распознавателя запрашивает их в указанном порядке.

Первый тип

sudoedit /etc/resolv.conf

Добавьте IP-адрес предпочитаемого DNS-сервера следующим образом:

nameserver <preferred-ip1>
nameserver <preferred-ip2>
nameserver <preferred-ip3>

взяты из: http://www.cyberciti.biz/faq/ubuntu-linux-configure-dns-nameserver-ip-address/

Амит КК
источник
6
Обратите внимание, что если серверы имен установлены через DHCP, они /etc/resolv.confбудут перезаписаны. Таким образом, этот подход подходит только для машин с ручными настройками сети. Технически, вы могли бы сделать , chattr +i /etc/resolv.confчтобы предотвратить файл от изменения (я так и сделал года назад), но лучшим способом для большинства машин будет подход JRG в своем ответе: askubuntu.com/a/90263/13398 .
Скотт Северанс
@ScottSeverance Что у системы не было X
Amith KK
В этом случае это, вероятно, сервер с настроенной вручную сетью, и в этом случае ваш ответ вполне уместен. Но большинство машин Ubuntu работают под управлением X и могут легко справиться с другим подходом. Если на машине не запущен X, но установлен подходящий графический интерфейс, вы также можете запускать графические инструменты через SSH ForwardX11=yes.
Скотт Северанс
6
Если вы собираетесь попытаться отредактировать файл /etc/resolv.conf вручную, правильный способ сделать это (чтобы он не был перезаписан) - установить пакет resolvconf, а затем отредактировать файл / etc / resolvconf / resolv. conf.d / head или /etc/resolvconf/resolv.conf.d/tail.
Азендейл
0

Для безголовых серверов, где нет X и управление осуществляется с помощью ssh или чего-либо еще, необходимо решение из командной строки. Если resolv.conf не перезаписан, то это правильное место для изменения серверов имен.

Если resolv.conf действительно перезаписываются тогда, на 14.04LTS по крайней мере, файлы редактирования являются:

  • /etc/resolvconf/resolv.conf.d/head
  • /etc/resolvconf/resolv.conf.d/tail

Я настоятельно рекомендую помещать строки комментариев в такие файлы, чтобы они появлялись в сгенерированном файле (/etc/resolve.conf), и вы сможете найти их в будущем. Я начинаю и заканчиваю каждый файл однострочным комментарием формы:

  • # ====== begin /etc/resolveconf/resolv.d/tail ======
  • # ====== end /etc/resolveconf/resolv.d/tail ======

и поместите соответствующие директивы между ними.

Гордон
источник
0

Я обнаружил, что добавление строки dns-nameserver ipв файл интерфейсов, установка для параметров проводного соединения ipv4 только автоматической настройки (DHCP) и ввод IP-адреса DNS-сервера и имени домена. Кроме того, добавление локального IP-адреса DNS в раздел статического DNS DSL-маршрутизатора заставляет NetworkManager включить этот локальный адрес в resolv.confфайл, который он перезаписывает, наряду с другой информацией, полученной от маршрутизатора. Похоже, что все это вместе делает локальное разрешение имен DNS постоянным, что кажется удивительно трудной задачей. Мне нужен локальный DNS для подключения клиента Linux к общему ресурсу Samba с использованием mount.cifsсети, обслуживаемой DHCP.

Danegerous
источник
0

Если Network-Managerостановлен и /etc/resolvconf/resolv.conf.d/baseбыл настроен.

Может быть resolvconf --enable-updatesполезно.

j.doe
источник
0

Вы можете изменить настройки DNS IPv4 графическим способом, как ответили здесь

Но если вам интересно, как сделать то же самое с помощью командной строки, вы должны перечислить файлы в /etc/NetworkManager/system-connectionsкаталоге с помощью lsкоманды:

ls /etc/NetworkManager/system-connections

Должен быть файл с названием вашего соединения, мое называется Wired Connection 1.

Итак, нам нужно отредактировать файл и добавить в него DNS-серверы:

Sudo nano "/etc/NetworkManager/system-connections/Wired connection 1"

Добавьте столько [ipv4]разделов DNS-серверов, сколько вам нужно, в разделе и разделите их точками с запятой, ;а также поставьте ;в конце последнего DNS-сервера вот так:

[ipv4]
dns=1.1.1.1;8.8.8.8;9.9.9.9;

Вы можете просто удалить эту строку, если не хотите назначать днс.

Также необходимо добавить эту строку, ignore-auto-dns=trueчтобы игнорировать предоставленные DHCP DNS-серверы (например, DNS-сервер, установленный в конфигурации маршрутизатора):

[ipv4]
dns=1.1.1.1;8.8.8.8;9.9.9.9;
ignore-auto-dns=true

Немного контекста к этому ответу: я пытался выяснить, какой файл редактируется, когда я добавляю DNS-сервер в настройках DNS графического интерфейса, поэтому я выполнял эту команду в течение 16+ часов: sudo grep -rs "1.1.1.1" /она сканировала все файлы на моей виртуальной машине Ubuntu но он так и не закончился даже после того, как запустился так долго, но я знал, что возможно, что файл мог существовать, /etc/NetworkManagerпоэтому я grepснова запустил указатель на этот каталог и обнаружил это: /etc/NetworkManager/system-connections/Wired connection 1:dns=1.1.1.1;поэтому я вернулся сюда, чтобы написать ответ, только чтобы узнать, что Лекенштейн уже указал на это в комментариях к принятому ответу .

Шаян
источник