- Вопрос или проблема
- нормальная конфигурация для jessie
- редактирование файла dhcpcd.conf
- и добавить в конец файла
- Ответ или решение
- Основные аспекты проблемы
- Решение проблемы
- Способ 1: Изменение конфигурации DHCP-клиента
- Способ 2: Использование dhcpcd (если установлен)
- Способ 3: Отключение DHCP на роутере (не рекомендуется)
- Доступ к файлу resolv.conf
- Заключение
Вопрос или проблема
Я использую 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
. Анализируя вашу конфигурацию, можно выделить несколько моментов, которые могут вызвать проблемы:
-
Файл конфигурации интерфейса: Вы правильно добавили строку
dns-nameservers
в файл/etc/network/interfaces
. Однако в Debian Jessie использование DHCP может перезаписывать ваши настройки DNS. -
Файл 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-клиента, чтобы распознать возможные конфликты или ошибки в конфигурации.