GNU/Linux >> Tutoriels Linux >  >> Linux

Fichier de grande zone pour Bind9 :blocage des publicités ?

J'utilisais avec succès un petit fichier de zone (20 000 entrées) avec bind9 serveur, mais aujourd'hui, mon fournisseur de données a envoyé une mise à jour qui a fait que le fichier de zone est devenu plus de 300 000 entrées (plus de 30 Mo).

Le problème est que le serveur ne démarre pas avec ce fichier de zone. Le named-checkconf ne signalerait aucune erreur. Aucun message de journal n'est disponible (ou je n'ai pas pu les enregistrer correctement).

Je voudrais savoir si bind9 est capable de gérer de gros fichiers de configuration et si oui, comment puis-je le réparer. Si non, j'aimerais savoir s'il existe des solutions à ce problème. Peut-être est-il possible de stocker les entrées dans une base de données ?

Le fichier de zone que j'essaie d'utiliser peut être téléchargé ici.

Mise à jour :

service bind9 status a montré quelques informations qui peuvent être pertinentes :

adjusted limit on open files from 4096 to 1048576
found 1 CPU, using 1 worker thread
using 1 UDP listener per interface
using up to 4096 sockets
loading configuration from '/etc/bind/named.conf'

Je ne sais pas trop comment interpréter ou utiliser ces informations... Des idées ?
De plus, je n'ai pas pu trouver où bind9 les journaux sont situés :/var/log/ n'a pas de bind9 entrées. Quelqu'un peut-il me dire où ils se trouvent sur Debian Jessie ?

Réponse acceptée :

J'ai vu votre fichier de zone :il semble qu'il s'agisse d'une liste de plus de 350 000 domaines, pour le moment, où le serveur BIND local est défini comme le maître. Les domaines sont au format suivant :

zone "xxxx.com" { type master; notify no; file "null.zone.file"; };

Selon les besoins en mémoire, je dirais qu'à titre indicatif, vous pourriez avoir besoin d'environ 40 Mo à 80 Mo de RAM libre pour cela, car les tables de domaine sont chargées en mémoire. (même si je me sentirais plus à l'aise avec 200 Mo au moins)

À moins que le serveur ne soit sévèrement limité en RAM, cela semble un peu improbable, mais cela pourrait arriver.

J'ai également remarqué qu'il y a des traits de soulignement ("_") dans le nom de plusieurs domaines. Avoir des traits de soulignement dans DNS RR rompt quelques RFC (RFC 952 et RFC 1123), et vous devez ajouter à la section des options BIND la directive :

check-names master ignore;

En ce qui concerne le format et la méthode utilisés pour les domaines de la liste noire. À partir de la version 9.8, BIND prend en charge ce que l'on appelle les zones de politique de réponse (RPZ), qui ont été créées spécifiquement pour les domaines de liste noire.

Plusieurs fournisseurs de listes noires (commerciales) suivent aujourd'hui ce format. (J'utilise moi-même RPZ au travail et à la maison).

L'utilisation de RPZ devrait avoir plus de sens et signifie également une charge plus légère, et à ce titre, si vous payez le service, je vous conseillerais de contacter votre fournisseur pour savoir comment l'utiliser. Le format RPZ prend également en charge dans une certaine mesure les caractères génériques, ce qui signifierait un fichier de liste noire beaucoup plus petit.

Une alternative consiste également à traiter le fichier avec un script pour le modifier au format RPZ.

En relation :Qu'est-ce qui cause l'envoi de divers signaux ?

Je laisserai ici des liens pertinents sur RPZ et les fournisseurs officiels de RPZ :

https://dnsrpz.info

et un tutoriel comment configurer RPZ :

http://www.zytrax.com/books/dns/ch9/rpz.html

Comme vous l'avez peut-être remarqué, avec la configuration actuelle, vous aurez également beaucoup de fichiers ouverts; par conséquent, je recommande à nouveau d'utiliser RPZ.

Pour traiter davantage de fichiers ouverts, dans de gros serveurs de messagerie, DNS ou HTTP, les limites doivent souvent être relevées.

La situation n'est pas aussi mauvaise qu'avant avec les anciens noyaux, mais je recommande néanmoins d'augmenter les limites.

Modifier /etc/sysctl.conf et modifiez/ajoutez la directive fs.file-max pour la limite globale de fichiers ouverts :

fs.file-max=500000

Pour appliquer la nouvelle limite de fichiers sans redémarrer, vous devez exécuter :

sudo sysctl -p

Et pour les limites de fichiers par processus, éditez, /etc/security/limits.conf :

* - nofile 400000

Pour appliquer les limites de fichiers par processus, déconnectez-vous et connectez-vous, ou exécutez :

sudo ulimit -n 400000

Après avoir augmenté ces deux limites, vous devez redémarrer BIND :

sudo service bind9 restart

Pour convertir votre fichier au format RPZ, vous exécutez :

cat bind | tr -d "  | awk ' { print $2" CNAME ." } ' > /etc/bind/rpz.db

Le script convertira les entrées au format suivant :

zeus.developershed.com CNAME .
zeusclicks.com CNAME .
zintext.com CNAME .

Ajouter dans la section des options de nommé :

response-policy { zone "rpz"; };

Créez la déclaration de la zone RPZ :

zone "rpz" {
  type master;
  file "/etc/bind/rpz.db";
};

Ajouter en haut de /etc/bind/rpz.db fichier :

$TTL    604800
@       IN      SOA     localhost. root.localhost. (
                          2         ; Serial
                     604800         ; Refresh
                      86400         ; Retry
                    2419200         ; Expire
                     604800 )       ; Negative Cache TTL

@       IN      NS      your_dns_fqdn.

Déconfigurez votre fichier DNS et redémarrez votre serveur BIND. De toute évidence, le fichier RPZ peut être optimisé avec des caractères génériques et rendu beaucoup plus court, mais même sans cette optimisation, vous n'aurez plus besoin d'autant de fichiers ouverts.

Quant à la consultation des logs BIND/DNS, ils sont regroupés avec les logs système dans /var/log/syslog avec la balise named . Vous pouvez utiliser la commande :

sudo grep named /var/log/syslog

Linux
  1. A quoi servent les inodes ?

  2. Une doublure pour vérifier si le fichier existe ?

  3. A quoi sert le fichier .la de libtool ?

  4. grep une grande liste contre un gros fichier

  5. Diff/correctif binaire pour les fichiers volumineux sous Linux ?

Tutoriel de commande Linux df pour les débutants (8 exemples)

Tutoriel de commande Linux xz pour les débutants (7 exemples)

Tutoriel de commande de fichier Linux pour les débutants (5 exemples)

Commande ls sous Linux pour lister les fichiers

Comment créer un gros fichier de 1 Go ou 10 Go sous Linux

Exa - Un remplacement moderne de la commande ls