Files
hugo_docker/content/networkconfig_dns.md
2026-09-08 11:02:29 +02:00

6.9 KiB

title, date
title date
Zusammenfassung der vorgenommenen Änderungen und Konfigurationen 2026-09-08

Zusammenfassung der vorgenommenen Änderungen und Konfigurationen

Dieses Dokument fasst die wichtigsten Änderungen und Konfigurationen zusammen, die wir besprochen und durchgeführt haben.


1. Python Logging (sync.py und logging_config.py)

Um die Log-Ausgabe des sync.py-Skripts zu verbessern, wurde eine modulare Logging-Konfiguration mit Log-Rotation erstellt und in eine separate Datei ausgelagert.

logging_config.py erstellt

Zweck: Enthält die Funktion setup_logging() zur Konfiguration eines Root-Loggers, der Logs in eine Datei (sync_log.log) schreibt, diese bei Erreichen einer Größe von 5 MB rotiert und 5 Backups behält. Optional kann auch ein Konsolen-Logger aktiviert werden.

Inhalt der Datei (/home/jonnybravo/Projekte/python_tests/rclone/logging_config.py):

import logging
from logging.handlers import RotatingFileHandler, TimedRotatingFileHandler
import os

def setup_logging(console_logging=False):
    """Konfiguriert das Root-Logging für die Anwendung mit Rotation.

    Diese Funktion richtet einen Root-Logger ein, der Log-Nachrichten in eine Datei schreibt,
    welche bei Erreichen einer bestimmten Größe rotiert wird.

    :param console_logging: Wenn True, werden Logs zusätzlich zur Datei auch auf der Konsole ausgegeben.
                            Standardmäßig ist dies deaktiviert (False).
    """
    
    # --- Allgemeine Einstellungen ---
    log_file = "sync_log.log" # Name der Log-Datei

    # Maximale Größe der Log-Datei in Bytes, bevor sie rotiert wird (hier 5 MB)
    max_log_size = 5 * 1024 * 1024

    # Anzahl der rotierenden Backup-Dateien, die behalten werden sollen (hier 5)
    backup_count = 5

    # --- Logger-Initialisierung ---
    logger = logging.getLogger()

    if logger.hasHandlers():
        return

    # --- Logging-Level einstellen ---
    # Mögliche Levels: DEBUG, INFO, WARNING, ERROR, CRITICAL
    logger.setLevel(logging.INFO)
    
    # --- Formatter erstellen ---
    # Definiert das Layout der Log-Nachrichten.
    formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')

    # --- Handler erstellen und dem Logger hinzufügen ---

    # 1. RotatingFileHandler (immer aktiv)
    file_handler = RotatingFileHandler(
        log_file,
        maxBytes=max_log_size,
        backupCount=backup_count,
        encoding='utf-8'
    )
    file_handler.setFormatter(formatter)
    logger.addHandler(file_handler)

    # 2. StreamHandler für Konsolen-Ausgabe (optional)
    if console_logging:
        console_handler = logging.StreamHandler()
        console_handler.setFormatter(formatter)
        logger.addHandler(console_handler)

    # --- Weitere Referenzen und alternative Handler ---
    # (Ausführliche Kommentare sind in der Datei enthalten, hier gekürzt)

sync.py angepasst

Zweck: Importiert die setup_logging-Funktion und ruft sie ganz am Anfang des Skripts auf, um die Logging-Konfiguration zu initialisieren.

Relevanten Änderungen in /home/jonnybravo/Projekte/python_tests/rclone/sync.py:

from logging_config import setup_logging

# Logging so früh wie möglich einrichten
setup_logging() # Optional: setup_logging(console_logging=True) für Konsolen-Logs

from rclone_python import rclone as rc
from rclone_python.utils import RcloneException
import os
import logging
# ... (restlicher Code)

2. DNS-Konfiguration auf dem Manjaro-System

Um den AdGuard Home-Server 10.50.0.3 als primären DNS-Server für das gesamte System und alle Verbindungen zu nutzen, wurden folgende Schritte durchgeführt:

Globale systemd-resolved Konfiguration

Zweck: Setzt 10.50.0.3 als systemweiten DNS-Server für systemd-resolved.

Änderungen in /etc/systemd/resolved.conf:

[Resolve]
DNS=10.50.0.3
# FallbackDNS=  # Auskommentieren oder auf FallbackDNS= setzen, um Fallback zu verhindern

Nach der Bearbeitung: sudo systemctl restart systemd-resolved

NetworkManager Überschreibung für alle Verbindungen

Zweck: Weist NetworkManager an, bei allen Netzwerkverbindungen (bestehende und neue) den vom DHCP-Server angebotenen DNS zu ignorieren. Dadurch wird der globale DNS von systemd-resolved verwendet.

Neue Datei erstellt: /etc/NetworkManager/conf.d/99-global-dns-override.conf

[connection]
# Diese Einstellung gilt für alle neuen und bestehenden Verbindungen.
# Sie weist NetworkManager an, den DNS-Server vom DHCP zu ignorieren.
ipv4.ignore-auto-dns=true
ipv6.ignore-auto-dns=true

Nach der Erstellung: sudo systemctl restart NetworkManager

Anpassung des spezifischen WLAN-Profils (SweetHome-5G)

Zweck: Hinzufügen der DNS-Suchdomäne, damit lokale Hostnamen ohne vollen Domain-Namen aufgelöst werden können.

Befehle für die Kommandozeile (nmcli): (Ersetzen Sie "Ihr Verbindungsname" durch den tatsächlichen Namen, z.B. "SweetHome-5G")

nmcli connection modify "Ihr Verbindungsname" ipv4.dns-search "speedport.ip"
# optional für IPv6: nmcli connection modify "Ihr Verbindungsname" ipv6.dns-search "speedport.ip"
nmcli connection up "Ihr Verbindungsname"

3. AdGuard Home Konfiguration

Installation & SSL-Einrichtung

Zweck: Installation von AdGuard Home auf einem Linux-Server und Absicherung der Weboberfläche mit einem selbstsignierten SSL-Zertifikat und eigener CA.

Schritte (ausführlich in vorherigen Antworten beschrieben):

  1. AdGuard Home installieren (curl ... install.sh).
  2. Eigene CA (MyCA.key, MyCA.pem) und Server-Zertifikat (adguard.key, adguard.crt) mit openssl erstellen, inklusive SAN-Erweiterung für IP-Adresse/lokalen Hostnamen.
  3. Zertifikate in AdGuard Home (adguard.crt, adguard.key) unter Einstellungen → Verschlüsselungseinstellungen konfigurieren.
  4. MyCA.pem auf Client-Geräten als vertrauenswürdige Stammzertifizierungsstelle installieren.

Bedingte Weiterleitung für lokale Namen

Zweck: Ermöglicht AdGuard Home die Auflösung lokaler Hostnamen durch Weiterleitung an den Router.

Konfiguration in der AdGuard Home Weboberfläche:

  1. Gehen Sie zu Einstellungen → DNS-Einstellungen.
  2. Im Abschnitt "Upstream-DNS-Server" die folgende Zeile hinzufügen (zusätzlich zu öffentlichen DNS-Servern):
    [/speedport.ip/]192.168.50.1
    
  3. Einstellungen speichern.

4. Problembehebung WireGuard DNS

Zweck: Behebung des Konflikts, bei dem WireGuard die DNS-Einstellungen überschrieben und auf einen nicht existierenden Server (10.50.0.3 ohne installierten DNS-Dienst) gezeigt hat.

Änderung in der WireGuard-Konfigurationsdatei:

  • In /etc/wireguard/wg0.conf (im Abschnitt [Interface]) die Zeile DNS = 10.50.0.3 auskommentieren oder auf einen anderen DNS-Server ändern.
    [Interface]
    # DNS = 10.50.0.3
    
  • WireGuard neu starten: sudo systemctl restart wg-quick@wg0 (oder sudo wg-quick down wg0 && sudo wg-quick up wg0).