У меня есть два сетевых интерфейса, настроенные через 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?
Это сработало для моего дедушки, сработало для моего отца и сработало для меня.
rm /etc/resolv.conf
vi /etc/resolv.conf
search yourdomain.com
nameserver 8.8.8.8
nameserver 8.8.4.4
РЕДАКТИРОВАТЬ:
rm
удаляет стандартную символическую ссылку.
vi
создает фактический файл на своем месте.
В 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. 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
Официальная документация 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
В сценарии сервер / облако это все, что вам нужно. Для мобильных устройств вы можете обратиться к документации.
Когда я установил 12.04, этот текст мне очень помог: http://www.stgraber.org/2012/02/24/dns-in-ubuntu-12-04/