Вопрос или проблема
Судя по всему, как я прочитал, он должен находиться в /etc
, но его нет. Я читал в каком-то старом посте, что его можно просто создать, так как это текстовый файл. (Извините, я не могу найти тот пост.) Я не уверен, стоит ли мне это попробовать, т.е. создать файл, или установить dhcpcd
или что-то другое. На данном этапе я предпочитаю спросить, чем продолжать в одиночку.
Контекст в том, что я пытался установить hostsblock
, что привело меня к установке dnsmasq
, что привело меня к dhcpcd
и сюда. Страница Wiki по dnsmask в Arch (ссылка ниже) говорит, что файл dhcpcd.conf
используется для защиты /etc/resolv.conf
от перезаписи dhcpd
путем добавления строки nohook resolv.conf
в него.
Я знаю, что dnsmasq
установлен, потому что journalctl -u dnsmasq.service
сообщает следующее (последняя строка вывода):
Запущен dnsmasq - легковесный DHCP и кэширующий DNS сервер.
dhcpcd
НЕ установлен. Я не знаю, могу ли я просто попробовать установить его, не поломав что-то, и если я сделал ошибки (см. ниже), как отменить шаги, которые я предпринял. Страница MAN по dnsmasq
не упоминает dhcpcd
.
Что я сделал до сих пор, из ~/path/hostsblock/hostsblock-master/
: Запустил sudo sh install.sh
для начала установки “hostsblock”.
- добавить “nobody dnsmask” в группу hostblock?
Y
-
добавить
(имя_пользователя) ALL = (hostsblock) NOPASSWD: q/hostsblock,q/hostsblock-urlcheck
в sudoers:Y
-
должен ли я включить и/или запустить службу hostsblock?
- Только включить
- Только запустить
- Запустить и включить
-
Не делать ничего (По умолчанию)
2
Возможно, это была ошибка:
Работа для hostsblock.service не удалась, так как контрольный процесс завершился с кодом ошибки. См. "systemctl status hostsblock.service" и "journalctl -xe" для подробностей. -e hostsblock теперь установлен. Проверьте файл конфигурации в /hostsblock.conf. По умолчанию, hostsblock не записывает напрямую в /etc/hosts и не управляет вашим демоном dnsmasq. Чтобы заставить его это сделать, смотрите инструкции, включенные в /hostsblock.conf.
Итак, как было предложено выше, я сделал:
systemctl status hostsblock.service
Никаких явных катастроф, поэтому я продолжил.
Из ~/path/hostsblock-master/
я сделал следующее:
sudo install -Dm755 src/hostsblock.sh /usr/bin/hostsblock
sudo install -Dm644 conf/hostsblock.conf /var/lib/hostsblock/hostsblock.conf
sudo install -Dm644 conf/black.list /var/lib/hostsblock/black.list
sudo install -Dm644 conf/white.list /var/lib/hostsblock/white.list
sudo install -Dm644 conf/hosts.head /var/lib/hostsblock/hosts.head
sudo install -Dm644 systemd/hostsblock.service /usr/lib/systemd/system/hostsblock.service
sudo install -Dm644 systemd/hostsblock.timer /usr/lib/systemd/system/hostsblock.timer
Это была моя ошибка. Это была часть “Для любых других (Трудным способом)”, и я уже сделал “Для других дистрибутивов Linux (Легким способом)” в файле README.md Hostsblock. Это не должно быть проблемой, потому что я проверил сценарий install.sh, и те же строки там, но с "$DESTDIR"
, заменяющим /usr/bin
, "$HOMEDIR"
, заменяющим /var/lib
, и "$systemd_dir"
, заменяющим /var/lib/hostsblock
.
Затем я сделал
sudo systemctl enable --now hostsblock.timer
На этом этапе README.md говорит:
Чтобы использовать
hostsblock
вместе сdnsmasq
, настройтеdnsmasq
как
DNS кэшированный демон. Пожалуйста, обратитесь к руководству вашего дистрибутива. Для
ArchLinux прочитайте следующее: раздел Wiki.
Я также отредактировал /etc/dnsmasq.conf
, добавив следующее: listen-address=127.0.0.1
.
Затем я перешел к редактированию /etc/resolv.conf
, чтобы добавить строку nameserver 127.0.0.1
, но она уже была там.
Так что вот я… Извините, я не думал, что мой пост будет таким длинным.
Мой компьютер находится за маршрутизатором, но это всё. Это не сервер, просто настольный компьютер с Xubuntu 16.04. На локальной сети ничего больше нет, даже принтера.
Так что конкретно сейчас я пытаюсь “настроить ‘dnsmasq’ как DNS кэшированный демон” согласно документу README.md Hostsblock.
После множества исследований я пришел к двум источникам, которые я следую, сравнивая их, пока иду вперед:
- Страница Arch Linux wiki
- Локальный DNS кэш для более быстрого просмотра –
(блог, старый) - Это то, с чем я начал и, надеюсь, чего добьюсь: README.md Hostsblock
Первый источник для Arch, так что я не уверен, применим ли он к Xubuntu, а второй старый. Конечно, также есть страница man dhcpcd, но она не полезна, кроме как подтверждать, что dhcpcd.conf должна находиться в /etc/. Ее нет на моем компьютере. В каталоге /etc/dhcp есть, но в нем нет “dhcpcd.conf”.
Заранее спасибо за любые советы или комментарии.
П.С. (см. комментарий № 2) После установки “dhcpcd” я выполнил шаги из README.md hostsblock:
-
добавил следующие строки в
hostsblock.conf
:postprocess() { sudo systemctl reload dnsmasq.service }
-
добавил следующую строку в файл
sudoers
:hostsblock ALL = (root) NOPASSWD: /usr/bin/cphostsblock ALL = (root) NOPASSWD: /usr/bin/systemctl reload dnsmasq.service
-
добавил следующую строку в
hostsblock.conf
:some-user ALL = (hostsblock) NOPASSWD: /usr/bin/hostsblock,/usr/bin/hostsblock-urlcheck
-
добавил следующую строку в
dnsmasq.conf
:addn-hosts=/var/lib/hostsblock/hosts.block
“dnsmasq” также, по-видимому, нуждается в следующей строке в
dhclient.conf
(см. примечание ниже), чтобы заставить “dhclient” просматривать 127.0.0.1
прежде, чем смотреть в других местах:
prepend domain-name-servers 127.0.0.1;
Примечание: dhclient.conf
находится в /etc/dhcp
на моей системе. Несколько
веб-документов указывают на другие дистрибутивы Linux, где он также находится в /etc
(Arch) и в /etc/dhcp3
(серверы, старые).
-
добавил “dnsmasq” в группу “hostsblock”, согласно документации в
hostsblock.conf
(пример 1: “dnsmasq под systemd”):$ sudo gpasswd -a dnsmasq hostsblock
dhcpcd.conf
не было на своем месте, потому что “dhcpcd” никогда не был установлен, т.е. я его не устанавливал, и он не включен в мою установку Xubuntu 16.04, в чем я не был уверен, когда писал вопрос.
Я предполагаю, что я мог и должен был установить его перед началом установки “hostsblock” и “dnsmasq”. Если бы я это сделал, проблема бы не возникла. Я просто не знал об этом заранее и не видел этого нигде в своем исследовании, и, не имея опыта, я может быть был слишком осторожным. Теперь я знаю, что “dhcpcd” и “dnsmasq” оба установлены, и я думаю, что правильно сконфигурированы.
К сожалению, я еще не на завершающем этапе своих путешествий, пока не проверю, что “hostsblock” функционирует как задумано, но я хотел быть как можно более конкретным со своим вопросом и не включать слишком много.
Ответ или решение
Поиск файла dhcpcd.conf в установке dnsmasq
Файл конфигурации dhcpcd.conf действительно должен находиться в директории /etc, однако ваше наблюдение о том, что он отсутствует, обосновано. Это связано с тем, что на вашем компьютере dhcpcd (DHCP Client Daemon) на данный момент не установлен. Для более глубокого понимания ситуации, необходимо рассмотреть несколько важных аспектов.
Что такое dhcpcd и какова его роль?
dhcpcd — это демон клиента DHCP, который обеспечивает автоматическую настройку сетевых интерфейсов и получения IP-адресов. Он управляет файлами конфигураций сети и может генерировать файл dhcpcd.conf, который используется для изменения поведения демонстратора. В вашем случае его отсутствие объясняется тем, что вы еще не установили этот пакет.
Установка dhcpcd
Если вы намерены использовать dnsmasq для управления DNS и DHCP, установка dhcpcd может быть полезной. Его можно установить с помощью следующей команды:
sudo apt install dhcpcd
После успешной установки вы сможете найти файл dhcpcd.conf по следующему пути:
/etc/dhcpcd.conf
Если файл не создан автоматически, вы можете создать его вручную, так как это текстовый файл, который можно редактировать в любом текстовом редакторе. Основное содержание может выглядеть так:
# Добавьте сюда свои настройки
nohook resolv.conf
Это позволит dnsmasq корректно выполнять свои функции без перезаписи файла /etc/resolv.conf.
Конфигурация dnsmasq и взаимодействие с hostsblock
Вы правильно отметили, что dnsmasq служит легковесным DHCP и кеширующим DNS-сервером. После установки hostsblock и внесения записи listen-address=127.0.0.1
в /etc/dnsmasq.conf, вы предприняли правильные шаги для интеграции. Также важно добавить в /etc/resolv.conf строку nameserver 127.0.0.1
, если она там отсутствует, чтобы ваш сетевой трафик DNS перенаправлялся через dnsmasq.
Запуск и активация служб
Для того чтобы удостовериться, что ваши изменения вступили в силу, рекомендую активировать и запустить службы:
sudo systemctl enable dnsmasq
sudo systemctl start dnsmasq
Также следует проверить статус работы этих служб:
sudo systemctl status dnsmasq
sudo systemctl status hostsblock.service
Подведение итогов
Ваша ситуация — вполне типичный сценарий конфигурации, когда несколько служб взаимосвязаны. Ваша осторожность была оправдана, поскольку работа с конфигурациями требует тщательного подхода. Вам остаётся только удостовериться, что все зависимости установлены, и службы запущены, чтобы гарантировать корректную работу системы.
Если у вас остаются вопросы или возникают сложности, не стесняйтесь обращаться за помощью на форумы или консалтинговые службы, так как поддержка сообщества IT всегда готова помочь решениями для ваших задач.