Как установить статический адрес DNS-сервера на сервере Ubuntu?

Я пытаюсь статически установить адреса DNS-серверов на моем сервере Ubuntu, работающем как виртуальная машина. Я следовал всем рекомендациям на официальных страницах поддержки Ubuntu, но я просто не могу избавиться от DNS-серверов моего провайдера, установленных DHCP.

Я назначил интерфейс br0 на статическом IP-адресе хост-машины и eth0 на виртуальной машине, чтобы использовать Google DNS и мой собственный локальный DNS, работающий на втором виртуальном сервере, установив его в /etc/network/interfaces. Пытался возиться с головными и хвостовыми файлами в /etc/resolvconf/resolv.conf.d/ и пытался перетасовать порядок интерфейса в /etc/resolvconf/interface-order, но когда я перезапустил сетевую службу, я каждый раз получал адреса DNS провайдера.

Есть ли способ, которым я могу отключить resolvconf и настроить файл resolv.conf вручную, как я всегда делал в Red Hat? Или вы можете сказать мне, какой скрипт ловушки продолжает помещать DNS ISP в resolv.conf? Мой провайдер не позволяет мне изменять настройки DHCP на маршрутизаторе, поэтому я не могу сделать это таким образом.

Почему такая простая вещь, как настройка DNS-серверов, стала такой сложной ???

7
задан 6 November 2012 в 00:07

3 ответа

IMO: это ошибка в графическом инструменте конфигурации.

Самое простое решение - это закомментировать (или удалить) строку, начинающуюся с «request ...» в файле /etc/dhcp/dhclient.conf

0
ответ дан 6 November 2012 в 00:07

Просто используйте dhclient (в качестве примера используется Google DNS). Это намного чище, чем другие ответы IMO:

  1. Резервное копирование /etc/resolv.conf: sudo cp /etc/resolv.conf /etc/resolv.conf.auto

  2. Редактировать / etc / dhcp [3] /dhclient.conf (ubuntu 14.04 пропускает 3): sudo vi /etc/dhcp/dhclient.conf

  3. Если есть строка, содержащая серверы доменных имен, запишите IP-адреса для дальнейшего использования.
  4. Замените эту строку или добавьте следующую строку: Для IPv4: prepend domain-name-servers 8.8.8.8, 8.8.4.4; Для IPv6: prepend domain-name-servers 2001:4860:4860::8888, 2001:4860:4860::8844;
  5. Теперь освободите и обновите IP: ifdown eth0 && ifup eth0

Теперь перезапустите все сетевые клиенты, которые вы используете (например, Chrome или еще много чего)

0
ответ дан 6 November 2012 в 00:07

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

2: Насколько я понимаю, на уязвимом компьютере установлена ​​версия Ubuntu Server. В этом случае он конфигурирует интерфейсы, используя программу ifup, файл конфигурации которой - /etc/network/interfaces. Для интерфейсов, настроенных с помощью метода dhcp, ifup (обычно) использует dhclient из пакета isc-dhcp-client. Dhclient получает информацию о сервере имен от DHCP-сервера, и его скрипт-ловушка /etc/dhcp/dhclient-enter-hooks.d/resolvconf отправляет эту информацию в resolvconf, который помещает ее в resolv.conf.

Одна вещь, которую вы можете сделать, это отредактировать /etc/resolvconf/interface-order так, чтобы eth0.dhcp предшествовало eth0.dhclient. (Я предполагаю, что соответствующим интерфейсом является eth0.) Если у вас есть значение по умолчанию interface-order, вы можете, например, просто добавить строку eth0.dhcp перед строкой eth*.

--- interface-order_ORIG    2012-11-06 10:12:47.630529145 +0100
+++ interface-order 2012-11-06 10:13:16.410529800 +0100
@@ -9,6 +9,7 @@
 hso*
 em+([0-9])?(_+([0-9]))*
 p+([0-9])p+([0-9])?(_+([0-9]))*
+eth0.dhcp
 eth*
 ath*
 wlan*

Затем добавьте строку dns-nameservers в раздел iface eth0 в /etc/network/interfaces с правильным адресом сервера имен.

iface eth0 inet dhcp
    dns-nameservers 1.2.3.4

Поскольку eth0.dhcp предшествует eth0.dhclient, правильный адрес сервера имен будет включен в resolv.conf перед неправильным.

Еще один способ переопределить нежелательное поведение при включении адреса сервера имен, предоставленного DHCP-сервером, - это отредактировать скрипт ловушки dhclient. Например, вы можете добавить строку, подобную следующей (где 1.2.3.4 - это адрес сервера имен, который вы хотели бы удалить).

--- resolvconf_ORIG 2012-03-29 22:37:14.000000000 +0200
+++ resolvconf  2012-11-05 20:53:33.312681077 +0100
@@ -54,6 +54,7 @@
            fi
            shopt -s nocasematch
            for nameserver in $new_dhcp6_name_servers ; do
+               [ "$nameserver" = "1.2.3.4" ] && continue

Еще одна возможность (немного грубая, поскольку она полностью статична) - добавить опцию сервера имен в /etc/resolvconf/resolv.conf.d/head.

3: Установка адресов DNS-серверов имен стала более сложной, поскольку машины становятся мобильными, получают все больше интерфейсов, а статическая конфигурация постепенно заменяется автоконфигурацией.

0
ответ дан 6 November 2012 в 00:07

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

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