Die beste Methode ist über die Antwortrichtlinienzone in Bind 9.8.1 oder höher. Sie können einzelne Datensätze in beliebigen Zonen überschreiben (und es ist nicht erforderlich, eine ganze Unterdomäne dafür zu erstellen, nur den einzelnen Datensatz, den Sie ändern möchten). Sie können CNAMEs usw. überschreiben. Andere Lösungen wie Unbound können CNAMEs nicht überschreiben .
https://www.redpill-linpro.com/sysadvent/2015/12/08/dns-rpz.html
EDIT: Dann machen wir das richtig. Ich werde anhand des oben verlinkten Tutorials dokumentieren, was ich getan habe.
Mein Betriebssystem ist Raspbian 4.4 für Raspberry Pi, aber die Technik sollte ohne Änderungen unter Debian und Ubuntu oder mit minimalen Änderungen auf anderen Plattformen funktionieren.
Gehen Sie zu dem Ort, an dem sich Ihre Bind-Konfigurationsdateien auf Ihrem System befinden - hier ist es /etc/bind
. Erstellen Sie dort eine Datei db.rpz
mit folgendem Inhalt:
$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.
Was tut es?
- Es überschreibt die IP-Adresse für
www.some-website.com
mit der gefälschten Adresse 127.0.0.1
und sendet den gesamten Datenverkehr für diese Site effektiv an die Loopback-Adresse
- Es sendet Datenverkehr
www.other-website.com
an eine andere Site mit dem Namenfake-hostname.com
Alles, was in eine Bindezonendatei passen könnte, können Sie hier verwenden.
Um diese Änderungen zu aktivieren, sind einige weitere Schritte erforderlich:
Bearbeiten named.conf.local
und fügen Sie diesen Abschnitt hinzu:
zone "rpz" {
type master;
file "/etc/bind/db.rpz";
};
In dem oben verlinkten Tutorial werden Sie aufgefordert, weitere Elemente hinzuzufügen zone "rpz" { }
, dies ist jedoch in einfachen Setups nicht erforderlich. Ich habe hier gezeigt, dass dies mindestens auf Ihrem lokalen Resolver funktioniert.
Bearbeiten named.conf.options
und irgendwo im options { }
Abschnitt die response-policy
Option hinzufügen :
options {
// bunch
// of
// stuff
// please
// ignore
response-policy { zone "rpz"; };
}
Nun starte Bind neu:
service bind9 restart
Das ist es. Der Nameserver sollte nun beginnen, diese Datensätze zu überschreiben.
Wenn Sie Änderungen vornehmen müssen, bearbeiten Sie sie einfach db.rpz
und starten Sie Bind erneut.
Bonus: Wenn Sie DNS-Abfragen in Syslog protokollieren möchten, können Sie den Vorgang im Auge behalten, bearbeiten named.conf.local
und sicherstellen, dass ein logging
Abschnitt mit den folgenden Anweisungen vorhanden ist:
logging {
// stuff
// already
// there
channel my_syslog {
syslog daemon;
severity info;
};
category queries { my_syslog; };
};
Bind erneut starten und fertig.
Testen Sie es auf der laufenden Maschine.
dig @127.0.0.1 www.other-website.com. any
Wenn Sie dig auf einem anderen Computer ausführen, verwenden Sie einfach @ die-IP-Adresse-des-Bindungsservers anstelle von @ 127.0.0.1
Ich habe diese Technik mit großem Erfolg verwendet, um den CNAME für eine Website, an der ich gearbeitet habe, zu überschreiben und an einen neuen AWS Load Balancer zu senden, den ich gerade getestet habe. Ein Raspberry Pi wurde verwendet, um Bind auszuführen, und das RPi wurde auch so konfiguriert, dass es als WLAN-Router fungiert. Wenn ich also Geräte mit der SSID verbinde, die auf dem RPi ausgeführt wird, erhalte ich die DNS-Überschreibungen, die ich zum Testen benötige.