blog.bartlweb - a technologist's external brain

Thema: Netzwerk

NAT Reflection in einer Double-NAT Konfiguration mit OpenWrt

Wenn das vom Internetservice-Provider bereitgestellte Modem keinen Bridge-Modus unterstützt, lässt sich ein eigener Router nur im DMZ betreiben. Dabei erfolgt allerdings bereits ein NAT und der dahinterliegende Router bekommt keine öffentliche IP-Adresse mehr zugewiesen. Damit NAT Reflection im internen Netzwerk funktioniert, d.h. die externe IP-Adresse des eigenen WAN-Anschlusses auch aus dem eigenen Netzwerk erreichbar ist, muss der interne Router die öffentliche IP kennen, um entsprechende Port-Forwarding-Regeln anlegen zu können.

Lösung 1

OpenWrt erstellt zu allen angelegten Portforwarding-Regeln für jedes WAN-Interface automatisch die notwendigen Firewall-Regeln für NAT Reflection. Eine Lösung NAT Reflection für die öffentliche IP-Adresse bei einer doppelten NAT-Konfiguration zu ermöglichen ist daher am zweiten Router ein virtuelles Interface anzulegen, dem die öffentliche IP-Adresse zugewiesen wird.

Probleme mit zwei Netzwerkkarten beim Betrieb im selben Netzwerk unter Windows

Ein Serversystem, das gleichzeitig sowohl Dienste als auch Netzwerkfreigaben bereitstellt, kommt bei hohen Zugriffszahlen schnell einmal in einen Engpass bei der Anbindung ans lokale Netzwerk. Es würde sich doch anbieten eine Netzwerkkarte für Zugriffe auf Dateifreigaben und eine Netzwerkkarte für Zugriffe auf Serverdienste in den Rechner einzubauen und die Dienste an die entsprechenden Karten bzw. IP-Adressen der Karten zu binden.

Die Idee scheint schlüssig, nur verhält sich Windows ohne weitere Konfiguration mit zwei Netzwerkkarten nicht wie gedacht. Auch wenn nur eine Netzwerkkarte ein eingetragenes Gateway hat, kann es vorkommen, dass Windows Zugriffe auf den Server zwar über die Netzwerkkarte, welche die angesprochen IP-Adresse zugewiesen hat, entgegennimmt (Downstream) die Antwortpakete (Upstream) aber trotzdem über die andere Karte ins Netzwerk schickt.

Netzwerkgeschwindigkeit mit iperf messen

Wer zuverlässig und genau Übertragungsgeschwindigkeiten zwischen unterschiedlichen Geräten bzw. im Netzwerk, sowohl in lokalen Netzwerken als auch über eine Internetverbindung messen, will greift am besten auf das Open Source-Tool iperf zurück. Für eine Messung werden zwei Computer benötigt - gut das iperf sowohl unter Linux als auch MacOS und Windows läuft.

Testen

Um die Verbindungsgeschwindigkeit zu testen, muss das Tool auf einem Rechner im Servermodus laufen. Dazu wird das Tool unter Angabe des Ports gestartet. Ein definierter Port ist dann wichtig, wenn am Router entsprechende Port-Forwardings eingerichtet werden müssen.

Einschränkungen der Einstellung OpenInternet von Drei

Wer Internet von Drei nutzt, bekommt standardmäßig keine öffentliche IP-Adresse zugewiesen und das eigene Gerät/Modem ist auch nicht aus dem öffentlichen Internet erreichbar. Das ist für den Otto-normal-Verbraucher und Standardnutzungsszenarien positiv, da Angriffe auf das eigene Gerät dadurch erschwert werden, für Power-Nutzer die Serverdienste bereitstellen wollen oder Fernwartungsdienste nutzen aber lästig.

Um auch Nutzern mit erweiterten Ansprüchen genüge zu tun, hat Drei in seinem Online-Portal die Einstellungsmöglichkeit OpenInternet geschaffen. Wird diese Funktion aktiviert, ist das Gerät aus dem öffentlichen Internet erreichbar, aber mit einer gravierenden Einschränkung: Andere Drei-Internet-Nutzer können aufgrund von Client-Isolation nur dann auf das Gerät mit der aktivierten Einstellung OpenInternet zugreifen, wenn diese auch die Einstellung OpenInternet aktiviert haben. Und damit ist jeder andere unbedarfte Otto-normal-Nutzer vom Zugriff auf das eigene Angebot ausgeschlossen.

Server-Notfallwartung mittels IPMI über Webinterface auf OpenWrt-Router

Mein Server läuft und läuft, außer ich bin gerade nicht zu Hause, dann hängt er sich aus unerklärlichen Gründen ab und zu auf. Zuverlässiger im Dauerbetrieb ist da schon mein OpenWrt-Router. Darum nutze ich diesen, um dort ein zusätzliches Webinterface für das Absetzen eines IPMI-Befehls zum Neustart des Servers (siehe: Server über IPMI mithilfe von ipmitool fernsteuern), laufen zu lassen. Dazu habe ich unter OpenWrt PHP installiert und einen zusätzlichen Host inkl. Passwortschutz im Webserver eingerichtet, sowie ein kleines PHP-Skript erstellt.

uhttpd konfigurieren

Umstellen des Zugriffs auf HTTPS

Zunächst habe ich uhttpd um die Fähigkeit von SSL-gesicherten Verbindungen mittels HTTPS erweitert und dabei auch gleich den Zugriff auf das Konfigurationsinterface (Luci) auf HTTPS umgestellt.

Backups auf Apple Time Capsule löschen

Per Finder lassen sich zwar die einzelnen Backups (.sparsebundle-Dateien) auf einem Time Capsule anzeigen aber leider nur selten löschen. Problem beim Löschen über den Finder sind die zick Tausenden Dateien die im Backup enthalten sind. Das folgende kleine Skript für die Konsole löscht diese Dateien einzelnen und ermöglicht somit das Löschen des gesamten Backups.

Verbinden Sie sich über den Finder auf ihr Time Capsule und führen Sie danach den folgenden Befehl über die Konsole aus.

for i in {0..1000000}; do rm -rv /Volumes/<timecapsule>/<backup>.sparsebundle/bands/$(printf "%x" $i); done 

Jetzt können Sie die .sparsebundle-Datei über den Finder löschen.

WLAN-Schalter für Netgear WNDR3700 in OpenWrt aktivieren

Um auf einem mit OpenWrt betriebenen Netgear WNDR3700 Router den WLAN-Schalter zum Leben zu erwecken ist ein kleiner Eingriff in die Konfiguration notwendig. Das folgende Skript ermöglicht es mittels Druck auf den WLAN-Schalter den WLAN-AccessPoint zu aktivieren bzw. zu deaktivieren (Achtung: der gesetzte Status ist auch nach dem Neustart des Routers noch aktiv).

Verbinden Sie sich per SSH auf den Router und erstellen Sie die Datei /sbin/wlantoggle mit folgendem Inhalt.

#!/bin/sh

case "$(uci get wireless.@wifi-iface[0].disabled)" in
        1)
                uci set "wireless.@wifi-iface[0].disabled=0"
                uci set "wireless.@wifi-iface[1].disabled=0"
                uci commit
                wifi
        ;;
        *)
                uci set "wireless.@wifi-iface[0].disabled=1"
                uci set "wireless.@wifi-iface[1].disabled=1"
                uci commit
                wifi
        ;;
esac

Port-Forwarding für PPTP auf OpenWrt einrichten

Um PPTP-Tunnel-Verbindungen vom Internet zu einem Server hinter einem mit OpenWrt betriebenen Router zu aktivieren, muss nicht nur die Port-Weiterleitung für den TCP-Port 1723 über die Weboberfläche eingerichtet sondern auch ein wenig Hintergrundarbeit geleistet werden.

Um die Funktion des Port-Forwardings für PPTP überhaupt zu ermöglichen müssen Sie zunächst das folgende Pakete installieren:

kmod-ipt-nathelper-extra

bzw. ab Version Chaos Calmer 15.05

kmod-nf-nathelper-extra

Dazu verbinden Sie sich per SSH mit dem Router und fügen die folgenden Zeilen zur Datei /etc/firewall.user hinzu. Ersetzen Sie dabei <IP-Adresse> durch Ihre interne IP des PPTP-Servers (ohne spitze Klammern).