3 min read

Nginx Proxy Manager und Pi-hole: Netzwerkumbau

In diesem Artikel geht es um den Rückbau des pfSENSE Projektes in meinem Heimnetzwerk und meine aktuell genutzte Technik.

Wie man unschwer an meinen bisherigen Artikeln erkennen konnte, nutzte ich pfSENSE und HAProxy als Reverse Proxy. Jedoch habe ich mich für einen Rückbau des pfSENSE Routers entschieden. Aktuell betreibe ich mein Heimnetzwerk (also Proxmox, TrueNAS und weitere private Geräte) nur hinter der FRITZ!Box, ohne eine zweite Firewall:

Hier eine Aufstellung der Aufgaben, die pfSENSE übernahm und mein Ersatz für diese:

pfSENSE Ersatz
Lokales DNS Pi-Hole lokales DNS
DHCP Fritz!Box
HAProxy Nginx Proxy Manager
ACME Certs Nginx Proxy Manager
pfBlockerNG Pi-Hole
VLANs -
Firewall -


Diese Tabelle zeigt, dass ich die am meisten genutzten Features von der pfSENSE mit Pi-Hole und Nginx Proxy Manager auffange. Meine Separierung des Netzwerks in zusätzliche VLANs (hauptsächlich zur Trennung von Smart Home Geräten und VMs genutzt) und die Firewall fällt jedoch weg. Nun aber der eigentliche Grund für die Umstellung:
Ich hatte in der pfSENSE kein IPv6 aktiviert. Die Fritz!Box habe ich dann vor wenigen Wochen entsprechend umkonfiguriert, aber auf der pfSENSE Firewall wollte IPv6 einfach nicht funktionieren. Und getreu des KISS-Prinzips habe ich mich dann entschieden, die Firewall zurückzubauen und auf die oben genannten Dienste zu wechseln.
Mir ist es nicht aufgefallen, dass ich IPv6 in 2022 komplett deaktiviert hatte. Ich hatte lediglich mit einem Dienst Probleme: ⁣
Ab und an funktionierte die Verbindung zur Seite von Komoot nicht. Es erschien ein Verbindungsfehler beim Aufrufen der Seite. Nach einigen Minuten und erneutem Neuladen konnte ich sie aber wieder erreichen. Für eine viel zu lange Zeit war mir nicht klar woran das Verhalten lag, heute ist klar: Der Load Balancer hat sowohl IPv4 als auch IPv6-Only Hosts, auf denen die Seite läuft. Zwischen diesen wurde ich dann dynamisch weiterverwiesen, was den spontanen Verbindungsverlust erklärt.

Nun gehe ich noch auf die beiden genutzten Projekte ein.

Nginx Proxy Manager

Hierzu ist eigentlich nicht viel zuzusagen, außer dass es direkt problemlos funktionierte.
Anfangs habe ich probiert ein ähnliches Setup wie auf meinem VPS einzurichten (Certbot + Nginx), dann entschied ich mich aber doch zu diesem Projekt, primär wegen der simplen Einrichtung:

version: "3"
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      # These ports are in format <host-port>:<container-port>
      - '80:80' # Public HTTP Port
      - '443:443' # Public HTTPS Port
      - '81:81' # Admin Web Port
      # Add any other Stream port you want to expose
      # - '21:21' # FTP

    # Uncomment the next line if you uncomment anything in the section
    # environment:
      # Uncomment this if you want to change the location of 
      # the SQLite DB file within the container
      # DB_SQLITE_FILE: "/data/database.sqlite"

      # Uncomment this if IPv6 is not enabled on your host
      # DISABLE_IPV6: 'true'

  watchtower:
    container_name: watchtower
    image: containrrr/watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - WATCHTOWER_SCHEDULE=0 15 12 * * *
      - WATCHTOWER_CLEANUP=true
      - TZ=Europe/Berlin
      - WATCHTOWER_NOTIFICATIONS=email
      - WATCHTOWER_NOTIFICATION_EMAIL_FROM=peterge98@mailbox.org
      - WATCHTOWER_NOTIFICATION_EMAIL_TO=mail@peterge.de
      - WATCHTOWER_NOTIFICATION_EMAIL_SERVER=smtp.mailbox.org
      - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=465
      - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=MAIL
      - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=PASSWORD
      - WATCHTOWER_NOTIFICATIONS_HOSTNAME=blog.peterge.de
      - WATCHTOWER_NOTIFICATION_EMAIL_SUBJECTTAG=remote
    restart: unless-stopped

    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
docker-compose.yml

Nach dem Start ist auf Port 81 die WebUI verfügbar, in der ich dann meine Proxy-Hosts, Access Lists, SSL Zertifikate und User angelegt habe.

Pi-Hole

Auch hier war das Setup unglaublich simpel. Lediglich dieser Command installiert die Software im LXC Container:
curl -sSL https://install.pi-hole.net | bash

Anschließend habe ich Pi-Hole als DNS in meiner Fritz!Box eingerichtet. Zusätzlich dazu habe ich noch im Webinterface Local DNS Records angelegt und alle Origins für DNS Anfragen erlaubt, da ich nicht vorhabe Pi-Hole zu exposen.
Als Upstream DNS nutze ich wie immer die empfohlenen DNS-Server von Mike Kuketz: https://www.kuketz-blog.de/empfehlungsecke/#dns

Update DNS Auflösung

Ein weiteres Problem war die Erreichbarkeit von lokal gehosteten Seiten im Heimnetzwerk.
Trotz dem Eintragen der Domains zur Deaktivierung des DNS Rebind Schutzes öffnet sich statt der lokal gehosteten Seite die Login-Seite des Routers öffnet. Dies war aber leicht lösbar, und zwar habe ich in Pi-Hole einfach zusätzliche DNS Records auf die lokale IP des Servers angelegt.

Update DHCP

Ich stieß auf ein Problem mit meiner verwendeten MTU nachdem ich Pi-Hole als DHCP für IPv4 und IPv6 verwendete, in den Gnome Network Settings stand diese auf automatic. Dadurch bin ich auf diverse Netzwerkprobleme im Alltag gestoßen, die ich nur sehr schwer in Verbindung mit meiner MTU bringen konnte, vor allem da mit ip a nicht die verwendete MTU der Gnome Network Settings anzeigt. Kurzfristig ließen sich die Probleme durch eine MTU von 1036 lösen.
Langfristig ließ das Problem sich lösen, in dem ich DHCPv4 von Pihole verwende, um die Namensauflösung zu Servern in meiner lokalen Domain zu erreichen und den DHCPv6 Server von der Fritz!Box verwende.

Außerdem diese beiden Links zum weiteren Troubleshooting:
http://icmpcheck6.popcount.org/
http://icmpcheck.popcount.org/

Update auto-upgrade

Außerdem habe ich noch eine Zeile mit 0 3 * * * "pihole -up" in der /etc/crontab meines Pi-Hole Hosts hinzugefügt um ein tägliches und automatisiertes Updaten sicherzustellen.


Das sind die relevanten, von mir getroffenen Änderungen an beiden gehosteten Diensten. Ich muss sagen, dass der Umbau besser geklappt hat als ich vorher angenommen habe, aber trotzdem viel Zeit für die Neueinrichtung gefressen hat und ich am Ende ein vergleichbares Setup zu vorher habe (+IPv6 ! :D).

Author: peterge