Изменения в /etc/resolv.conf отменяются при подключении к новой сети

Я недавно обновился до 12.10 с 12.04, и у меня возникают проблемы с подключением к Интернету.

Я получил IP-адрес и могу пинговать другие IP-адреса локальной сети в локальной сети, но не могу подключиться к Интернету и даже не могу пинговать www.google.com из терминала.

Как-то вносить изменения в /etc/resolv.conf и перезапуск resolvconf обслуживание и перезагрузка работают, но мне нужно делать это каждый раз, когда я подключаюсь к новой сети. Как сделать эти изменения постоянными?

Может кто-нибудь предложить решение этой проблемы?

4 ответа

Согласно заголовку в /etc/resolv.conf:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

Попробуйте положить ваши изменения в

/etc/resolvconf/resolv.conf.d/base, и они должны добавляться в /etc/resolv.conf, когда он перезаписывается каждые 15 минут.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ! Следование этому ответу может вызвать неожиданные проблемы, если ваши DNS-серверы управляются как часть сетевого менеджера, в то время как это заставит использовать DNS-серверы, которые вы хотите выше dnsmasq Система и DNS-серверы в настройках сетевого менеджера, он сделает это для всего. Кроме того, некоторые сети и / или подключения могут потребовать от вас использовать их DNS-сервер (ы) для выхода в Интернет с разрешением проблем.

редактировать /etc/resolvconf/resolv.conf.d/head и добавить nameserver 1.2.3.4 запись здесь.

Это работает 14.04 даже на настольной установке. Я знаю это, потому что у меня есть локально работающий DNS-сервер (через bind9) на моем ноутбуке локально для разрешения локальной зоны (так как я много занимаюсь виртуальными машинами), и возникает необходимость сначала запросить мой локальный DNS прежде всего.

Here is a generic procedure which fixes a couple of known bugs in nameserver information handling.

Установлен resolvconf? Если так, то сделайте следующее.

sudo dpkg-reconfigure resolvconf

Если он не установлен, сделайте следующее.

sudo apt-get install resolvconf

Теперь, когда resolvconf установлен правильно, перезагрузите компьютер, чтобы resolvconf получил информацию о сервере имен.

Если служба имен по-прежнему не работает и вы используете NetworkManager для управления сетью, откройте /etc/NetworkManager/NetworkManager.conf в редакторе и закомментируйте строку "dns=dnsmasq". Чтобы закомментировать это, поставьте символ "#" в начале строки.

gksudo gedit /etc/NetworkManager/NetworkManager.conf

Затем перейдите в редактор соединений и убедитесь, что соединение, которое вы используете, правильно настроено. Например, чаще всего "индикатор сети | Редактировать соединения... | Проводное | Проводное соединение 1 | Редактировать... | Настройки IPv4 | Метод" имеет значение "Автоматически (DHCP)", а адреса "Дополнительный DNS-сервер" не установлены.

Затем перезапустите сетевой менеджер.

sudo restart network-manager

Теперь убедитесь, что ожидаемый адрес (а) сервера имен указан в /etc/resolv.conf.

Если вы не используете NetworkManager для настройки интерфейсов, и вы используете ifup затем отредактируйте /etc/network/interfaces и включать dns-nameservers а также dns-search строки в соответствующем iface строфа по мере необходимости. Убедитесь, что /etc/resolvconf/resolv.conf.d/head содержит только строки комментариев, а /etc/resolvconf/resolv.conf.d/base и /etc/resolvconf/resolv.conf.d/tail отсутствуют или пусты, затем ifdown а также ifup интерфейс. Убедитесь, что адрес (-а) сервера имен, который вы добавили в / etc / network / interfaces, теперь отображаются в /etc/resolv.conf.

Если служба имен по-прежнему не работает, то, скорее всего, существует локальная проблема: например, неправильно настроенный DHCP-сервер. Другая известная причина проблем - сторонние VPN-клиенты, которые удаляют символическую ссылку /etc/resolv.conf. Если ваша локальная сеть работает нормально, и вы не используете стороннее сетевое программное обеспечение, подайте отчет об ошибке в NetworkManager или resolvconf, в зависимости от того, что вы считаете более вероятным виновником.

Я сам боролся с dns и опубликовал вопрос и решение, в котором перечислены некоторые способы изменения настроек dns. По сути, есть два способа - либо отредактировать любой из 3 файлов в /etc/resolvconf/resolv.conf.d/ или редактировать /etc/dhcp/dhclient.conf, Я лично предпочитаю первый.

Ниже приведены некоторые методы, которые я применяю к своим системам ubuntu и linux mint. Используйте по своему усмотрению.

/etc/dhcp/dhclient.conf

Я начну с этого, поскольку другие уже рассмотрели файлы resolv.conf. То, что вы видите ниже, является частью этого файла. Посмотрите на строку 18, которая говорит prepent name server, Он добавит указанный вами днс в настройки, независимо от того, какое соединение вы используете.

1 # Файл конфигурации для /sbin/dhclient, который включен в Debian

 2  #       dhcp3-client package.
 3  #
 4  # This is a sample configuration file for dhclient. See dhclient.conf's
 5  #       man page for more information about the syntax of this file
 6  #       and a more comprehensive list of the parameters understood by
 7  #       dhclient.
 8  #
 9  # Normally, if the DHCP server provides reasonable information and does
10  #       not leave anything out (like the domain name, for example), then
11  #       few changes must be made to this file, if any.
12  #

13  option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;

14  #send host-name "andare.fugue.com";
15  send host-name = gethostname();
16  #send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;
17  #send dhcp-lease-time 3600;
18  #supersede domain-name "fugue.com home.vix.com";
19  #prepend domain-name-servers 127.0.0.1;
20  prepend domain-name-servers 208.67.220.220;
21  request subnet-mask, broadcast-address, time-offset, routers,
22          domain-name, domain-name-servers, domain-search, host-name,
23          dhcp6.name-servers, dhcp6.domain-search,
24          netbios-name-servers, netbios-scope, interface-mtu,
25          rfc3442-classless-static-routes, ntp-servers,
26          dhcp6.fqdn, dhcp6.sntp-servers;
27  #require subnet-mask, domain-name-servers;
28  #timeout 60;
29  #retry 60;
30  #reboot 10;
31  #select-timeout 5;
32  #initial-interval 2;
33  #script "/etc/dhcp3/dhclient-script";
34  #media "-link0 -link1 -link2", "link0 link1";
35  #reject 192.33.137.209;

36  #alias {
37  #  interface "eth0";

/etc/resolvconf/resolv.conf.d/

Текст любого из 3 будет добавлен в /etc/resolv.confТак что я не думаю, что это имеет значение, какой вы выберете. Я бы использовал tailлично. Просто откройте его в любом текстовом редакторе и добавьте nameserver 8.8.8.8 где 8.8.8.8 - это общедоступный днс гугл, но вы можете использовать любой днс, который вам нравится.

Небольшой совет

В /etc/Network-Manager/Network-Manager.conf Я предлагаю вам закомментировать dns=dnsmasq линия, которая является плагином для сетевого менеджера, который автоматически переходит к ближайшему / простому для доступа к DNS, что может быть не тем, что вы хотите, если вы хотите обойти днс сети и использовать свой собственный.

Примечание: тот факт, что resolv.conf переписан, на самом деле нормален - он делает это и при каждом новом подключении на моей машине. Хотя я не могу ответить почему, я предполагаю, что NetworkManager получает аренду dhcp от локального соединения и использует настройки этого локального соединения, dns и все остальное, так что resolv.conf должен быть адаптирован к этому.

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