IPv4 - einfach mal abschalten

oder

A-Records aus dem DNS rauswerfen


Vorwort


Ja, es stimmt man kann A-Records aus den Antworten von Nameservern filtern.
Ja, es verletzt dnssec so wie es DNS64 (das Hinzufügen von künstlichen AAAA-Records) auch tut.

Warum sollte man es trotzdem tun?
Um fehlerhafte Server und Anwendungen zu entdecken (java, nodejs) bzw. um sie ohne clat lauffähig zu machen.
Happy Eyeballs und 464xlat(clat) verdecken Probleme - die aber gelöst werden sollten.
Um den IPv4-Verkehr im eigenen Netzwerk und auf dem clat-interface auf Null zu drücken.

Voraussetzung

Umgebung mit funktionierendem DNS64/NAT64.

Überlegungen


Durchführung

# /etc/unbound/unbound.conf.d/local-change.conf

...
 module-config: "respip dns64 validator iterator"
    ## remove A-Records
    response-ip: 0.0.0.0/0 redirect

cp /usr/lib/systemd/system/dnsmasq.service /etc/systemd/system/


diff  /usr/lib/systemd/system/dnsmasq.service /etc/systemd/system/dnsmasq.service
23c23
< ExecStart=/usr/sbin/dnsmasq --log-async --enable-dbus --keep-in-foreground
---
> ExecStart=/usr/sbin/dnsmasq --filter-A --log-async --enable-dbus --keep-in-foreground

var dns_resolver = 'fd00::9a9b:cbff:fe05:4241'; // Fritzbox
var v6_only = true;
var dns64 = true;

// wenn man eine Bindung zu einer bestimmten IP braucht)
resolver_own.setServers(['[fd00::dea6:32ff:feb7:f781]']);
server6.serve(53,'fd00::dea6:32ff:feb7:f781');

Eine Serviceunitdatei kann ebenfalls hilfreich sein (Achtung root ist nicht zur Nachahmung empfohlen).

[Unit]
Description=IPv6 dns server
[Service]
Type=simple
Restart=always
User=root
Group=root
WorkingDirectory=/root/IPv6-dns-server
ExecStart=/usr/bin/npm start
[Install]
WantedBy=multi-user.target

Schlusswort


Es gibt auch Vorschläge Response Policy Zone (RPZ) dafür zu verwenden.


Nachtrag


Diese Setup funktioniert auch im Zusammenspiel mit meiner IPv6-only-OpenVPN Konfiguration.


Veröffentlicht im Juni 2023