Не удается установить статический DNS на Debian.

Вопрос или проблема

Я использую Debian jessie и у меня не установлены network-manager или resolvconf, и я использую DHCP.

DHCP с статическим DNS
Прежде всего, я попытался отредактировать:

/etc/network/interfaces

И добавить это:

dns-nameservers 8.8.8.8

Теперь файл interfaces выглядит следующим образом:

allow-hotplug eth0
iface eth0 inet dhcp
dns-nameservers 8.8.8.8

Чтобы одновременно использовать DHCP и статический DNS, но после перезапуска networking.service ничего не изменится.

при использовании DHCP:

ps aux | grep dhcp
dhclient -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0

Ручное редактирование
Если я вручную редактирую /etc/resolv.conf и вставляю nameserver 8.8.8.8, после перезапуска networking.service системный DNS сервер меняется на 8.8.8.8, но после выполнения ifup:

sudo ifup eth0

Снова /etc/resolv.conf автоматически меняется на 192.168.1.1.

NetworkManager
Тогда я решил использовать network-manager, я установил network-manager и после установки IP-адреса DNS сервера в стандартном подключении и его переподключения оно работает, но после перезагрузки системы network-manager создает новое соединение с DNS сервером по умолчанию (192.168.1.1) и автоматически подключается к нему.

Я также проверил автоматически подключаться к этой сети, когда она доступна в правильном соединении, но после перезагрузки network-manager снова подключается к другому.

Сброс через 10 часов
Мне как-то удалось решить эту проблему, изменив настройки нового соединения, теперь оно не создает новое соединение при каждой загрузке и подключается к правильному соединению, однако теперь после примерно 10 часов DNS сервер автоматически меняется на 192.168.1.1 и мне нужно переподключить соединение или перезапустить NetworkManager.service, чтобы вернуть DNS на 8.8.8.8.

Так что это не network-manager, который перезаписывает /etc/resolv.conf.

Статическая конфигурация
После всех этих проблем я решил использовать статическую конфигурацию.
Сначала я удалил network-manager, затем добавил статическую конфигурацию в:

/etc/network/interfaces

что-то вроде этого:

iface eth0 inet static
address 192.168.1.10
gateway 192.168.1.1
netmask 255.255.255.0
dns-nameservers 8.8.8.8

После перезапуска networking.service эти настройки не применяются к системе, и интерфейс не имеет IP, так что сеть тоже недоступна.

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

Разрешение
Я могу редактировать /etc/resolv.conf и изменить его разрешения, чтобы никто не мог его редактировать…

Но я ищу причину. Я хочу знать, почему это не работает, какая программа перезаписывает /etc/resolv.conf и какой правильный способ настройки DNS сервера.

Есть ли что-то, что я здесь упускаю?

Поскольку по умолчанию в jessie сеть настроена через DHCP

у вас есть несколько решений

решение 1:
sudo update-rc.d dhcpcd remove

решение 2:
sudo nano /etc/dhcpcd.conf или /etc/dhcp/dhclient.conf

добавив следующую команду

 nodhcp

и в файле /etc/network/interfaces необходимо изменить строки следующим образом:

iface lo inet loopback
auto eth0
любая конфигурация .......

нормальная конфигурация для jessie

редактирование файла dhcpcd.conf

sudo nano  /etc/dhcpcd.conf

и добавить в конец файла

interface eth0
static ip_address=192.168.1.56

#шлюз
static routers=192.168.1.210 

static domain_name_servers=8.8.8.8

Если программа resolvconf установлена, не следует вручную редактировать конфигурационный файл resolv.conf в системах на базе Debian или Ubuntu, так как он будет динамически изменяться программами в системе. Если вам нужно вручную определить серверы имен (как с статическим интерфейсом), добавьте строку, подобную следующей, в конфигурационный файл интерфейсов /etc/network/interfaces:

#Поместите строку с отступом внутри блока iface, например, сразу после строки шлюза.
dns-nameservers 
8.8.8.8 
127.0.0.1

Ответ или решение

На систему Debian Jessie часто могут возникать проблемы с настройками DNS, особенно при использовании DHCP. Если вы пытаетесь установить статические DNS-серверы, когда DHCP-клиент (например, dhclient) управляет вашим сетевым интерфейсом, то у вас есть несколько механизмов, которые могут перезаписывать ваши настройки. В этом ответе мы рассмотрим, как правильно настроить DNS в вашем случае.

Основные аспекты проблемы

Вы упомянули, что используете DHCP и что у вас нет установленных network-manager или resolvconf. Анализируя вашу конфигурацию, можно выделить несколько моментов, которые могут вызвать проблемы:

  1. Файл конфигурации интерфейса: Вы правильно добавили строку dns-nameservers в файл /etc/network/interfaces. Однако в Debian Jessie использование DHCP может перезаписывать ваши настройки DNS.

  2. Файл resolv.conf: Обычно, если на системе работает настроенный DHCP-клиент, его конфигурация может пересоздавать файл /etc/resolv.conf на основе полученных данных от DHCP-сервера. Ваша попытка ручного редактирования этого файла в большинстве случаев будет временной и неэффективной.

Решение проблемы

Вот несколько способов, как вы можете установить статические DNS-серверы, даже при использовании DHCP:

Способ 1: Изменение конфигурации DHCP-клиента

Убедитесь, что вы используете правильный файл конфигурации DHCP-клиента. В вашей системе может быть установлен dhclient. Попробуйте добавить следующую строку в файл /etc/dhcp/dhclient.conf:

supersede domain-name-servers 8.8.8.8;

Эта настройка перезапишет DNS-серверы, полученные от DHCP, на указанный вами. После этого перезапустите сетевую службу:

sudo systemctl restart networking.service

Проверьте, изменились ли DNS-серверы в файле /etc/resolv.conf.

Способ 2: Использование dhcpcd (если установлен)

Если у вас установлен dhcpcd, вы можете настроить его следующим образом. Откройте файл конфигурации:

sudo nano /etc/dhcpcd.conf

Добавьте следующий код в конец файла:

interface eth0
static ip_address=192.168.1.10/24
static routers=192.168.1.1
static domain_name_servers=8.8.8.8

Эта настройка позволит вам использовать статический IP-адрес с вашим DHCP-сервером, при этом вы устанавливаете желаемые DNS-серверы.

Способ 3: Отключение DHCP на роутере (не рекомендуется)

Хотя вы можете отключить DHCP на роутере, это не лучший подход, если у вас есть другие устройства в сети. Они не смогут получить IP-адреса, если DHCP-сервер будет отключен.

Доступ к файлу resolv.conf

Как вы заметили, изменение разрешений на файл /etc/resolv.conf, чтобы он не редактировался, может помочь, но это лишь временная мера. Вместо этого лучше использовать описанные выше шаги для более устойчивого решения.

Заключение

Неправильное поведение настройки DNS в Debian Jessie при использовании DHCP можно решить правильной конфигурацией соответствующих файлов. Настройки dhclient.conf и dhcpcd.conf обеспечат правильное управление DNS-серверами, а сети смогут оставаться управляемыми через DHCP. Убедитесь, что после внесения изменений перезапускаете сетевые службы, чтобы они вступили в силу.

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

Оцените материал
Добавить комментарий

Капча загружается...