Должен ли я отредактировать свой файл resolv.conf, чтобы устранить проблему с неправильным DNS?

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

Я добавил DNS-сервер в графический интерфейс сетевых настроек, но /etc/resolv.conf все еще содержит 127.0.0.1 в качестве адреса DNS-сервера. Теперь я подумал, что могу просто отредактировать файл самостоятельно, но там явно сказано, что я не должен редактировать файл вручную.

Теперь, поскольку графический интерфейс сетевых настроек не сгенерировал файл с правильными настройками, как мне сгенерировать новый resolv.conf файл сам по себе?

Чего не касается ни один из опубликованных до сих пор ответов, так это видимости того, что спрашивающий не понимает, что, имея nameserver 127.0.0.1 в /etc/resolv.conf правильно, если предположить, что запущен локальный сервер имен. А в Ubuntu 12.04 Desktop по умолчанию запущен локальный сервер имен, а именно dnsmasq процесс, управляемый NetworkManager, который прослушивает 127.0.0.1. В Ubuntu 12.10 адрес прослушивания был изменен на 127.0.1.1.

Таким образом, решение состоит в том, чтобы не вносить никаких изменений в resolv.conf. Это правильно, если предположить, что спрашивающий хочет использовать локальный сервер имен.

Если служба имен не работает, значит, локальному серверу имен не присваиваются правильные адреса пересылки или существует какая-то другая сетевая проблема.

Спрашивающий попытался использовать "графический интерфейс сетевых настроек", чтобы "сгенерировать файл с правильными настройками", и это не сработало. Я не знаю точно, что это значит, но вот правильный способ ввести адреса серверов имен, чтобы они оказались в resolv.conf в нужное время. Я предполагаю, что спрашивающий использует NetworkManager и не ifup для настройки интерфейсов.

Чаще всего интерфейсы настраиваются с использованием протокола DHCP. В этом случае ничего не нужно настраивать в локальной системе. DHCP-сервер знает, какой адрес сервера имен должны использовать его клиенты, и отправляет эту информацию DHCP-клиенту, который отправляет ее в NetworkManager, который отправляет ее в resolvconf, который помещает информацию в resolv.conf. Таким образом, в данном случае может потребоваться настройка DHCP-сервера.

Если сетевой интерфейс на локальном компьютере настроен статически, то правильные адреса сервера имен должны быть введены в NetworkManager, например, в разделе Индикатор сети | Редактирование подключений... | Беспроводная связь | myconnection / Редактировать... | Настройки IPv4 | Дополнительные DNS-серверы.

Возможно, локальный сервер имен работает неправильно. В этом случае спрашивающий должен отредактировать /etc/NetworkManager/NetworkManager.conf

sudo gedit /etc/NetworkManager/NetworkManager.conf

и прокомментируйте строку

dns=dnsmasq

в разделе "[главная]". Чтобы закомментировать строку, поставьте # в начале строки, затем сохраните файл. Затем перезапустите network-manager.

sudo restart network-manager

После этого адреса нелокальных серверов имен будут введены в resolv.conf вместо адреса 127.*.

Если спрашивающий использует ifup вместо NetworkManager для настройки сетевых интерфейсов, то ответ jmartin2279 правильно: вы должны добавить адреса серверов имен в /etc/network/interfaces так, как описано в jmartin2279.

Вопреки тому, что советуют некоторые другие ответы, в целом вы должны нет добавлять nameserver, domain или search параметры для файлов в /etc/resolvconf/resolv.conf.d/. Смотрите мои комментарии к этим ответам.

Если вы используете ifup для статической настройки интерфейса, вы можете добавить его в файл /etc/network/interfaces.

Откройте терминал и введите:

sudo gedit /etc/network/interface*

Вы должны увидеть что-то вроде:

auto loiface lo inet loopbackauto eth0iface eth0 inet dhcp

Изменить на:

auto eth0iface eth1 inet staticaddress 192.168.1.10 netmask 255.255.255.0gateway 192.168.1.1dns-nameservers 8.8.8.8

используя вашу собственную сетевую информацию. это позволит вам установить dns. здесь вы можете использовать несколько DNS-серверов:

dns-nameservers 8.8.8.8 8.8.4.4

После этого запустите

ifdown eth0ifup eth0

В Ubuntu 12.04 изменилась обработка resolv.conf.

Если вы хотите добавить свой собственный адрес (адреса) сервера имен, отредактируйте файл /etc/resolvconf/resolv.conf.d/голова

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

и добавьте туда свой сервер имен (например, Google open dns).

nameserver 8.8.8.8

сохраните файл, а затем запустите

sudo resolvconf -u

Никакой перезагрузки или чего-то еще. Возможно, вам потребуется перезапустить network-manager

sudo service network-manager restart

Сделано.

Вы можете протестировать его с помощью команды

nslookup www.google.com

Результат должен быть похож на

Server: 8.8.8.8Address: 8.8.8.8#53

Чтобы добавить дополнительные записи в /etc/resolv.conf, создать /etc/resolvconf/resolv.conf.d/tail файл и добавьте их туда.

Но если /etc/resolv.conf содержит 127.0.0.1, затем добавление записей в /etc/resolvconf/resolv.conf.d/tail это ничего не изменит. Вы должны статически установить адреса своих DNS-серверов в NetworkManager, который отправит их в dnsmasq, который прослушивает 127.0.0.1.

Конфигурация DNS для статического интерфейса должна выглядеть следующим образом “dns-nameservers”, “dns-search” и “dns-domain” записи, добавленные в соответствующую строфу iface в /etc/network/interfaces

Прочитай этот для получения дополнительной информации.

"Более того:

Вы можете установить графический инструмент с именем gnome-network-admin это установит ваш DNS. Попробовать это :

sudo apt-get install gnome-network-admin

Если вы используете Ubuntu Server 12.04 LTS, просто сделайте себе большое одолжение и отредактируйте /etc/resolvconf/resolv.conf.d/head непосредственно так, как вы хотите, чтобы выглядел ваш устаревший resolv.conf. У меня не было ничего, кроме проблем с решателем, пока я не применил грубую силу.

How do I include lines in resolv.conf that won't get lost on reboot? - Ask Ubuntu может быть, связанный с этим вопрос.