Я пытаюсь статически установить адреса 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-серверов, стала такой сложной ???
IMO: это ошибка в графическом инструменте конфигурации.
Самое простое решение - это закомментировать (или удалить) строку, начинающуюся с «request ...» в файле /etc/dhcp/dhclient.conf
Просто используйте dhclient (в качестве примера используется Google DNS). Это намного чище, чем другие ответы IMO:
Резервное копирование /etc/resolv.conf:
sudo cp /etc/resolv.conf /etc/resolv.conf.auto
Редактировать / etc / dhcp [3] /dhclient.conf (ubuntu 14.04 пропускает 3):
sudo vi /etc/dhcp/dhclient.conf
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;
ifdown eth0 && ifup eth0
Теперь перезапустите все сетевые клиенты, которые вы используете (например, Chrome или еще много чего)
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-серверов имен стала более сложной, поскольку машины становятся мобильными, получают все больше интерфейсов, а статическая конфигурация постепенно заменяется автоконфигурацией.