GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Große Zonendatei für Bind9:Werbeblocker?

Ich habe erfolgreich eine kleine Zonendatei (20.000 Einträge) mit bind9 verwendet Server, aber heute hat mein Datenanbieter ein Update gesendet, das dazu führte, dass die Zonendatei mehr als 300.000 Einträge groß wurde (30 MB+).

Das Problem ist, dass der Server mit dieser Zonendatei nicht starten würde. Die named-checkconf würde keine Fehler melden. Es sind keine Protokollmeldungen verfügbar (oder ich konnte sie nicht richtig protokollieren).

Ich würde gerne wissen, ob bind9 ist in der Lage, große Konfigurationsdateien zu verarbeiten, und wenn ja, wie behebe ich das? Wenn nein, würde ich gerne wissen, ob es Problemumgehungen für dieses Problem gibt. Vielleicht ist es möglich, Einträge in einer Datenbank zu speichern?

Die Zonendatei, die ich verwenden möchte, kann hier heruntergeladen werden.

Aktualisieren:

service bind9 status zeigte einige Informationen, die relevant sein könnten:

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'

Ich bin mir nicht ganz sicher, wie ich diese Informationen interpretieren oder verwenden soll… Irgendwelche Ideen?
Außerdem konnte ich nicht finden, wo bind9 Protokolle befinden sich unter:/var/log/ hat kein bind9 Einträge. Kann mir jemand sagen, wo sie sich auf Debian Jessie befinden?

Akzeptierte Antwort:

Ich habe Ihre Zonendatei gesehen:Es scheint im Moment eine Liste von mehr als 350.000 Domänen zu sein, in denen der lokale BIND-Server als Master definiert ist. Die Domains haben folgendes Format:

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

In Bezug auf die Speicheranforderungen würde ich sagen, dass Sie ungefähr 40 MB bis 80 MB freien RAM dafür benötigen, da Domänentabellen in den Speicher geladen werden. (obwohl ich mich mit mindestens 200 MB wohler fühlen würde)

Sofern der Server nicht stark im Arbeitsspeicher eingeschränkt ist, scheint es etwas unwahrscheinlich, aber es könnte passieren.

Mir ist auch aufgefallen, dass es Unterstriche („_“) im Namen mehrerer Domains gibt. Unterstriche in DNS RR brechen ein paar RFCs (RFC 952 und RFC 1123), und Sie müssen dem Abschnitt BIND-Optionen die Anweisung hinzufügen:

check-names master ignore;

Bezüglich des Formats und der Methode, die für das Blacklisting von Domains verwendet werden. Ab Version 9.8 unterstützt BIND sogenannte Response Policy Zones (RPZ), die speziell für das Blacklisting von Domains erstellt wurden.

Mehrere (kommerzielle) Blacklist-Anbieter folgen heutzutage diesem Format. (Ich selbst benutze RPZ sowohl bei der Arbeit als auch zu Hause).

Die Verwendung von RPZ sollte sinnvoller sein und auch eine geringere Belastung bedeuten. Wenn Sie den Service bezahlen, würde ich Ihnen daher raten, sich an Ihren Lieferanten zu wenden, um zu erfahren, wie Sie ihn verwenden können. Das RPZ-Format unterstützt teilweise auch Wildcards, was eine viel kleinere Blacklist-Datei bedeuten würde.

Eine Alternative besteht auch darin, die Datei mit einem Skript zu verarbeiten, um sie in das RPZ-Format umzuwandeln.

Verwandte:Was bewirkt, dass verschiedene Signale gesendet werden?

Ich werde hier relevante Links über RPZ und offizielle RPZ-Anbieter hinterlassen:

https://dnsrpz.info

und ein Tutorial, wie man RPZ konfiguriert:

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

Wie Sie vielleicht bemerkt haben, werden Sie mit der aktuellen Konfiguration auch viele offene Dateien haben; daher empfehle ich erneut die Verwendung von RPZ.

Für den Umgang mit offeneren Dateien müssen bei großen E-Mail-, DNS- oder HTTP-Servern die Limits oft erhöht werden.

Die Situation ist nicht mehr so ​​schlimm wie früher mit älteren Kerneln, aber ich empfehle trotzdem, die Limits zu erhöhen.

Bearbeiten Sie /etc/sysctl.conf und ändern/fügen Sie die Direktive fs.file-max hinzu für das globale Limit offener Dateien:

fs.file-max=500000

Um das neue Dateilimit ohne Neustart anzuwenden, müssen Sie Folgendes ausführen:

sudo sysctl -p

Und für die Dateibeschränkungen pro Prozess bearbeiten Sie /etc/security/limits.conf :

* - nofile 400000

Um die Dateibeschränkungen pro Prozess anzuwenden, melden Sie sich entweder ab und wieder an oder führen Sie Folgendes aus:

sudo ulimit -n 400000

Nachdem Sie diese beiden Limits erhöht haben, müssen Sie BIND neu starten:

sudo service bind9 restart

Um Ihre Datei in das RPZ-Format zu konvertieren, führen Sie Folgendes aus:

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

Das Skript konvertiert die Einträge in das folgende Format:

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

Fügen Sie im Optionsabschnitt von named:

hinzu
response-policy { zone "rpz"; };

Erstellen Sie die Deklaration der RPZ-Zone:

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

Am Anfang von /etc/bind/rpz.db hinzufügen Datei:

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

@       IN      NS      your_dns_fqdn.

Dekonfigurieren Sie Ihre DNS-Datei und starten Sie Ihren BIND-Server neu. Offensichtlich kann die RPZ-Datei mit Platzhaltern optimiert und viel kürzer gemacht werden, aber auch ohne diese Optimierung werden Sie jetzt nicht so viele offene Dateien benötigen.

Was BIND/DNS-Protokolle betrifft, so befinden sie sich zusammen mit den Systemprotokollen in /var/log/syslog mit dem Tag named . Sie können den Befehl verwenden:

sudo grep named /var/log/syslog

Linux
  1. Wofür sind Inodes gut?

  2. Existiert ein Liner zum Überprüfen der Datei?

  3. Wozu dient die .la-Datei von libtool?

  4. Zählen Sie Zeilen in großen Dateien

  5. grep eine große Liste gegen eine große Datei

Linux-df-Befehls-Tutorial für Anfänger (8 Beispiele)

Linux xz Command Tutorial für Anfänger (7 Beispiele)

Tutorial für Linux-Dateibefehle für Anfänger (5 Beispiele)

ls-Befehl in Linux zum Auflisten von Dateien

So erstellen Sie eine große 1-GB- oder 10-GB-Datei unter Linux

Exa – Ein moderner Ersatz für den Befehl ls