Il metodo migliore è tramite la policy zone di risposta in Bind 9.8.1 o successive. Ti consente di sovrascrivere singoli record in zone arbitrarie (e non è necessario creare un intero sottodominio per quello, solo il singolo record che desideri modificare), ti consente di sovrascrivere CNAME, ecc. Altre soluzioni come Unbound non possono ignorare i CNAME .
https://www.redpill-linpro.com/sysadvent/2015/12/08/dns-rpz.html
EDIT: Facciamolo correttamente allora. Documenterò ciò che ho fatto sulla base del tutorial sopra linkato.
Il mio sistema operativo è Raspbian 4.4 per Raspberry Pi, ma la tecnica dovrebbe funzionare senza modifiche su Debian e Ubuntu o con modifiche minime su altre piattaforme.
Vai a dove sono conservati i tuoi file di configurazione di Bind sul tuo sistema - eccolo qui /etc/bind
. Crea lì un file chiamato db.rpz
con i seguenti contenuti:
$TTL 60
@ IN SOA localhost. root.localhost. (
2015112501 ; serial
1h ; refresh
30m ; retry
1w ; expiry
30m) ; minimum
IN NS localhost.
localhost A 127.0.0.1
www.some-website.com A 127.0.0.1
www.other-website.com CNAME fake-hostname.com.
Che cosa fa?
- sovrascrive l'indirizzo IP per
www.some-website.com
con l'indirizzo falso 127.0.0.1
, inviando effettivamente tutto il traffico per quel sito all'indirizzo di loopback
- invia il traffico
www.other-website.com
verso un altro sito chiamatofake-hostname.com
Tutto ciò che potrebbe andare in un file di zona Bind è possibile utilizzare qui.
Per attivare queste modifiche ci sono alcuni altri passaggi:
Modifica named.conf.local
e aggiungi questa sezione:
zone "rpz" {
type master;
file "/etc/bind/db.rpz";
};
Il tutorial sopra linkato ti dice di aggiungere più cose zone "rpz" { }
ma non è necessario in semplici configurazioni - quello che ho mostrato qui è il minimo per farlo funzionare sul tuo resolver locale.
Modifica named.conf.options
e da qualche parte nella options { }
sezione aggiungi l' response-policy
opzione:
options {
// bunch
// of
// stuff
// please
// ignore
response-policy { zone "rpz"; };
}
Ora riavvia Bind:
service bind9 restart
Questo è tutto. Il nameserver dovrebbe iniziare a sovrascrivere questi record ora.
Se è necessario apportare modifiche, è sufficiente modificarlo db.rpz
, quindi riavviare nuovamente Bind.
Bonus: se si desidera registrare le query DNS su syslog, in modo da poter tenere d'occhio il procedimento, modificare named.conf.local
e assicurarsi che ci sia una logging
sezione che includa queste dichiarazioni:
logging {
// stuff
// already
// there
channel my_syslog {
syslog daemon;
severity info;
};
category queries { my_syslog; };
};
Riavvia nuovamente Bind e il gioco è fatto.
Provalo sulla macchina che esegue Bind:
dig @127.0.0.1 www.other-website.com. any
Se si esegue scavare su un altro computer, utilizzare semplicemente @ l'indirizzo-IP-di-Bind-server anziché @ 127.0.0.1
Ho usato questa tecnica con grande successo per ignorare il CNAME per un sito Web su cui stavo lavorando, inviandolo a un nuovo bilanciamento del carico AWS che stavo solo testando. Un Raspberry Pi è stato usato per eseguire Bind, e l'RPi è stato anche configurato per funzionare come router WiFi, quindi collegando i dispositivi all'SSID in esecuzione sull'RPi avrei ottenuto le sostituzioni DNS necessarie per il test.