Изменения в /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 должен быть адаптирован к этому.