Как отредактировать/etc/resolv.conf на Ubuntu 12.04

У меня есть два сетевых интерфейса, настроенные через DHCP. В результате /etc/resolv.conf заполняется с информацией, прибывающей из сервера DHCP.

Как я могу отредактировать этот файл?

Я знаю это, если я добавляю prepend domain-name-servers 127.0.0.1 кому: /etc/dhcp/dhclient.conf Я могу получить nameserver 127.0.0.1 как первое (и только) строка /etc/resolv.conf.

Что, если я хочу 127.0.0.1 и только один из двух адресов сервера имен, обеспеченных через DHCP?

5
задан 9 January 2013 в 22:16

4 ответа

Это сработало для моего дедушки, сработало для моего отца и сработало для меня.

rm /etc/resolv.conf
vi /etc/resolv.conf

search yourdomain.com
nameserver 8.8.8.8
nameserver 8.8.4.4

РЕДАКТИРОВАТЬ:

rm удаляет стандартную символическую ссылку.

vi создает фактический файл на своем месте.

0
ответ дан 9 January 2013 в 22:16

В Ubuntu 12.04 и более поздних версиях /etc/resolv.conf динамически генерируется утилитой resolvconf. (На самом деле, resolvconf генерирует /run/resolvconf/resolv.conf и /etc/resolv.conf является символической ссылкой на это. Это конфигурация по умолчанию; также возможно запускать со статическим файлом в /etc/resolv.conf, но это не является стандартным.) адреса и поисковые доменные имена) регистрируется в resolvconf с помощью конфигураторов интерфейса (ifup, NetworkManager, dhclient и т. д.). На основе того, что было зарегистрировано, resolvconf генерирует обновленный файл resolv.conf.

Следовательно, вы не можете редактировать файл resolv.conf напрямую. Если вы хотите контролировать то, что заканчивается в resolv.conf, вам придется настроить утилиту resolvconf. Пожалуйста, смотрите документацию resolvconf для получения дополнительной информации.

Ответ на конкретный вопрос «Что делать, если я хочу 127.0.0.1 и только один из двух адресов сервера имен, предоставляемых через DHCP?» это:

  • Во-первых, не добавить prepend domain-name-servers 127.0.0.1 в /etc/dhcp/dhclient.conf. Правильный протокол для локальных серверов имен регистрирует свои локальные адреса прослушивания с помощью resolvconf, когда они готовы предоставить локальную службу имен; когда они делают это, клиентам DHCP нет необходимости делать это тоже. Dnsmasq делает правильные вещи по умолчанию. В случае BIND 9 вы должны установить RESOLVCONF=yes в /etc/default/bind9, чтобы заставить его зарегистрировать адрес 127.0.0.1 с resolvconf.
  • Во-вторых, resolvconf по умолчанию усекает список серверов имен после любого адреса обратной связи, такого как 127.0.0.1. Чтобы отключить это поведение, создайте файл /etc/default/resolvconf, содержащий строку TRUNCATE_NAMESERVER_LIST_AFTER_LOOPBACK_ADDRESS=no.
  • В-третьих, resolvconf по умолчанию усекает список серверов имен после трех элементов. Не имеет смысла включать больше адресов, потому что распознаватель glibc игнорирует любые адреса после первых трех. Чтобы заставить resolvconf обрезать список после двух адресов, вам нужно отредактировать скрипт /etc/resolvconf/update.d/libc, чтобы заменить эту строку

    [ "$N" = 3 ] && return 0
    

следующей.

    [ "$N" = 2 ] && return 0
0
ответ дан 9 January 2013 в 22:16

Официальная документация resolvconf находится здесь http://anonscm.debian.org/gitweb/?p=resolvconf/resolvconf.git;a=blob;f=README;hb=HEAD

«Редактирование» так же просто, как использование командной строки resolvconf, как API.

, например,

echo nameserver 8.8.8.8 | resolvconf -a eth0.goog

Здесь. является разделителем, а часть после интерфейса является именем конфигурации для этого интерфейса.

И если вы хотите удалить этот сервер имен, просто назовите интерфейс и конфигурацию и используйте -d для удаления

resolvconf -d eth0.goog

В сценарии сервер / облако это все, что вам нужно. Для мобильных устройств вы можете обратиться к документации.

0
ответ дан 9 January 2013 в 22:16

Когда я установил 12.04, этот текст мне очень помог: http://www.stgraber.org/2012/02/24/dns-in-ubuntu-12-04/

0
ответ дан 9 January 2013 в 22:16

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

Похожие вопросы: