In einem isolierten Terminal-Setup dient ein DNS-Forwarder dazu, sämtliche Namensauflösungen der Endgeräte zentral durch den Proxy-Server ausführen zu lassen. Dadurch entsteht auf den Terminals weder direkter externer DNS-Traffic noch uneinheitliche Auflösungswege. Das gesamte Namensauflösungsverhalten bleibt nachvollziehbar, kontrolliert und auditierbar. Ein Forwarder leitet die eingehenden DNS-Anfragen nicht selbst rekursiv ins Internet weiter, sondern leitet sie gezielt an definierte Upstream-Resolver weiter, zum Beispiel Provider-DNS, interne Resolver oder dedizierte, abgesicherte DNS-Dienste. Er bildet somit eine klar abgegrenzte und leicht prüfbare Schnittstelle zwischen interner Infrastruktur und externen Auflösungsquellen.
Unbound DNS-Forwarder
Zur Konfiguration des Proxys wird ein lokaler Resolver wie Unbound eingesetzt. Der Dienst läuft auf derselben Maschine parallel zu Squid, typischerweise auf den Ports 53/UDP und 53/TCP, und leitet Anfragen ausschließlich an definierte externe Resolver weiter. Die Terminals werden anschließend so konfiguriert, dass sie ausschließlich die Proxy-IP als DNS-Server verwenden.
$ sudo apt install unbound
/etc/unbound/unbound.conf.d/forwarder.conf
Für einen Forward-Only-Betrieb wird die Konfigurationsdatei /etc/unbound/unbound.conf.d/forwarder.conf angelegt.
$ sudoedit /etc/unbound/unbound.conf.d/forwarder.conf
Inhalt /etc/unbound/unbound.conf.d/forwarder.conf
server:
# Auf Interfaces lauschen
interface: 172.16.23.154
# Terminalnetz zulassen
access-control: 172.16.23.0/24 allow
# Optional: Defaults
do-ip4: yes
do-ip6: no
do-udp: yes
do-tcp: yes
hide-identity: yes
hide-version: yes
verbosity: 1
# Optional: Lokale Hosts, die NICHT über externe Resolver auflösbar sind
# local-data: "intranet.local. IN A 172.16.23.100"
# local-data: "mgmt-switch.local. IN A 172.16.23.101"
forward-zone:
# "." = alle Domains über die Forwarder auflösen
name: "."
# Forwarder Adressen (Quad9 und Google-DNS)
forward-addr: 9.9.9.9
forward-addr: 8.8.8.8
Konfigcheck
$ sudo unbound-checkconf
Unbound Restart
$ sudo systemctl restart unbound
Terminal-Setup
![]()