Назад | Перейти на главную страницу

DNSMasq vs Bind для простой блокировки URL-адресов DNS

Я создаю DNS-сервер, который будет блокировать доступ к определенным веб-сайтам, возвращая неправильный IP-адрес для домена.

В настоящее время я использую DNSMasq для выполнения этого, однако мой список довольно большой, и я хочу перейти к привязке для выполнения этой функции. Хотя DNSMasq хорошо справляется с большим списком, у него есть несколько ограничений, заставляющих мой выбор. Чтобы сделать это для всего домена в DNSMasq, я просто добавляю одну строку в файл конфигурации следующим образом:

address=/url.com/1.2.3.4

Это всегда будет возвращаться 1.2.3.4 для *.url.com

Мне нужна помощь в следующем:

  1. Как я могу добиться очень простой настройки зоны для BIND, которая сделает то же самое?
  2. Имея в виду, что мой список доменов составляет более 1000000 записей
  3. Могу ли я иметь просто главную зону и просто большой список доменов, которые будут включены в эту зону?

ура

pjf

Считая само собой разумеющимся, что черный список DNS - это не способ помешать кому-либо попасть на сайт, если они действительно этого хотят, но полезно для борьбы с вредоносным программным обеспечением и повседневная попытки попасть на плохой сайт ...

Зоны политики реагирования (RPZ)

RPZ позволяет вам создать файл зоны, который определяет правила перезаписи ответа. Они были реализованы в версии 9.8.1.

Допустим, вы хотите заблокировать badrecord.example.com., имеющий IP-адрес 198.51.100.1. Настоящий IP-адрес здесь не имеет значения, но его нужно указать, чтобы усилить то, что происходит.

options {
    # Snip.
    response-policy { zone "mypolicy"; };
};

zone "mypolicy" {
    type master;
    file "mypolicy.zone";
    allow-query { none; };
};

Файл зоны будет выглядеть так:

$TTL 1H
@                       SOA LOCALHOST. doesnt.really.matter.example.org. (1 1h 15m 30d 2h)

                        ; NS required for zone syntax reasons, but ignored
                        NS  LOCALHOST.

; CNAME bad reply to a DNS record that isn't in this file
badrecord.example.com.  CNAME mywalledgarden.example.edu.

; replace bad reply with fixed IP address
badrecord2.example.com. A     203.0.113.1

; rewrite the top of a bad domain, as well as all records immediately
; beneath the apex. (i.e. not further than one level deep)
example.net.            A     203.0.113.1
*.example.net.          A     203.0.113.1

Наблюдения:

  • «mypolicy» - это настоящая зона DNS. Вы можете использовать зональные передачи, чтобы распределить их по своей среде и управлять данными с одного сервера.
  • Пользователям не разрешено напрямую запрашивать зону из-за allow-query правило.
  • Эти правила не блокируют запросы, но любые ответы на запрос, которые обычно содержат неверные данные, будут перезаписаны. Побочным эффектом этого является то, что запрос несуществующей записи вернет NXDOMAIN должным образом. Вы только измените ответ если бы это было возможно чтобы клиент получил ответ, содержащий неверные данные.
  • Применяются обычные правила сопоставления подстановочных знаков DNS.

Это не единственные переделки, которые вы можете выполнить. Для полного синтаксиса и потенциальных приложений я рекомендую вам обратиться к BIND ARM.


Вы можете найти в Интернете руководства, предлагающие такие вещи, как создание корневого (.) или создать по одной зоне для каждого домена, который необходимо заблокировать. Не делай этого. Это старый, неповоротливый способ делать вещи, к которым прибегали администраторы DNS из-за отсутствия лучших вариантов. Если RPZ - это вариант и он отвечает вашим потребностям, используйте его. Если вы не являетесь авторитетным для домена, не настраивайте себя на авторитетный для него.