20.1. Berkeley Internet Name Daemon BIND (named)

IPv6 è supportato dalla versione 9. Si utilizzi sempre la versione più recente disponibile. Deve essere utilizzata almeno la 9.1.3, le versioni più vecchie possono contenere buchi di sicurezza utilizzabili da remoto.

20.1.1. Ascoltare su indirizzi IPv6

Nota: diversamente da IPv4 le attuali versioni non permettono di legare il socket del server a indirizzi IPv6 dedicati, perciò sono validi solo (indirizzi) qualsiasi o nessuno. Poiché questo può rappresentare un problema di sicurezza, si controlli anche la sezione Access Control List (ACL) più avanti!

20.1.1.1. Abilitare BIND named per l'ascolto su un indirizzo IPv6

Per abilitare l'ascolto IPv6, bisogna cambiare le seguenti opzioni

options {
        # qui ci saranno sicuramente anche altre opzioni
        listen-on-v6 { any; };
};
    

Dopo il riavvio dovrebbe risultare qualcosa tipo

# netstat -lnptu |grep "named\W*$" 
tcp 0 0 :::53         :::*      LISTEN 1234/named
# incoming TCP requests
udp 0 0 1.2.3.4:53    0.0.0.0:*        1234/named
¬ # incoming UDP requests to IPv4 1.2.3.4
udp 0 0 127.0.0.1:53  0.0.0.0:*        1234/named
¬ # incoming UDP requests to IPv4 localhost
udp 0 0 0.0.0.0:32868 0.0.0.0:*        1234/named
¬ # dynamic chosen port for outgoing queries
udp 0 0 :::53         :::*             1234/named
¬ # incoming UDP request to any IPv6
    

Un semplice test può essere

# dig localhost @::1
    

e dovrebbe visualizzare un risultato.

20.1.1.2. Disabilitare il BIND named per l'ascolto su un indirizzo IPv6

Per disabilitare l'ascolto IPv6, occorre cambiare le seguenti opzioni

options {
        # qui ci saranno sicuramente anche altre opzioni
        listen-on-v6 { none; };
};
    

20.1.2. Access Control List (ACL) di indirizzi IPv6 abilitati

È possibile definire le ACL relative a indirizzi IPv6 abilitati e queste dovrebbero essere usate praticamente sempre. Un esempio può essere:

acl internal-net { 
        127.0.0.1; 
        1.2.3.0/24;  
        3ffe:ffff:100::/56; 
        ::1/128; 
        ::ffff:1.2.3.4/128; 
};
acl ns-internal-net { 
        1.2.3.4;  
        1.2.3.5;  
        3ffe:ffff:100::4/128; 
        3ffe:ffff:100::5/128; 
};
   

Queste ACL possono essere usate, per esempio, per le richieste (query) dei client e per il trasferimento delle zone a name server secondari. Ciò impedisce l'utilizzo del proprio name server di caching dall'esterno con IPv6.

options {
        # qui ci saranno sicuramente anche altre opzioni
        listen-on-v6 { none; };
        allow-query { internal-net; }; 
        allow-transfer { ns-internal-net; }; 
};
   

È anche possibile configurare le opzioni allow-query e allow-transfer per la maggior parte delle singole definizioni di zona.

20.1.3. Inviare query con indirizzo IPv6 dedicato

Quest'opzione non è richiesta, ma a volte necessaria:

query-source-v6 address <ipv6address|*> port <port|*>;
   

20.1.4. Indirizzi IPv6 dedicati per zona

È anche possibile definire alcuni indirizzi IPv6 per zona.

20.1.4.1. Indirizzo sorgente di trasferimento

L'indirizzo sorgente di trasferimento viene usato per i trasferimenti di zona uscenti:

transfer-source-v6 <ipv6addr|*> [port port];
    

20.1.4.2. Indirizzo sorgente di notifica

L'indirizzo sorgente di notifica viene usato per i messaggi di notifica uscenti:

notify-source-v6 <ipv6addr|*> [port port];
    

20.1.5. Esempi di file di zona IPv6

Alcune informazioni possono essere reperite anche da IPv6 DNS Setup Information (articolo). Forse può essere d'aiuto anche il IPv6 Reverse DNS zone builder for BIND 8/9 (strumento web).

20.1.6. Servire dati DNS relativi a IPv6

Per IPv6 vengono definiti nuovi tipi e zone root per i reverse lookup:

Forse verrà riempito con più contenuti, intanto si dia uno sguardo alle RFC segnalate e anche a

Poiché IP6.INT è disapprovato (ma ancora in uso), un server DNS che supporta informazioni IPv6 deve essere in grado di fornire entrambi i tipi di reverse zone.

20.1.6.1. La miglior consuetudine attuale

Poiché ci sono alcuni problemi nell'uso di questi nuovi formati, la miglior consuetudine è:

Supporto della risoluzione diretta:

  • AAAA

Supporto della risoluzione inversa (reverse lookup):

  • Formato nibble inverso per la zona ip6.int (PER COMPATIBILITÀ CON IL PASSATO)

  • Formato nibble inverso per la zona ip6.arpa (RACCOMANDATO)

20.1.7. Controllare la connessione IPv6

Per verificare se il BIND è in ascolto e se fornisce o meno dati su di un socket IPv6, si vedano i seguenti esempi.

20.1.7.1. Connessione IPv6 con accesso negato dall'ACL

Specificando un server dedicato per la query, una connessione può essere forzata con:

$ host -t aaaa www.6bone.net 3ffe:ffff:200:f101::1 
Using domain server: 
Name: 3ffe:ffff:200:f101::1 
Address: 3ffe:ffff:200:f101::1#53 
Aliases:
Host www.6bone.net. not found: 5(REFUSED)
    

La voce di log relativa è del tipo:

Jan 3 12:43:32 gate named[12347]: client
¬ 3ffe:ffff:200:f101:212:34ff:fe12:3456#32770: 
 query denied
    

Se si vedono righe di questo tipo nel log, si controlli se le richieste di questi client debbano essere permesse o meno e si riveda quindi la propria configurazione dell'ACL.

20.1.7.2. Connessione IPv6 con successo

Una connessione IPv6 avviene con successo se l'output è analogo a:

$ host -t aaaa www.6bone.net 3ffe:ffff:200:f101::1 
Using domain server: 
Name: 3ffe:ffff:200:f101::1 
Address: 3ffe:ffff:200:f101::1#53 
Aliases:
www.6bone.net. is an alias for 6bone.net. 
6bone.net. has AAAA address 3ffe:b00:c18:1::10