Почему мой файл 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
belacqua
источник
@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
Azendale
источник
Следует добавить, что обычно не стоит помещать статический адрес сервера имен в 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.

eFloh
источник
нет, у меня не установлен этот пакет
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