GNU/Linux >> Linux Esercitazione >  >> Linux

File di zona di grandi dimensioni per Bind9:blocco degli annunci?

Stavo usando con successo un piccolo file di zona (20.000 voci) con bind9 server, ma oggi il mio fornitore di dati ha inviato un aggiornamento che ha fatto sì che il file di zona diventasse di oltre 300.000 voci (30 Mb+).

Il problema è che il server non si avvia con questo file di zona. Il named-checkconf non riporterebbe alcun errore. Non sono disponibili messaggi di registro (o non sono riuscito a registrarli correttamente).

Vorrei sapere se bind9 è in grado di gestire file di configurazione di grandi dimensioni e, in caso affermativo, come posso risolverlo. In caso negativo, vorrei sapere se esistono soluzioni alternative per questo problema. Forse è possibile memorizzare le voci in un database?

Il file di zona che sto cercando di utilizzare può essere scaricato da qui.

Aggiornamento:

service bind9 status ha mostrato alcune informazioni che potrebbero essere rilevanti:

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'

Non sono sicuro di come interpretare o utilizzare queste informazioni... Qualche idea?
Inoltre non sono riuscito a trovare dove bind9 i log si trovano:/var/log/ non ha bind9 inserimenti. Qualcuno può dirmi dove si trovano su Debian Jessie?

Risposta accettata:

Ho visto il tuo file di zona:sembra essere un elenco di più di 350k domini, al momento, dove è definito il server BIND locale come master. I domini hanno il seguente formato:

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

Per quanto riguarda i requisiti di memoria, direi che potresti aver bisogno di circa 40 MB-80 MB di RAM libera poiché le tabelle di dominio vengono caricate in memoria. (anche se mi sentirei più a mio agio con almeno 200 MB)

A meno che il server non sia fortemente limitato nella RAM, sembra un po' improbabile, ma potrebbe succedere.

Ho anche notato che ci sono caratteri di sottolineatura ("_") nel nome di diversi domini. Avere caratteri di sottolineatura in DNS RR interrompe un paio di RFC (RFC 952 e RFC 1123) e devi aggiungere alla sezione delle opzioni BIND la direttiva:

check-names master ignore;

Per quanto riguarda il formato e il metodo utilizzati per inserire i domini nella lista nera. Dalla versione 9.8 in poi, BIND supporta le cosiddette Response Policy Zones (RPZ), create appositamente per i domini nella lista nera.

Diversi fornitori di liste nere (commerciali) seguono oggi quel formato. (Io stesso uso RPZ sia al lavoro che a casa).

Usare RPZ dovrebbe avere più senso e significa anche un carico più leggero, e come tale, se stai pagando il servizio, ti consiglio di contattare il tuo fornitore per sapere come usarlo. Il formato RPZ supporta anche in una certa misura i caratteri jolly, il che significherebbe un file di blacklist molto più piccolo.

Un'alternativa è anche elaborare il file con uno script per modificarlo in formato RPZ.

Correlati:cosa causa l'invio di vari segnali?

Lascerò qui i link rilevanti su RPZ e sui fornitori ufficiali di RPZ:

https://dnsrpz.info

e un tutorial su come configurare RPZ:

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

Come avrai notato, con la configurazione attuale avrai anche molti file aperti; quindi consiglio di nuovo di usare RPZ.

Per gestire file più aperti, in server di posta elettronica, DNS o HTTP di grandi dimensioni, spesso è necessario aumentare i limiti.

La situazione non è così grave come una volta con i kernel più vecchi, ma comunque consiglio di aumentare i limiti.

Modifica /etc/sysctl.conf e modifica/aggiungi la direttiva fs.file-max per il limite globale di file aperti:

fs.file-max=500000

Per applicare il nuovo limite di file senza riavviare, è necessario eseguire:

sudo sysctl -p

E per i limiti dei file per processo, modifica, /etc/security/limits.conf :

* - nofile 400000

Per applicare i limiti di file per processo, disconnetti e accedi oppure esegui:

sudo ulimit -n 400000

Dopo aver alzato questi due limiti, devi riavviare BIND:

sudo service bind9 restart

Per convertire il tuo file in formato RPZ, esegui:

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

Lo script convertirà le voci nel seguente formato:

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

Aggiungi nella sezione delle opzioni di named:

response-policy { zone "rpz"; };

Crea la dichiarazione della zona RPZ:

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

Aggiungi in cima a /etc/bind/rpz.db file:

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

@       IN      NS      your_dns_fqdn.

Deconfigura quel tuo file DNS e riavvia il tuo server BIND. Evidentemente il file RPZ può essere ottimizzato con caratteri jolly e reso molto più breve, tuttavia anche senza quell'ottimizzazione ora non avrai bisogno di così tanti file aperti.

Per quanto riguarda la consultazione dei log BIND/DNS, sono insieme ai log di sistema in /var/log/syslog con il tag named . Puoi usare il comando:

sudo grep named /var/log/syslog

Linux
  1. Spiegazione del comando Linux wc per principianti (6 esempi)

  2. A cosa servono gli inode?

  3. A cosa servono i file .la di libtool?

  4. Contare le righe in file di grandi dimensioni

  5. Utilizzo di nc per trasferire file di grandi dimensioni

Linux df Command Tutorial per principianti (8 esempi)

Linux xz Command Tutorial per principianti (7 esempi)

Tutorial sui comandi di file Linux per principianti (5 esempi)

Comando ls in Linux per elencare i file

Come creare un file di grandi dimensioni da 1 GB o 10 GB in Linux

Exa:un moderno sostituto del comando ls