Projektarbeit-MYP/backend/app - Kopie/docs/DNS_KONFIGURATION.md

8.7 KiB

DNS-Konfiguration und Netzwerk-Optimierung

Übersicht

Das MYP Kiosk-System implementiert eine intelligente DNS-Konfiguration mit automatischer Router-Erkennung, Fallback-Mechanismen und IPv6-Deaktivierung für optimale Netzwerk-Performance.

Funktionen

🎯 Intelligente DNS-Prioritäten

  1. Router-DNS (Höchste Priorität)

    • Automatische Erkennung via DHCP, systemd-resolved, NetworkManager
    • Route-basierte Fallback-Erkennung
    • Funktionalitätstest vor Verwendung
  2. Google DNS (Fallback 1)

    • 8.8.8.8 und 8.8.4.4
    • Zuverlässig und schnell
  3. Cloudflare DNS (Fallback 2)

    • 1.1.1.1 und 1.0.0.1
    • Privacy-fokussiert
  4. Custom DNS (Fallback 3)

    • 163.116.178.73 und 163.116.178.74
    • Benutzerdefinierte Server

🚫 IPv6-Deaktivierung

  • Kernel-Level: Systemweite IPv6-Deaktivierung
  • Boot-Level: GRUB und cmdline.txt Parameter
  • Network-Level: NetworkManager und DHCP-Konfiguration

🔄 Automatische Aktualisierung

  • Alle 30 Minuten: DNS-Prioritäten neu bewerten
  • Alle 10 Minuten: DNS-Gesundheitscheck
  • Wöchentlich: Root Hints aktualisieren

Architektur

┌─────────────────┐    ┌──────────────┐    ┌─────────────────┐
│   MYP Kiosk     │───▶│   Unbound    │───▶│   Router DNS    │
│   Application   │    │   Resolver   │    │   (Priorität 1) │
└─────────────────┘    │  127.0.0.1   │    └─────────────────┘
                       │              │    ┌─────────────────┐
                       │              │───▶│   Google DNS    │
                       │              │    │   (Fallback 1)  │
                       │              │    └─────────────────┘
                       │              │    ┌─────────────────┐
                       │              │───▶│  Cloudflare DNS │
                       │              │    │   (Fallback 2)  │
                       │              │    └─────────────────┘
                       │              │    ┌─────────────────┐
                       │              │───▶│   Custom DNS    │
                       │              │    │   (Fallback 3)  │
                       └──────────────┘    └─────────────────┘

Konfigurationsdateien

Unbound Hauptkonfiguration

/etc/unbound/unbound.conf

Wichtige Einstellungen:

  • IPv6 deaktiviert (do-ip6: no)
  • Lokale Netzwerke erlaubt
  • DNSSEC aktiviert
  • Performance-optimiert (64MB Cache)

DNS-Prioritätsskript

/usr/local/bin/configure-dns-priority

Funktionen:

  • Router-DNS automatisch erkennen
  • DNS-Server-Funktionalität testen
  • Unbound-Konfiguration dynamisch aktualisieren
  • Logging aller Änderungen

Systemd-Services

/etc/systemd/system/dns-priority-config.service

Abhängigkeiten:

  • Nach network-online.target
  • Nach unbound.service
  • Vor myp-druckerverwaltung.service

Router-DNS-Erkennung

Methode 1: DHCP Lease-Datei

grep "domain-name-servers" /var/lib/dhcp/dhclient.leases

Methode 2: systemd-resolved

systemd-resolve --status | grep "DNS Servers"

Methode 3: NetworkManager

nmcli dev show | grep "IP4.DNS"

Methode 4: Route-basierte Erkennung

# Gateway als DNS-Server testen
gateway=$(ip route | grep default | awk '{print $3}')
nslookup google.com "$gateway"

IPv6-Deaktivierung

Kernel-Parameter

# /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

Boot-Parameter

# /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 ..."

# /boot/cmdline.txt (Raspberry Pi)
... ipv6.disable=1

NetworkManager

# /etc/NetworkManager/conf.d/dns-priority.conf
[connection]
ipv6.method=ignore

DHCP-Schutz

dhclient-Konfiguration

# /etc/dhcp/dhclient.conf
supersede domain-name-servers 127.0.0.1;

resolv.conf-Schutz

# Schreibschutz aktivieren
chattr +i /etc/resolv.conf

Monitoring und Wartung

DNS-Status prüfen

myp-maintenance dns-status

Zeigt an:

  • Unbound Service-Status
  • Aktuelle DNS-Server
  • Erkannte Router-DNS
  • DNS-Statistiken
  • Letzte Logs

DNS-Test durchführen

myp-maintenance dns-test

Testet:

  • google.com
  • github.com
  • debian.org
  • cloudflare.com

DNS-Konfiguration neu laden

myp-maintenance dns-reconfigure

IPv6-Status prüfen

myp-maintenance ipv6-status

Automatische Überwachung

Cron-Jobs

# /etc/cron.d/dns-priority-update

# DNS-Priorität alle 30 Minuten aktualisieren
*/30 * * * * root /usr/local/bin/configure-dns-priority

# Root Hints wöchentlich aktualisieren
0 3 * * 0 root curl -s -o /var/lib/unbound/root.hints https://www.internic.net/domain/named.cache

# DNS-Gesundheitscheck alle 10 Minuten
*/10 * * * * root /usr/local/bin/dns-health-check

Gesundheitscheck

/usr/local/bin/dns-health-check

Prüft:

  • Unbound Service-Status
  • DNS-Auflösung für Test-Domains
  • Automatischer Neustart bei Fehlern
  • Konfiguration neu laden bei kritischen Fehlern

Log-Dateien

DNS-Konfiguration

/var/log/dns-configuration.log

Enthält:

  • Router-DNS-Erkennungen
  • Konfigurationsänderungen
  • DNS-Server-Tests
  • Unbound-Neustarts

DNS-Gesundheit

/var/log/dns-health.log

Enthält:

  • Regelmäßige Gesundheitschecks
  • DNS-Auflösungsfehler
  • Service-Neustarts
  • Kritische Fehler

Unbound-Logs

/var/log/unbound.log

Enthält:

  • Unbound Service-Logs
  • DNS-Anfragen (optional)
  • Fehler und Warnungen

Troubleshooting

DNS-Auflösung funktioniert nicht

  1. Service-Status prüfen:

    systemctl status unbound
    
  2. DNS-Test durchführen:

    nslookup google.com 127.0.0.1
    
  3. Konfiguration neu laden:

    /usr/local/bin/configure-dns-priority
    

Router-DNS wird nicht erkannt

  1. DHCP-Lease prüfen:

    cat /var/lib/dhcp/dhclient.leases | grep domain-name-servers
    
  2. Gateway-Test:

    gateway=$(ip route | grep default | awk '{print $3}')
    nslookup google.com "$gateway"
    
  3. Manuelle Konfiguration:

    # Router-DNS manuell in Unbound eintragen
    echo "forward-addr: 192.168.1.1" >> /etc/unbound/unbound.conf
    systemctl reload unbound
    

IPv6 noch aktiv

  1. Kernel-Parameter prüfen:

    sysctl net.ipv6.conf.all.disable_ipv6
    
  2. Boot-Parameter prüfen:

    cat /proc/cmdline | grep ipv6.disable
    
  3. Neustart erforderlich:

    sudo reboot
    

Unbound startet nicht

  1. Konfiguration testen:

    unbound-checkconf /etc/unbound/unbound.conf
    
  2. Berechtigungen prüfen:

    chown -R unbound:unbound /var/lib/unbound
    
  3. Port-Konflikt prüfen:

    netstat -tulpn | grep :53
    

Performance-Optimierung

Cache-Einstellungen

# Unbound Cache-Konfiguration
msg-cache-size: 64m
rrset-cache-size: 128m
cache-max-ttl: 86400
cache-min-ttl: 300

Thread-Konfiguration

# Optimiert für Raspberry Pi
num-threads: 2
msg-cache-slabs: 4
rrset-cache-slabs: 4

Netzwerk-Puffer

# Erhöhte Puffer für bessere Performance
so-rcvbuf: 4m
so-sndbuf: 4m
outgoing-range: 4096

Sicherheit

Zugriffskontrolle

# Nur lokale Netzwerke erlaubt
access-control: 127.0.0.0/8 allow
access-control: 192.168.0.0/16 allow
access-control: 10.0.0.0/8 allow
access-control: 172.16.0.0/12 allow

DNSSEC

# Automatische Trust-Anchor-Verwaltung
auto-trust-anchor-file: "/var/lib/unbound/root.key"

Private Adressen

# Verhindert DNS-Rebinding-Angriffe
private-address: 192.168.0.0/16
private-address: 172.16.0.0/12
private-address: 10.0.0.0/8
private-address: 127.0.0.0/8

Status: Produktionsreif
Letzte Aktualisierung: $(date +%Y-%m-%d)
Version: 1.0 (DNS-Optimiert)

Referenzen