Finestre.  Virus.  I Quaderni.  Internet.  ufficio.  Utilità.  Autisti

Attenzione

Per installare e configurare correttamente dnsmasq, vai alla sessione del superutente:

Quando viene richiesta una password, immettere la password dell'utente root o dell'amministratore locale.

La cache DNS è progettata per accelerare il caricamento delle pagine del sito Web memorizzando i loro indirizzi IP in memoria. Per configurare la memorizzazione nella cache, utilizzare l'utilità dnsmasq.

Yum installa dnsmasq

Utilizzando l'editor di testo vi o nano, apri il file che si trova in /etc/dnsmasq.conf

vi /etc/dnsmasq.conf

Nano /etc/dnsmasq.conf

Modifica le seguenti opzioni:

resolv-file=/etc/resolv.dnsmasq no-poll listen-address=127.0.0.1 cache-size=150 conf-dir=/etc/dnsmasq.d,.rpmnew,.rpmsave,.rpmorig

Aggiungi anche il seguente parametro:

Tutti i server

  • file resolv- file con gli indirizzi IP dei server DNS
  • no-sondaggio- un parametro che disabilita l'applicazione automatica delle modifiche nei file denominati resolv.
  • indirizzo di ascolto- parametro che indica quale indirizzo ascoltare.
  • dimensione della cache- dimensione della cache. Il valore predefinito consente di memorizzare 150 host.
  • Conf-dir- parametro responsabile di file aggiuntivo configurazione.
  • tutti i server- reindirizza una richiesta DNS a tutti i server DNS disponibili e restituisce una risposta dal primo server che risponde. Il parametro deve essere inserito manualmente.

È inoltre possibile specificare le seguenti opzioni:

  • no-negcache- non memorizzare nella cache le risposte negative dai server.
  • Bind-interfacciaS- consente di eseguire copie del processo.
  • Dns-avanti-max- il numero massimo di richieste dns. Il valore predefinito è 150. Il parametro deve essere inserito manualmente.

Ora crea un file resolv.dnsmasq utilizzando un editor di testo VI O nano e annota lì gli indirizzi dei server DNS.

Vi /etc/resolv.dnsmasq

Nano /etc/resolv.dnsmasq

Quindi aggiungere l'indirizzo IP 127.0.0.1 archiviare resolv.conf. Per fare ciò, utilizzare l'utilità « Le connessioni di rete» situata in "Menu" → "Opzioni" → "Connessioni di rete" in un ambiente grafico Cannella O "Sistema" → "Impostazioni" → "Connessioni di rete" in un ambiente grafico Compagno. Seleziona la tua connessione attiva, fai clic sul pulsante "Modifica", vai alla scheda "Impostazioni IPv4", modifica "Metodo" SU "Automatico (DHCP, solo indirizzo)", e sul campo " Server DNS aggiuntivi"scrivi l'indirizzo 127.0.0.1 , fai clic su applica e riavvia responsabile del network.

Modifica del file resolv.conf con l'aiuto editori di testo Non consigliato. Il file verrà sovrascritto al successivo riavvio del sistema.

Systemctl riavvia NetworkManager.service

Controlla il contenuto del file per assicurarti che le modifiche abbiano avuto effetto. resolv.conf:

/etc/resolv.conf

Il contenuto dovrebbe essere così:

# Generato dal server dei nomi NetworkManager 127.0.0.1

Le operazioni sopra descritte ti permetteranno di reindirizzare tutte le richieste dns alla macchina locale.

Aggiungi un servizio dnsmasq per avviare automaticamente e riconnettersi alla sessione:

Systemctl abilita dnsmasq.service --now

Per reimpostare la cache è sufficiente riavviare il servizio:

Systemctl riavvia dnsmasq.service

Controllo della salute

Verifica se il servizio è abilitato:

Systemctl stato dnsmasq.service

Controlla la porta 53:

Netstat -ntlp | grep:53 tcp 0 0 0.0.0.0:53 0.0.0.0:* ASCOLTA 7319/dnsmasq tcp6 0 0:::53:::* ASCOLTA 7319/dnsmasq

Ora prova a utilizzare l'utilità dig per accedere più volte al sito google.com

Scava google.com | grep "Tempo di interrogazione" ;; Tempo di interrogazione: 135 ms

Se la memorizzazione nella cache di query dns funziona, in quasi tutte le richieste successive, la riga evidenziata tempo di interrogazione sarà uguale a zero.

;; Tempo di interrogazione: 0 ms

In caso contrario, varierà da 0 in su a ogni nuova richiesta.

Di conseguenza, il server DNS primario della rete subirà un carico molto inferiore.

Se trovi un errore, evidenzia il testo e fai clic Ctrl+Invio.

Buon tempo, lettori. Continuando il materiale teorico su, nell'attuale articolo voglio considerare un esempio pratico installazioni e impostazioni diverso Configurazioni del server BIND. Nell'articolo descriverò Impostazione DNS-cache e pieno Server principale DNS. Inizierò la descrizione con concetti generali e passaggi necessari per organizzare qualsiasi Server DNS.

informazioni generali

Di nomeè un demone di cui fa parte pacchetto bind9 ed essere server dei nomi di dominio. Demone chiamato può implementare le funzioni di server di qualsiasi tipo: padrone, schiavo, nascondiglio. Nel diagramma sopra, ho cercato di visualizzare quello principale nel modo più trasparente possibile. come funziona il server DNS BIND. Il file binario che fa la maggior parte del lavoro si trova in /usr/sbin/named. Prende le impostazioni dal file principale file di configurazione, che è chiamato denominato.conf e si trova nel catalogo /etc/bind. nella configurazione principale descritto directory di lavoro del server, spesso una directory /var/cache/bind, in cui giacciono file di descrizione della zona e altri file di servizio. Corrispondenza nomi di zona E file di descrizione della zona imposta sezione di zona con parametro file. sezione di zona stabilisce anche il tipo di responsabilità questo server per zona (master, slave, ecc.) e definisce anche parametri speciali per la zona corrente (ad esempio, su quale interfaccia elaborare le richieste per la zona corrente). Nei file di descrizione della zona contiene parametri per zone e record di risorse (i percorsi indicati in questo paragrafo possono differire, dipende da Distribuzione linux o parametri).

Questo schema generale lavoro che ti aiuterà a non confonderti in futuro quando consideri configurazioni specifiche.

Il formato del file di configurazione per la 4a versione del programma differisce da quello utilizzato nell'ottava e nella nona versione LEGAMENTO. Dato che non vedo l'ora di installare un nuovo DNS servitore e vecchia versione Non vedo il punto di impostarlo, quindi prenderò in considerazione la configurazione della nuova versione.

Dati iniziali

Affinché il DNS funzioni correttamente, deve avere un'estensione . Il DNS in questo articolo verrà impostato su una distribuzione Debian e verranno annotate anche le specifiche di altre distribuzioni. La configurazione della rete dello stand è la seguente:

DNS: ~# CAT/ETC/Rete/Interfacce Auto LO IFACE LOT LOOPBACK AUTH0 IFACE ETH0 INETCENTIC 10.0.152 Netmask 255.255.255.0 Gateway 10.0.254 Auto ETHA ATH Faccia ETH1 Inet Indirizzo statico 192.168.1 Netmask 255.255.255.0

Dove 10.0.0.152/24 - interfaccia esterna (sottorete assegnata dal provider), 192.168.1.1/24 - interno (Rete locale). La zona personalizzata sarà denominata example.com. Nell'esempio con server schiavo, il server secondario si troverà sull'IP 10.0.0.191 .

Installazione di BIND9

Affinché il server DNS funzioni, è necessario vincolare9 (su alcune distribuzioni - legamento ). Come notato nel diagramma, il file di configurazione principale LEGAMENTOè il file denominato.conf (dato file può essere inserito in una directory /eccetera, a volte dentro /etc/bind).

Parametri (sintassi) named.conf

sintassi del file named.conf rispetta le seguenti regole:

Indirizzi IP- L'elenco IP deve essere separato da ";" , è possibile specificare una sottorete nel formato 192.168.1.1/24 o 192.168.1.1/255.255.255.0, (per escludere l'IP è necessario anteporre un segno!), è possibile specificare i nomi "qualsiasi", "nessuno", "localhost" tra virgolette.

Commenti- le righe che iniziano con #, // e racchiuse tra /* e */ sono considerate commenti.

IN file di descrizione della zona -simbolo @è una "variabile" che contiene il nome della zona specificata nel file di configurazione denominato.conf o nella direttiva @ $ORIGINE la descrizione della zona corrente.

Ogni stringa completata i parametri devono terminare con un carattere; .

Sezione Acl

Acl (lista di controllo accessi)- consente di impostare un elenco denominato di reti. Formato della sezione: acl "nome_rete" (ip; ip; ip; );

Sezione Opzioni

Sezione Opzioni imposta opzioni globali file di configurazione che controlla tutte le zone. Questa sezione ha il seguente formato: opzioni(opzioni_sezione_opzioni);. Le opzioni possono essere "nidificate". Sezione di zona, mentre ignora le impostazioni globali. Spesso usato dichiarazioni di opzioni:

  • consenti-query ( lista_ip} - Consente le risposte alle domande solo da lista_ip. In caso contrario, il server risponde a tutte le richieste.
  • consentire-ricorsione ( lista_ip} - Le query ricorsive verranno eseguite su richieste da ip_list. Per il resto - iterativo. Se il parametro non è impostato, il server esegue query ricorsive per tutte le reti.
  • consentire-trasferimento ( lista_ip} - Specifica l'elenco dei server che possono prendere la zona dal server (in pratica, i server slave sono indicati qui)
  • directory /percorso/del/lavoro/dir- specifica il percorso assoluto della directory di lavoro del server. Questa affermazione è valida solo nella sezione delle opzioni.
  • spedizionieri ( porta ip porta ip.} - indica gli indirizzi degli host e, se necessario, le porte dove inoltrare le richieste (solitamente qui vengono indicati i provider DNS degli ISP).
  • inoltrare SOLTANTO O inoltrare PRIMO - parametro Primo indica al server DNS di provare a risolvere i nomi utilizzando i server DNS specificati nel parametro forwarders e, solo se non riesce a risolvere il nome utilizzando questi server, tenterà di risolvere il nome stesso.
  • notificare SI|NO - - notificare al server slave i cambiamenti nella zona, NO- non avvisare.
  • ricorsione SI|NO - - eseguire query ricorsive se richiesto dal client, NO- non eseguire (solo query iterative). Se la risposta viene trovata nella cache, viene restituita dalla cache. (può essere utilizzato solo nella sezione Opzioni)

Sezione di zona

Specifica la descrizione delle zone. Formato della sezione: zona( zone_section_statements}; Operatori che sono più comunemente usati:

  • consentire-aggiornamento( lista_ip} - Specifica i sistemi a cui è consentito aggiornare dinamicamente la zona specificata.
  • file "nome del file " - specifica il percorso del file delle opzioni della zona (dovrebbe trovarsi nella directory specificata nella sezione delle opzioni dall'istruzione della directory)
  • maestri( lista_ip} - specifica l'elenco dei server master. (consentito solo nelle zone subordinate)
  • tipo" tipo_zona " - indica il tipo di zona descritta nella sezione corrente, zone_type può assumere i seguenti valori:
    • inoltrare- specifica la zona di reindirizzamento che reindirizza le richieste che arrivano a questa zona.
    • suggerimento- indica la zona ausiliaria ( dato tipo contiene informazioni sui root server che il server contatterà se non riesce a trovare la risposta nella cache)
    • maestro- indica di lavorare come server principale per la zona corrente.
    • schiavo- Specifica di funzionare come server slave per la zona corrente.

Ulteriori opzioni di configurazione

Valori temporali nei file di zona per impostazione predefinita è specificato in secondi se non sono seguiti da una delle seguenti lettere: S - secondi, M - minuti, H - ore, D - giorni, W - settimane. Di conseguenza, la voce 2h20m5s avrà un valore di 2 ore 20 minuti 5 secondi e corrisponderà a 8405 secondi.

Eventuali nomi host/voci che non terminano con punto conta non FQDN nome e sarà completato con il nome della zona corrente. Ad esempio, una voce domen nel file di zona examle.com si espanderà nel nome FQDN domen.examle.com. .

IN BIND file di configurazione può essere applicato quanto segue direttive:

  • $ TTL- definisce il TTL predefinito per tutti i record nella zona corrente.
  • $ORIGINE- cambia il nome della zona rispetto a quello specificato nel file named.conf. Allo stesso tempo, l'ambito di questa direttiva non si estende "sopra" (ovvero, se il file è incluso dalla direttiva $INCLUDE, allora l'ambito di $ORIGN non si estende al genitore)
  • $INCLUDI- include il file specificato come parte del file di zona.

Separatamente, vorrei descrivere parametro consenti-trasferimento ( 10.0.0.191; );. Questo parametro descrive i server autorizzati a scaricare una copia della zona - cosiddetto schiavo del server. Nell'esempio seguente, analizzeremo l'impostazione DNS schiavo.

Affinché la registrazione funzioni correttamente, è necessario creare la directory appropriata e assegnare i diritti necessari:

Dns:~# mkdir /var/log/bind/ dns:~# chmod 744 /var/log/bind/ dns:~# ps aux | grep denominato bind 4298 0.0 3.4 46792 13272 ? Ssl Jul05 0:00 /usr/sbin/named -u bind root 4815 0.0 0.1 3304 772 pts/4 S+ 18:19 0:00 grep named dns:~# chown bind /var/log/bind/ dns:~# ls -ld /var/log/bind/ drwxr--r-- 2 bind root 4096 6 luglio 18:18 /var/log/bind/

Dns:~# cat /var/cache/bind/example.com $TTL 3D @ IN SOA ns.example.com. root.example.com. (2011070601; seriale 8H; aggiornamento 2H; riprova 2W; scadenza 1D); minimo @ IN NS ns.example.com. @ IN NS ns2.example.com. @ IN A 10.0.0.152 @ IN MX 5 mx.example.com. ns IN A 10.0.0.152 ns2 IN A 10.0.0.191 mx IN A 10.0.0.152 www IN CNAME @

così come nel dominio in-addr.arpa.

Dns:~# cat /var/cache/bind/0.0.10.in-addr.arpa $TTL 3600 @ IN SOA ns.examle.com. root.example.com. (2007042001 ; Seriale 3600 ; Aggiorna 900 ; Riprova 3600000 ; Scadenza 3600) ; Minimo IN NS ns.examle.com. IN NS ns2.example.com. 152 IN PTR esempio.com. 191 IN PTR ns.example.com. * IN PTR esempio.com. dns:~# cat /var/cache/bind/1.168.192.in-addr.arpa $TTL 3600 @ IN SOA ns.examle.com. root.example.com. (2007042001 ; Seriale 3600 ; Aggiorna 900 ; Riprova 3600000 ; Scadenza 3600) ; Minimo IN NS ns.examle.com. IN NS ns2.example.com. * IN PTR esempio.com.

La nostra rete è piccola, si presume che ci siano pochissime macchine sulla rete. Tutti i servizi di rete sono ospitati sullo stesso host example.com., quindi il DNS principale (ns.example.com.) e server email(mx.example.com.) punta a una macchina (10.0.0.152).

Server autorevole secondario (slave) per la zona

funzione principale schiavo del server- sincronizzazione automatica della descrizione della zona con il server master. Questo compito disciplinato dal documento RFC 1034 Nel cap 4.3.5. Secondo questo documento si consiglia di scambiare dati tra server tramite una richiesta AXFR. Per questa richiesta per uno Connessione TCP l'intera zona deve essere trasmessa (RFC 1035).

Anche, server DNS schiavo condivide il carico con il server principale o assume l'intero carico in caso di guasto sul primo server.

Prima di procedere a configurazione di un server DNS slave, è necessario verificare di poter ottenere manualmente la zona dal secondario utilizzando il seguente comando:

Root@debian:~# [email protected] example.com. axfr ;<<>> DiG 9.7.3<<>> @10.0.0.152 esempio.com. axfr ; (1 server trovato) ;; opzioni globali: +cmd example.com. 259200 IN SOA ns.example.com. root.example.com. 2011070801 28800 7200 1209600 86400 esempio.com. 259200 IN NS ns.example.com. esempio.com. 259200 IN NS ns2.example.com. esempio.com. 259200 IN UN esempio.com 10.0.0.152. 259200 IN MX 5 mx.example.com. mx.example.com. 259200 IN A 10.0.0.152 ns.example.com. 259200 IN A 10.0.0.152 ns2.example.com. 259200 IN A 10.0.0.191 www.example.com. 259200 IN CNAME esempio.com. esempio.com. 259200 IN SOA ns.example.com. root.example.com. 2011070801 28800 7200 1209600 86400; Tempo di interrogazione: 14 ms ;; SERVER: 10.0.0.152#53(10.0.0.152) ;; QUANDO: Ven 8 Lug 15:33:54 2011 ;; Dimensione XFR: 11 record (messaggi 1, byte 258)

  1. copia file di configurazione denominato.conf dal server principale;
  2. Sostituire digitare il parametro principale SU tipo schiavo
  3. Parametro consenti-trasferimento ( 10.0.0.191; ); sostituire SU maestri( 10.0.0.152;); in quelle zone per le quali sarà secondario;
  4. Elimina zone, che non sarà servito dal server corrente, inclusa la radice, se lo slave non risponderà alle richieste ricorsive;
  5. Crea directory per i log, come nell'esempio precedente.

In totale, otteniamo la configurazione del server slave:

[e-mail protetta]:~# cat /etc/bind/named.conf options ( directory "/var/cache/bind"; allow-query ( any; ); // risponde alle richieste da tutte le interfacce recursion no; // disabilita le richieste ricorsive auth-nxdomain no; // per compatibilità RFC1035 listen-on-v6 ( nessuno; ); // non abbiamo bisogno della versione IPv6 "sconosciuta"; // non visualizzare la versione del server DNS nelle risposte ); // le zone descritte di seguito definiscono il server come autorevole per le interfacce // di loopback, nonché per le zone broadcast (secondo RFC 1912) zona "localhost" ( digitare master; file "localhost"; ); zona "127.in-addr.arpa" ( digitare master; file "127.in-addr.arpa"; ); zona "0.in-addr.arpa" ( digitare master; file "0.in-addr.arpa"; ); zona "255.in-addr.arpa" ( digitare master; file "255.in-addr.arpa"; ); // descrizione della zona principale zone "example.com" ( digita slave; file "example.com"; masters ( 10.0.0.152; ); ); // zona di descrizione della zona inversa "0.0.10.in-addr.arpa" ( digitare slave; file "0.0.10.in-addr.arpa"; masters ( 10.0.0.152; ); ); // logging settings logging ( canale "misc" ( file "/var/log/bind/misc.log" versioni 4 dimensione 4m; tempo di stampa SI; gravità di stampa SI; categoria di stampa SI; ); canale "query" ( file "/var/log/bind/query.log" versioni 4 dimensione 4m; print-time YES; print-severity NO; print-category NO; ); default categoria ( "misc"; ); query categoria ( "query "; ); );

dopo aver riavviato il nostro server schiavo copierà in modo sicuro le informazioni di cui ha bisogno dal server principale, come indicato dalla presenza di file nella directory:

[e-mail protetta]:~# ls -la /var/cache/bind/ total 28 drwxrwxr-x 2 root bind 4096 Jul 8 18:47 . drwxr-xr-x 10 root root 4096 8 luglio 15:17 .. -rw-r--r-- 1 bind bind 416 8 luglio 18:32 0.0.10.in-addr.arpa ...... - rw-r--r-- 1 bind bind 455 8 luglio 18:32 example.com ........

Fondamentalmente, /stroallow-transfer (pngp server schiavo potrebbe non memorizzare una copia della zona nel suo sistema di file. Questa copia è necessaria solo al momento dell'avvio del DNS. Avere una copia della zona nel file system può prevenire un arresto anomalo se il server master non è disponibile durante l'avvio del DNS slave. Se non si specifica l'opzione file nella sezione zone, non viene creata alcuna copia.

Configurazione di netfilter() per DNS BIND

In realtà, avendo configurato il server, sarebbe bello proteggerlo. Sappiamo che il server è in esecuzione sulla porta 53/udp. Dopo aver letto l'articolo e familiarizzato con esso, puoi creare regole di filtraggio del traffico di rete:

Dns ~ # iptables-save # regole iptables generiche per DNS *filter:INPUT DROP :FORWARD DROP :OUTPUT DROP -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -m conntrack --ctstate NON VALIDO -j DROP # consente l'accesso rete locale al server DNS: -A INPUT -s 192.168.1.1/24 -d 192.168.1.1/32 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT -A OUTPUT -o lo -j ACCEPT -A OUTPUT -p icmp -j ACCEPT -A OUTPUT -p udp -m udp --sport 32768:61000 -j ACCEPT -A OUTPUT -p tcp -m tcp --sport 32768:61000 -j ACCEPT -A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT # consente l'accesso al server DNS per effettuare query in uscita -A OUTPUT -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT COMMIT

Questo è un tipico esempio! Per impostare le regole di iptables per le tue attività e la configurazione di rete, devi capire come funziona netfilter in Linux leggendo gli articoli precedenti.

Risoluzione dei problemi

La fonte principale per identificare i problemi DNS è . Ecco un esempio di errori di avvio quando ho commesso un errore con il percorso a file di zona dei server principali:

Jul 5 18:12:43 server dns denominato: avvio di BIND 9.7.3 -u bind Jul 5 18:12:43 server dns denominato: compilato con "--prefix=/usr" "--mandir=/usr/ share/man" "--infodir=/usr/share/info" "--sysconfdir=/etc/bind" "--localstatedir=/var" "--enable-threads" "--enable-largefile" "- -with-libtool" "--enable-shared" "--enable-static" "--with-openssl=/usr" "--with-gssapi=/usr" "--with-gnu-ld" "- -with-dlz-postgres=no" "--with-dlz-mysql=no" "--with-dlz-bdb=yes" "--with-dlz-filesystem=yes" "--with-dlz-ldap =yes" "--with-dlz-stub=yes" "--with-geoip=/usr" "--enable-ipv6" "CFLAGS=-fno-strict-aliasing -DDIG_SIGCHASE -O2" "LDFLAGS=" " CPPFLAGS=" 5 luglio 18:12:43 server dns denominato: limite modificato sui file aperti da 1024 a 1048576 5 luglio 18:12:43 server dns denominato: trovata 1 CPU, utilizzando 1 thread di lavoro 5 luglio 18:12: 43 dns-server denominato: utilizzo fino a 4096 socket Jul 5 18:12:43 dns-server denominato: caricamento della configurazione da "/etc/bind/named.conf" Jul 5 18:12:43 dns-server denominato: lettura costruita -in chiavi attendibili dal file "/etc/bind/bind.keys" Jul 5 18:12:43 dns-server denominato: utilizzando l'intervallo di porte UDP/IPv4 predefinito: Jul 5 18:12:43 dns-server denominato: utilizzando il valore predefinito Intervallo di porte UDP/IPv6: Jul 5 18:12:43 dns-server denominato: in ascolto sull'interfaccia IPv4 lo, 127.0.0.1#53 Jul 5 18:12:43 dns-server denominato: in ascolto sull'interfaccia IPv4 eth1, 192.168.1.1 #53 Jul 5 18:12:43 dns-server named: generazione della chiave di sessione per il DNS dinamico Jul 5 18:12:43 dns-server named: impossibile configurare root hints da "/etc/bind/db.root": file non trovato Jul 5 18:12:43 dns-server denominato: configurazione in caricamento: file non trovato # file non trovato Jul 5 18:12:43 dns-server denominato: in uscita (a causa di un errore irreversibile) Jul 5 18:15:05 server dns denominato: avvio di BIND 9.7.3 -u bind Jul 5 18:15:05 server dns denominato: compilato con "--prefix=/usr" "--mandir=/usr/share/man" "-- infodir=/usr/share/info" "--sysconfdir=/etc/bind" "--localstatedir=/var" "--enable-threads" "--enable-largefile" "--with-libtool" "- -enable-shared" "--enable-static" "--with-openssl=/usr" "--with-gssapi=/usr" "--with-gnu-ld" "--with-dlz-postgres= no" "--con-dlz-mysql=no" "--con-dlz-bdb=si" "--con-dlz-filesystem=si" "--con-dlz-ldap=si" "--con -dlz-stub=yes" "--with-geoip=/usr" "--enable-ipv6" "CFLAGS=-fno-strict-aliasing -DDIG_SIGCHASE -O2" "LDFLAGS=" "CPPFLAGS=" 5 18 luglio: 15:05 server dns denominato: limite modificato sui file aperti da 1024 a 1048576 5 luglio 18:15:05 server dns denominato: trovata 1 CPU, utilizzando 1 thread di lavoro 5 luglio 18:15:05 server dns denominato: utilizzando fino a 4096 socket 5 lug 18:15:05 server dns denominato: caricamento della configurazione da "/etc/bind/named.conf" 5 lug 18:15:05 server dns denominato: utilizzo dell'intervallo di porte UDP/IPv4 predefinito: lug 5 18:15:05 server dns denominato: utilizzo dell'intervallo di porte UDP/IPv6 predefinito: 5 luglio 18:15:05 server dns denominato: in ascolto sull'interfaccia IPv4 lo, 127. 0.0.1#53 Jul 5 18:15:05 dns-server denominato: in ascolto sull'interfaccia IPv4 eth1, 192.168.1.1#53 Jul 5 18:15:05 dns-server denominato: automatico zona vuota: 254.169.IN-ADDR. ARPA 5 luglio 18:15:05 server dns denominato: zona vuota automatica: 2.0.192.IN-ADDR.ARPA 5 luglio 18:15:05 server dns denominato: zona vuota automatica: 100.51.198.IN-ADDR. ARPA 5 luglio 18:15:05 server dns denominato: zona vuota automatica: 113.0.203.IN-ADDR.ARPA 5 luglio 18:15:05 server dns denominato: zona vuota automatica: 255.255.255.255.IN-ADDR. ARPA Jul 5 18:15:05 dns-server denominato: zona vuota automatica: 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0. .ARPA Jul 5 18:15:05 dns-server denominato: zona vuota automatica: 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0. IP6.ARPA 5 luglio 18:15:05 server dns denominato: zona vuota automatica: D.F.IP6.ARPA 5 luglio 18:15:05 server dns denominato: zona vuota automatica: 8.E.F.IP6.ARPA 5 luglio 18:15 :05 dns-server denominato: automatico zona vuota: 9.E.F.IP6.ARPA Jul 5 18:15:05 dns-server denominato: automatico zona vuota: A.E.F.IP6.ARPA Jul 5 18:15:05 dns-server denominato: automatico zona vuota: B.E.F.IP6.ARPA Jul 5 18:15:05 dns-server denominato: automatico zona vuota: 8.B.D.0.1.0.0.2.IP6.ARPA Jul 5 18:15:05 dns-server denominato: zona 0. in-addr.arpa/IN: caricato seriale 1 Jul 5 18:15:05 dns-server denominato: zona 127.in-addr.arpa/IN: caricato seriale 1 Jul 5 18:15:05 dns-server denominato: zona 255.in-addr.arpa/IN: caricato seriale 1 Jul 5 18:15:05 dns-server denominato: zone localhost/IN: caricato seriale 2 Jul 5 18:15:05 dns-server denominato: in esecuzione # avviato correttamente

Sono un ottimo strumento diagnostico.

Riepilogo

Nell'articolo corrente, ho descritto come impostare le configurazioni DNS di base del server BIND. Lo scopo di questo articolo era quello di dare un'idea di come funziona il server BIND su UNIX. Praticamente non ho toccato i problemi di sicurezza DNS e ho toccato poco impostazioni specifiche come il funzionamento del server in modalità edge, quando reti diverse dato Informazioni varie sulla/e zona/e. Per una comprensione più approfondita, fornirò un elenco di fonti aggiuntive, in cui, spero, sarà possibile ottenere le informazioni necessarie. Ho messo fine a tutto questo. Ci vediamo.

Domain Name System: http://citforum.ru/internet/dns/khramtsov/
RFC 1034- Nomi di dominio - Concetti e strutture: http://tools.ietf.org/html/rfc1034
RFC 1035- Nomi di dominio - Implementazione e specifica: http://tools.ietf.org/html/rfc1035
RFC 1537- Errori comuni di configurazione del file di dati DNS: http://tools.ietf.org/html/rfc1537
RFC 1591- Struttura e delega del Domain Name System: http://tools.ietf.org/html/rfc1591
RFC 1713- Strumenti per il debug del DNS: http://tools.ietf.org/html/rfc1713
RFC 2606- Nomi DNS di primo livello riservati: http://tools.ietf.org/html/rfc2606
Sicurezza DNS (DNSSEC): http://book.itep.ru/4/4/dnssec.htm
BIND 9 Manuale di riferimento per l'amministratore: http://www.bind9.net/manual/bind/9.3.2/Bv9ARM.html
Modello BIND sicuro: http://www.cymru.com/Documents/secure-bind-template.html
I parametri di configurazione sono ben definiti surusso: http://www.bog.pp.ru/work/bind.html
Creazione automatica di un file di zona: http://www.zonefile.org/?lang=en#zonefile

Ogni anno, la velocità di Internet, sia l'ultimo miglio che i canali principali, aumenta. Solo una cosa è invariabile: la latenza ha già incontrato limiti fisici: la velocità della luce in una fibra ottica è di circa 200 mila chilometri al secondo e, di conseguenza, più veloce di ~ 150 ms, una risposta da un server attraverso l'Oceano Atlantico lo farà non essere ricevuto nel prossimo futuro (anche se ovviamente ci sono fronzoli, come una fibra ottica con nucleo d'aria o comunicazione a relè radio, ma questo è difficilmente accessibile ai comuni mortali).

Quando proviamo, ad esempio, dalla Russia ad aprire un sito Web situato negli Stati Uniti (il suo server NS è probabilmente nello stesso posto) e il dominio non è stato trovato nella cache DNS del tuo provider, allora dovremo attendere un molto tempo anche su Internet gigabit, forse anche un intero secondo: mentre attraversiamo l'oceano riceveremo i nomi dei server NS del dominio, mentre risolviamo il loro IP, mentre inviamo e riceviamo la richiesta DNS vera e propria.. .

Un paio di anni fa, Google ha avviato i propri server DNS pubblici e, per promuovere la transizione, ha sviluppato l'utilità NameBench, che esegue test DNS sulla cronologia di navigazione e mostra quanto il DNS di Google è più veloce del server DNS del tuo ISP.

Ma sono riuscito a far funzionare il mio server DNS più veloce di google DNS pubblico, e in questa breve nota voglio condividere i risultati.

PDNSD

pdnsd- memorizzazione nella cache del proxy DNS. Oltre alla banale memorizzazione nella cache delle query DNS (con la possibilità di codificare il TTL minimo - potrebbe essere necessario per molto Cattivo internet), può inviare una richiesta contemporaneamente a diversi server DNS "padri" e fornire al client la prima risposta restituita.

È l'inclusione del polling parallelo che ci offre il vantaggio principale in termini di velocità., Perché quando troviamo il risultato nella cache di uno qualsiasi dei provider, otteniamo il risultato molto rapidamente e non aspettiamo una risoluzione completa e lenta se il primo provider non ha una risposta nella cache.

Installato in Ubuntu - banale apt-get.

Un paio di cose nel file config

global ( perm_cache=10240; //Dimensione massima della cache in kilobyte. //Per impostazione predefinita era 1024, tutte le voci non andavano bene. cache_dir="/var/cache/pdnsd"; [...] min_ttl=60m; / /Tempo minimo per salvare un record nella cache. //Anche se il TTL arriva meno di 60 minuti, saranno 60 minuti max_ttl=1w; //Il tempo massimo per salvare un record nella cache neg_ttl=5m; // Tempo di memorizzazione nella cache delle risposte negative (ovvero se il dominio non viene trovato) [..] par_queries=3; //Numero di server DNS "genitori" con polling simultaneo ( label = "main"; ip = 85.21.192.5 //Qui sono 4 server, se i primi 3 non rispondono, verrà inviata una richiesta al 4°, 213.234.192.7 //I primi 2 server sono il server del tuo provider e alcuni vicini, 8.8.4.4 //Questo è Google Public DNS: hanno memorizzato nella cache tutto ciò che è raro e si risolvono rapidamente, 8.8.8.8 ; [.. ] )

In linea di massima il caching può essere reso meno aggressivo (ad esempio min_ttl=1m), ma non ci sono stati particolari problemi durante l'anno di operatività. In caso di problemi, se lo desideri, puoi cancellare una voce dalla cache:
sudo pdnsd-ctl record 3.14.by delete o tutto in una volta:
sudo pdnsd-ctl cache vuota

Risultati dei test in NameBench



Vediamo che per il 50% delle query otteniamo una risposta in meno di 10 ms, per l'85% più veloce rispetto a Google Public DNS, e quindi i risultati coincidono naturalmente con Google.

Secondo i risultati del test, NameBench ci dice felicemente:

8.8.8.8 Replica più lenta di SYS-192.167.0.98 8.8.4.4 Replica più lenta di SYS-192.167.0.98

Pertanto, un proxy DNS con memorizzazione nella cache intelligente con richieste parallele consente di velocizzare anche Internet a 100 megabit. E per i collegamenti (radio) lenti con latenza elevata e perdita di pacchetti, la differenza può essere simile tra cielo e terra.

Lo scopo del DNS è tradurre i nomi di dominio facilmente ricordabili dagli esseri umani in indirizzi IP comprensibili ai computer, un processo chiamato risoluzione dei nomi.
Cosa ci darà l'installazione del nostro server DNS di cache?!
Ciò accelererà leggermente la risposta dei siti + Linux non percepisce molto bene i nomi NetBios e talvolta devi trovare computer o stampanti all'interno della rete locale, ma vuoi farlo per nome.
Ricordare gli indirizzi IP non è conveniente, ma anche salire costantemente sul registro del server DHCP non è il nostro metodo. In tali casi, è necessario il DNS nella rete locale.
L'installazione del pacchetto bind9 stesso non è difficile, i plug di solito sorgono nella fase della sua configurazione, perché dopo i file di configurazione del sistema di facile lettura, una sintassi incomprensibile ricade su una persona, tra l'altro, molto simile al linguaggio di programmazione C. il server funzionerà all'interno della rete locale, quindi non ha senso trasferirlo in un ambiente chroot e l'intera configurazione richiede pochissimo tempo.
Su questo, la parte lirica può essere completata, procediamo all'installazione e alla configurazione.
Installa il server DNS Bind9:
sudo apt-get install bind9
Una volta completato, scaricato e installato, dobbiamo modificare il suo file di configurazione:
sudo nano /etc/bind/named.conf.options
Troviamo la sezione, si trova proprio all'inizio del file di configurazione, non c'è nient'altro oltre a questo ...

Options ( directory "/var/cache/bind"; // Se c'è un firewall tra te e i nameserver con cui vuoi // comunicare, potresti dover correggere il firewall per consentire a più // porte di comunicare. Vedi http: //www.kb.cert.org/vuls/id/800113 // Se il tuo ISP ha fornito uno o più indirizzi IP per server dei nomi // stabili, probabilmente vorrai usarli come forwarder. // Togli il commento dal seguente blocco, e inserire gli indirizzi sostituiscono // il segnaposto tutto-0. // forwarder ( // 0.0.0.0; // ); auth-nxdomain no; # conforme a RFC1035 listen-on-v6 ( any; ); );

La sezione forwarder è responsabile di dove verrà inviata la richiesta DNS per la risoluzione dei nomi se non si trova nel proprio database. Ultimamente non sono per niente contento, il lavoro di questi server presso il provider può essere collegato a quelli di terze parti, ad esempio quelli di Google, è molto facile ricordare l'IP 8.8.

Modifichiamo la sezione, prima devi rimuovere i commenti da essa e aggiungere DNS di terze parti, se è necessario aggiungere più server, ad esempio, nel caso in cui il server di Google non resista alle tue richieste e si rompa :), quindi il L'IP di altri server può essere scritto in una colonna, quindi puoi ottenere una maggiore resilienza.
spedizionieri ( 8.8.8.8; 193.58.251.251; //Servizio DNS russo -SkyDNS );
In questa sezione è meglio inserire l'IP del server che hai specificato nel file /etc/resolv.conf o entra lì nella sezione server dei nomi questo IP
Salva le modifiche ed esci
Riavvia il server e verifica
Reclutamento in riga di comando nslookup mail.ru
Dovrebbe emettere:

Risposta non autorevole: Nome: mail.ru Indirizzi: 94.100.191.202
Ciò suggerisce che il nostro server non è il principale al servizio di questa zona (mail.ru), ma le richieste sono state aggiunte alla cache!
Ora dobbiamo creare una zona DNS per la nostra rete in modo che le macchine possano trovare vari servizi di rete: possono esserci, ad esempio, stampanti di rete, possono essere indipendenti o condivise su altre workstation.
La nostra zona può essere chiamata orgname -i.e. Nome dell'organizzazione.
Prima di tutto, creiamo una zona, per questo modifichiamo denominato.conf.local

sudo nano /etc/bind/named.conf.local
e aggiungervi quanto segue:
zona "orgname" ( digitare master; file "/etc/bind/db.orgname"; );
Salva ed esci
Ora dobbiamo creare un file di configurazione della zona
sudo nano /etc/bind/db.orgname
e incollare quanto segue al suo interno:
(Si prega di prestare attenzione alla sintassi del file di configurazione, anche i punti contano)

@ IN SOA orgname. root.orgname. (20101015 4h ; ​​tempo di aggiornamento -4 ore 1h ; ripetizione ogni ora 1w ; per quanto tempo conservare le informazioni -1 settimana 1d) ); Record TTL (time to live) - 1 giorno @ IN NS orgname. ; nome del server dei nomi @ IN A 192.168.10.1 ; A - record - Indirizzo IP del nostro server DNS che serve questa zona, @ significa che questa è la zona root. * IN CNAME @ stampante IN A 192.168.10.25 ; Puoi creare un record DNS stampante di rete che si trova a 192.168.10.25

Ora, quando si aggiunge un nuovo file dispositivo di rete, devi fare 2 cose:
1) Prenota un indirizzo IP per Server DHCP come fare questo, puoi leggere nell'articolo-
2) Crea una zona DNS per questo IP, come nome dispositivo IN A XXX.XXX.XXX.XXX. Dove: devicename - nome di rete del dispositivo; XXX.XXX.XXX.XXX è il suo indirizzo IP che è riservato sul server DHCP.

Ora dobbiamo modificare il file resolv.conf

sudo nano /etc/resolv.conf

Ed entra lì:

Server dei nomi 127.0.0.1

Tutto quello che c'era poteva essere commentato mettendo #

Riavvio del server

Questo viene fatto in modo che il server cerchi tutto nel proprio database e solo allora BIND reindirizzerà le richieste al server 8.8.8.8 il cui IP è inserito nella direttiva spedizionieri.

Ora puoi verificare se funziona:

Se il test viene eseguito da Windows:
ping nomedispositivo.nomeorg

Se testiamo da sotto Linux:
ping nomedispositivo.nomeorg -c 4
I ping dovrebbero andare all'IP che hai specificato invece che a XXX.XXX.XXX.XXX

Questo completa la configurazione del server DNS.

Ogni anno, la velocità di Internet, sia l'ultimo miglio che i canali principali, aumenta. Solo una cosa è invariabile: la latenza ha già incontrato limiti fisici: la velocità della luce in una fibra ottica è di circa 200 mila chilometri al secondo e, di conseguenza, più veloce di ~ 150 ms, una risposta da un server attraverso l'Oceano Atlantico lo farà non essere ricevuto nel prossimo futuro (anche se ovviamente ci sono fronzoli, come una fibra ottica con nucleo d'aria o comunicazione a relè radio, ma questo è difficilmente accessibile ai comuni mortali).

Quando proviamo, ad esempio, dalla Russia ad aprire un sito Web situato negli Stati Uniti (il suo server NS è probabilmente nello stesso posto) e il dominio non è stato trovato nella cache DNS del tuo provider, allora dovremo attendere un molto tempo anche su Internet gigabit, forse anche un intero secondo: mentre attraversiamo l'oceano riceveremo i nomi dei server NS del dominio, mentre risolviamo il loro IP, mentre inviamo e riceviamo la richiesta DNS vera e propria.. .

Un paio di anni fa, Google ha avviato i propri server DNS pubblici e, per promuovere la transizione, ha sviluppato l'utilità NameBench, che esegue test DNS sulla cronologia di navigazione e mostra quanto il DNS di Google è più veloce del server DNS del tuo ISP.

Ma sono riuscito a creare il mio server DNS più veloce di Google Public DNS e in questa breve nota voglio condividere i risultati.

PDNSD

pdnsd- memorizzazione nella cache del proxy DNS. Oltre alla banale memorizzazione nella cache delle richieste DNS (con la possibilità di codificare il TTL minimo - potrebbe essere necessario su una pessima Internet), può inviare una richiesta contemporaneamente a più server DNS "padri" e dare al client il primo risposta restituita.

È l'inclusione del polling parallelo che ci offre il vantaggio principale in termini di velocità., Perché quando troviamo il risultato nella cache di uno qualsiasi dei provider, otteniamo il risultato molto rapidamente e non aspettiamo una risoluzione completa e lenta se il primo provider non ha una risposta nella cache.

Installato in Ubuntu - banale apt-get.

Un paio di cose nel file config

global ( perm_cache=10240; //Dimensione massima della cache in kilobyte. //Per impostazione predefinita era 1024, tutte le voci non andavano bene. cache_dir="/var/cache/pdnsd"; [...] min_ttl=60m; / /Tempo minimo per salvare un record nella cache. //Anche se il TTL arriva meno di 60 minuti, saranno 60 minuti max_ttl=1w; //Il tempo massimo per salvare un record nella cache neg_ttl=5m; // Tempo di memorizzazione nella cache delle risposte negative (ovvero se il dominio non viene trovato) [..] par_queries=3; //Numero di server DNS "genitori" con polling simultaneo ( label = "main"; ip = 85.21.192.5 //Qui sono 4 server, se i primi 3 non rispondono, verrà inviata una richiesta al 4°, 213.234.192.7 //I primi 2 server sono il server del tuo provider e alcuni vicini, 8.8.4.4 //Questo è Google Public DNS: hanno memorizzato nella cache tutto ciò che è raro e si risolvono rapidamente, 8.8.8.8 ; [.. ] )

In linea di massima il caching può essere reso meno aggressivo (ad esempio min_ttl=1m), ma non ci sono stati particolari problemi durante l'anno di operatività. In caso di problemi, se lo desideri, puoi cancellare una voce dalla cache:
sudo pdnsd-ctl record 3.14.by delete o tutto in una volta:
sudo pdnsd-ctl cache vuota

Risultati dei test in NameBench



Vediamo che per il 50% delle query otteniamo una risposta in meno di 10 ms, per l'85% più veloce rispetto a Google Public DNS, e quindi i risultati coincidono naturalmente con Google.

Secondo i risultati del test, NameBench ci dice felicemente:

8.8.8.8 Replica più lenta di SYS-192.167.0.98 8.8.4.4 Replica più lenta di SYS-192.167.0.98

Pertanto, un proxy DNS con memorizzazione nella cache intelligente con richieste parallele consente di velocizzare anche Internet a 100 megabit. E per i collegamenti (radio) lenti con latenza elevata e perdita di pacchetti, la differenza può essere simile tra cielo e terra.

Se noti un errore, seleziona una parte di testo e premi Ctrl + Invio
CONDIVIDERE: