Почему мой файл resolv.conf восстанавливается каждый раз?


17

Мой /etc/resolv.confфайл обновляется каждый раз, что приводит к потере DNS-серверов Google при повторном подключении модема 3G.

Чтобы изменить настройки DNS, я посмотрел http://code.google.com/intl/fr-FR/speed/public-dns/docs/using.html .

Мой dhclient.confдовольно большой (58 строк), поэтому я разместил его на pastebin .

Тем не менее, здесь все dhclient.confбез комментариев или пустых строк:

option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
send host-name "<hostname>";
request subnet-mask, broadcast-address, time-offset, routers,
    domain-name, domain-name-servers, domain-search, host-name,
    netbios-name-servers, netbios-scope, interface-mtu,
    rfc3442-classless-static-routes, ntp-servers;
prepend domain-name-servers 8.8.8.8, 8.8.4.4;

Я использую wvdialвместо Network Manager.


К сожалению, я ничего не знаю о wvdial. На данный момент я подозреваю, что в него вовлечен тот или иной пакет, который еще не обнаружен. Знаете ли вы, устанавливали ли вы другие сетевые приложения или инструменты, которые могут каким-либо образом касаться DNS, DHCP, интерфейсов и т. Д.?
Белаква

Ответы:


6

В 12.04 resolvconf установлен по умолчанию. Вот краткий обзор того, как внести изменения в конфигурацию DNS для некоторых распространенных случаев использования:

Для статической конфигурации с использованием ifup, использование dns-nameserversи dns-searchзаписи в /etc/network/interfaces.

Для статической конфигурации с помощью NetworkManager, выберите Automatic (DHCP) addresses only Methodи введите адреса и доменные имена в Additional DNS serversи Additional search domainsполей в связи редактора.

Чтобы изменить Resolvconf своей конфигурации по умолчанию, использование base, headи tailв /etc/resolvconf/resolv.conf.d/. Только вводите адреса и доменные имена в эти файлы как временную меру, поскольку они действительно принадлежат где-то еще, как описано выше.

Отключение resolvconf не рекомендуется, но вы можете заменить символическую ссылку /etc/resolv.confобычным файлом.

Для получения дополнительной информации см. Сообщение в блоге Стефана Грабера .


4

Если вам нужно только сохранить DNS-серверы Google в resolv.conf, вы можете отредактировать
/etc/dhcp3/dhclient.confи добавить:

prepend domain-name-servers 8.8.8.8;
prepend domain-name-servers 8.8.4.4;

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

Если я что-то упустил, ваш dhclient.conf здесь не проблема. На данный момент я предполагаю, что проблема связана с wvdial.

Вот что можно попробовать из ubuntuforums :

gksudo gedit /etc/ppp/peers/wvdial

УДАЛИТЕ параметр usepeerdns и сохраните файл. Код:

gksudo gedit /etc/wvdial.conf

добавьте эти строки:

check DNS = no
auto DNS = no

@jgbelacqua Я пробовал это по-разному, но не сработало: P
Джах Саидликп

@ Джах Я предполагаю, что смещение линий препендинга ближе к вершине также не удается? (Вот как я настроил мой.)
belacqua

@jgbelacqua да, я тоже так пробовал;]
Джах Саидликп

@Jakh - ты пробовал редактировать request subnet-mask, broadcast-address, time-offset, routers, domain-name, domain-name-servers, domain-search, host-name, netbios-name-servers, netbios-scope, interface-mtu, rfc3442-classless-static-routes, ntp-servers;строку для удаления там серверов имен?
Белаква

@jgbelacqu Не пытайся сейчас и позволь тебе
познать

4

Лучший способ установить сервер имен через 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

Следует добавить, что обычно не стоит помещать статический адрес сервера имен в resolv.conf. Пожалуйста, прочитайте /usr/share/doc/resolvconf/README.gz.
Jdthood

0

Вы можете установить domain-name-serversопцию dhclient.conf.


проверь его пастин - похоже у него уже есть.
Белаква

Спасибо, я этого не заметил. Кстати, ваше решение может быть правильным, поэтому рассмотрите возможность размещения его в качестве ответа, а не комментария.
Адам Быртек

Здравствуйте @adam, можете ли вы быть более ясным, я нуб:] спасибо
Джах Саидликп

0

Я решил ту же проблему с помощью следующих команд:

echo "nameserver 212.217.0.1" >> /etc/resolvconf/resolv.conf.d/head
ln -s /etc/resolvconf/resolv.conf.d/head /etc/resolv.conf
resolvconf -u
/etc/init.d/networking restart

1
Возможно, вы решили проблему таким образом, но это неверная конфигурация. В итоге вы создали символическую ссылку /etc/resolv.conf на статический файл, который является одним из файлов конфигурации resolvconf. Если вы хотите отключить resolvconf, было бы намного проще просто удалить символическую ссылку /etc/resolv.conf и поместить туда статический файл.
Jdthood

-1

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


нет, у меня не установлен этот пакет
Jakh Saidlikp

Программа resolvconf обновляет /etc/resolv.conf, но только если /etc/resolv.conf является символической ссылкой на ../run/resolvconf/resolv.conf. Пакет resolvconf был введен потому, что многие другие программы топали /etc/resolv.conf независимо друг от друга, что приводило к хаосу. Пожалуйста, прочитайте /usr/share/doc/resolvconf/README.gz. Таким образом, из того факта, что /etc/resolv.conf был обновлен, не следует (в марте 2011 года, когда был задан вопрос), что resolvconf был установлен. Скорее всего, pppd переписывал файл. (Однако, начиная с Ubuntu 12.04, resolvconf является частью базовой системы.)
jdthood

-1

У меня была точно такая же проблема, DNS-сервер, который предоставляет мой провайдер мобильной связи, был довольно беден, поэтому я хотел использовать DNS от Google. Кроме того, NetworkManager действительно плохо справляется с обработкой мобильных широкополосных соединений, поэтому wvdialэто необходимо.

Как оказалось, /etc/resolv.confэто символическая ссылка, ubuntu 12.10а может быть, даже 12.04. Вот что я сделал sudo unlink /etc/resolv.confпосле этого вы можете создать новый resolv.confс vimили редактор по вашему выбору и добавить серверы имен Google, или любые другие серверы имен , которые вы предпочитаете. Сохраните это и все готово.

Если вы боитесь что-то сломать, запишите существующую символическую ссылку, выполнив ls -la /etc/resolv.confперед unlinkingней символ .

Надеюсь, это поможет.


@ Downvoter, постарайтесь прокомментировать. Если мой ответ действительно плохой совет, я буду рад его удалить. Пожалуйста, дайте мне знать, что я делаю неправильно. Спасибо
nikhil
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.