Ich habe einen Cache-DNS-Server mit bind9 eingerichtet und dabei eine Root-Hints-Methode verwendet (wieDas). Es funktioniert wie gewünscht – aber unser IPv6-Verkehr geht über ein Gateway außerhalb meines Landes, sodass Netflix denkt, wir seien aus diesem anderen Land zu Besuch, und das verhindert, dass meine Kinder ihre Lieblingssendungen sehen. Ich denke also, wenn ich Bind9 daran hindern kann, AAAA-Einträge für netflix.com zurückzugeben, werden die Clients nur versuchen, IPv4-Verbindungen zu Netflix herzustellen.
Das heißt: Wie konfiguriere ich bind9 so, dass AAAA-Datensatzsuchen für netflix.com unterdrückt werden, während gültige A-Datensatzergebnisse für netflix.com zurückgegeben werden?
Mir ist klar, dass ich eine Zonendatei nur mit der Netflix-Domäne erstellen kann und diese alle A-Einträge für netflix.com enthalten kann, die ich finden kann, und keine AAAA-Einträge. Aber ich frage mich, ob das oben genannte vielleicht möglich ist, sodass ich die A-Einträge in der Zonendatei nicht auf dem neuesten Stand halten muss.
Antwort1
Ich weiß, dass dies ein alter Beitrag ist, aber (zumindest) in meiner Version von Bind (9.11 unter Ubuntu 18.04) habe ich entdeckt, dass Sie filter-aaaa-on-v4 in Kombination mit match-destinations in einer Ansicht verwenden können.
Sie müssen zwar immer noch über Bind-Listening auf zwei IP-Adressen verfügen, aber Sie benötigen zumindest nicht mehrere Instanzen.
192.168.1.1 ist der normale DNS-Server. 192.168.1.2 ist der IPv6-blockierende Server.
Meine Konfiguration sieht ungefähr so aus (teilweise):
options {
listen-on port 53 { 192.168.1.1; };
listen-on port 5353 { 192.168.1.2; };
};
view "ipv4only" {
match-destinations { 192.168.1.2/24; };
filter-aaaa-on-v4 yes;
};
view "normal" {
match-clients { 192.168.1.1/24; };
zone "netflix.com" {
type forward;
forward only;
forwarders { 192.168.1.2 port 5353; };
};
};
Dadurch führt Bind eine Vorwärtssuche nach sich selbst auf einer anderen IP durch, wenn die Domäne mit netflix.com übereinstimmt.
Dadurch sind zwar keine zwei Instanzen mehr nötig, aber leider sind dafür zwei interne IP-Adressen erforderlich. Es wäre schön, wenn wir in „Match-Destinations“ auch eine Portnummer angeben könnten.
Antwort2
Wie aus den Kommentaren hervorgeht, ist Bind dazu möglicherweise nicht in der Lage. Ich konnte das Problem jedoch mit einem Workaround lösen:
Zuerst habe ich einen zweiten Bind-Dienst hinzugefügt, der auf Port 5353 lauscht, und zwar mit nur der folgenden Konfigurationsdatei:
acl mynetworks {
localhost;
(And a list with my various LAN networks such as 192.168.0.0/24;)
};
acl everyone {
any;
};
options {
directory "/var/cache/bind-ipv4limited";
filter-aaaa-on-v4 yes;
#dnssec-validation auto;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
dnssec-lookaside . trust-anchor dlv.isc.org.;
recursion yes;
allow-query { mynetworks; };
forwarders {
8.8.8.8;
8.8.4.4;
};
forward only;
auth-nxdomain no; # conform to RFC1035
listen-on port 5353 { any; };
};
Der Schlüssel besteht hier darin, „filter-aaaa-on-v4 yes“ zu verwenden, sodass AAAA-Anfragen ignoriert werden.
Dann habe ich im ursprünglichen Bind-Dienst eine Zone für netflix.com hinzugefügt, die den oben genannten DNS-Dienst verwendet:
zone "netflix.com" {
type forward;
forward only;
forwarders {
127.0.0.1 port 5353;
};
};
Es ist ein hässlicher Hack, aber er scheint zu funktionieren.