8.7 KiB
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
-
Router-DNS (Höchste Priorität)
- Automatische Erkennung via DHCP, systemd-resolved, NetworkManager
- Route-basierte Fallback-Erkennung
- Funktionalitätstest vor Verwendung
-
Google DNS (Fallback 1)
8.8.8.8
und8.8.4.4
- Zuverlässig und schnell
-
Cloudflare DNS (Fallback 2)
1.1.1.1
und1.0.0.1
- Privacy-fokussiert
-
Custom DNS (Fallback 3)
163.116.178.73
und163.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
-
Service-Status prüfen:
systemctl status unbound
-
DNS-Test durchführen:
nslookup google.com 127.0.0.1
-
Konfiguration neu laden:
/usr/local/bin/configure-dns-priority
Router-DNS wird nicht erkannt
-
DHCP-Lease prüfen:
cat /var/lib/dhcp/dhclient.leases | grep domain-name-servers
-
Gateway-Test:
gateway=$(ip route | grep default | awk '{print $3}') nslookup google.com "$gateway"
-
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
-
Kernel-Parameter prüfen:
sysctl net.ipv6.conf.all.disable_ipv6
-
Boot-Parameter prüfen:
cat /proc/cmdline | grep ipv6.disable
-
Neustart erforderlich:
sudo reboot
Unbound startet nicht
-
Konfiguration testen:
unbound-checkconf /etc/unbound/unbound.conf
-
Berechtigungen prüfen:
chown -R unbound:unbound /var/lib/unbound
-
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)