Вопрос или проблема
Я настроил pi-hole и некоторые другие вещи на сервере Debian, используя Docker.
Pi-hole выступает в роли DNS для всей моей сети (я добавил IP сервера в конфигурацию dns на роутере)
Проблема в том, что у меня нет интернета, когда pi-hole отключен.
Например, когда я делаю некоторые настройки в моей docker-compose, мне нужно его отключить.
Есть ли способ обойти dns pi-hole только на сервере, на котором он работает?
Я знаю, что у Google есть некоторые DNS-серверы на 8.8.8.8 и 8.8.4.4. Как/где их настроить?
Сегмент сети 2.2.*.* принадлежит Oracle America Inc; публичные DNS-серверы IPv4 Google: 8.8.8.8 и 8.8.4.4.
Так как вы сообщили вашему роутеру использовать pi-hole в качестве DNS-сервера, вероятно, эта информация распространяется по вашей сети с помощью DHCP.
Чтобы обойти это, вам нужно настроить сервер Debian так, чтобы он игнорировал предоставленные DHCP DNS-сервера и настраивал его для использования других. Как это сделать, зависит от того, как управляется IP-конфигурация вашего сервера.
С использованием NetworkManager
Если вы используете NetworkManager, вам следует начать с поиска имени подключения. Это можно сделать с помощью команды nmcli connection show
и поиска активных подключений (те, у которых поле DEVICE
не пустое и обычно отображается зеленым цветом). Если эта команда выдает только сообщение об ошибке, то, вероятно, вы не используете NetworkManager и вам следует пропустить этот раздел.
Затем вы должны настроить это подключение на игнорирование DHCP-серверов DNS с помощью:
nmcli connection modify "<your connection name>" ipv4.ignore-auto-dns yes
А затем настроить некоторые собственные DNS-серверы, например, публичные DNS-серверы Google:
nmcli connection modify "<your connection name>" +ipv4.dns 8.8.8.8
nmcli connection modify "<your connection name>" +ipv4.dns 8.8.4.4
Последний шаг – обновить подключение, чтобы новые настройки вступили в силу:
nmcli connection up "<your connection name>"
С использованием ifupdown
(т.е. с настройками сети в /etc/network/interfaces[.d]
только)
В этом случае вам нужно настроить фактическую утилиту DHCP-клиента для замены. Обычно в этом случае в Debian клиентом DHCP является dhclient
, а его конфигурация находится в файле /etc/dhcp/dhclient.conf
.
Добавьте строку вроде этой в /etc/dhcp/dhclient.conf
, чтобы переопределить назначенные DHCP DNS-серверы собственными:
supersede domain-name-servers 8.8.8.8, 8.8.4.4;
Чтобы настройка вступила в силу, отключите и снова включите ваше сетевое подключение, используя ifdown
и ifup
. Конечно, лучше быть локально вошедшим в сервер, когда вы это делаете, но указание обеих команд на одной строке команды должно работать даже через SSH-соединение, если в конфигурации нет ошибок. Например, если ваша сетевая интерфейс называется eno1
, и вы работаете как root:
ifdown eno1; ifup eno1
Другие возможности
Хотя вышеуказанные способы могут быть наиболее распространенными для работы с конфигурациями сети в современных Debian, это, безусловно, не единственные возможные варианты; например, вы можете установить дополнительный netplan
, заменить утилиту клиента DHCP по умолчанию dhclient
на что-то другое или даже заменить это все своими собственными скриптами, если у вас есть на то причины.
Но два перечисленных выше варианта, вероятно, являются самыми распространенными: NetworkManager вероятен, если на сервере установлена среда рабочего стола, и если вы начали с минимальной установки текстовой консоли, тогда, вероятно, у вас классический ifupdown
.
Ответ или решение
Теория
Вопросы управления сетевыми соединениями и конфигурации DNS на сервере Debian требуют основательного подхода, особенно в контексте работы с инструментами, такими как Pi-hole, который используется для блокировки рекламы и нежелательного контента на уровне DNS. Поскольку ваш сервер Debian использует Pi-hole для обработки всех DNS-запросов, его отключение приводит к потере доступа к интернету. Чтобы избежать этого и предоставить вашему серверу возможность обхода Pi-hole, стоит рассмотреть настройку альтернативных DNS-серверов.
Ваш сервер Debian в данный момент настроен так, чтобы получать информацию о DNS через DHCP от маршрутизатора, который, в свою очередь, использует Pi-hole как DNS-сервер. Чтобы настроить обход, необходимо изменить конфигурацию DNS непосредственно на сервере, игнорируя DHCP-настройки. Для этого можно использовать несколько методов в зависимости от конфигурации вашего сетевого интерфейса.
Пример
Рассмотрим два основных способа управления сетевой конфигурацией на Debian — используя NetworkManager и ifupdown. Каждый из этих способов требует некоторых изменений в настройках, чтобы сервер начал использовать альтернативные DNS-серверы.
NetworkManager
Если ваш сервер использует NetworkManager, это, как правило, удобный способ управления сетевыми подключениями в системах, где установлена графическая оболочка. Найдите имя вашего соединения, используя команду:
nmcli connection show
Идентифицируйте активное соединение, используя колонку DEVICE, и затем настройте это соединение на игнорирование DNS, предоставленного через DHCP:
nmcli connection modify "<имя вашего соединения>" ipv4.ignore-auto-dns yes
Далее добавьте альтернативные DNS-серверы, например общественные DNS-серверы Google:
nmcli connection modify "<имя вашего соединения>" +ipv4.dns 8.8.8.8
nmcli connection modify "<имя вашего соединения>" +ipv4.dns 8.8.4.4
Чтобы применить новые настройки, обновите соединение:
nmcli connection up "<имя вашего соединения>"
ifupdown (с конфигурацией в /etc/network/interfaces)
Если ваш сервер управляет сетевыми настройками через ifupdown, необходимо внести изменения в конфигурацию клиента DHCP, обычно dhclient, и расположена она в файле /etc/dhcp/dhclient.conf
.
Добавьте следующую строку, чтобы заменить DNS, предоставленные DHCP:
supersede domain-name-servers 8.8.8.8, 8.8.4.4;
Чтобы изменения вступили в силу, перезапустите сетевое соединение:
ifdown eno1; ifup eno1
Замените eno1
на действительное имя вашего сетевого интерфейса.
Применение
Эти изменения позволяют вашему серверу Debian использовать альтернативные DNS-серверы, когда Pi-hole недоступен, что обеспечивает непрерывный доступ к интернету и стабильность работы вашей сети даже при временных отключениях или обслуживании Pi-hole. Надлежащая конфигурация сетевых параметров напрямую влияет на надежность функционирования корпоративной инфраструктуры и может предотвратить простои или потерю производительности.
Другие возможности
Также следует учитывать наличие других утилит и методов, например netplan или использование кастомных скриптов для управления сетевыми подключениями, что может быть оправдано в специфических случаях. Например, netplan часто используется в более современных версиях Ubuntu и может быть настроен на использование статических маршрутов и DNS-серверов.
Внедрение данных изменений потребует от системного администратора не только навыков настройки серверов Debian, но и чуткого понимания архитектуры сети и зависимости от внешних и внутренних DNS-серверов в контексте всей IT-инфраструктуры.