UniFi

Zugriff auf Modem hinter USG (Router)

Es kursieren im Netz einige verschiedene Lösungen, um es zu ermöglichen, ein Modem anzusprechen, das vor dem Router hängt. In diesem Fall ist der Router ein UniFi Security Gateway (USG). Ich stand vor demselben Problem und habe letztlich eine Lösung gefunden, die ich sehr elegant finde. 

Viele Vorschläge basieren darauf, eine Route zwischen USG und Modem, in diesem Fall einem Draytek Vigor 165 (Vigor) einzurichten. Dazu müssen Einstellungen an beiden Geräten vorgenommen werden. Zum Einen muss eine Route vom USG zum Vigor eingerichtet werden, zum Anderen eine Route zurück vom Vigor zum USG. Oftmals war es auch so, dass die Route vom USG zum Modem nur temporär war, und nach einem Neustart des USG zuerst per SSH wieder eingerichtet werden musste. Die hier beschriebene Lösung ist dauerhaft und eine Konfiguration erfolgt nur auf der Seite des USG. Vor allem aber, kann sie universell für jedes Gerät genutzt werden und ist nicht auf den Vigor beschränkt. Wichtig ist nur, dass die IP-Einstellungen entsprechend passen.

Um Zugriff auf ein Modem zu bekommen, welches sich außerhalb des eigentlichen LAN Netzwerkes befindet, wird auf dem WAN-Port des USG eine virtuelle Schnittstelle eingerichtet. Wichtig ist, dass für die virtuelle Schnittstelle der WAN-Port benutzt wird, denn genau dieser Port stellt ja die Verbindung zum Modem her. Die virtuelle Schnittstelle erstellt quasi ein „Mini-LAN“ über das Modem und USG kommunizieren können. Da das USG sowohl das eigentliche LAN-Netzwerk, als auch das Mini-LAN kennt, weiß es auch, wie es den Datenverkehr zwischen beiden Netzwerken verteilen muss. Es fehlt nur eine Sache: Das Modem weiß nicht, wie es über das Mini-LAN mit dem USG kommunizieren kann. Die oft beschrieben Lösung: auf dem Modem wird eine statische Route zum USG einrichtet. Aber wie wäre es denn, wenn wir das USG so einrichten, dass das Modem gar nicht wissen muss, wie es mit dem USG kommunizieren kann? Richtig, zum Einen müssen wir die Konfiguration dann nur auf einer Seite vornehmen, nämlich auf Seite des USG und zum anderen würde diese Lösung auch funktionieren, wenn man am Modem selbst keine statische Route zurück auf’s USG einrichten kann (wie es bei manchen Modellen der Fall ist).

Grundlegendes:

Der Adressbereich des eigentlichen LAN-Netzwerks und das Netzwerk des Modem’s müssen sich unterscheiden, jedoch im gleichen Subnet liegen. Außerdem brauchen wir eine IP-Adresse, die das USG im Adressbereich des Modem’s einnimmt.

UmgebungAddressbereich
Heimnetzwerk: (UniFi)192.168.1.1/24
DrayTek Vigor192.168.2.1/24
IP-Adresse des USG im Adressbereich des Modems:192.168.2.100

1. Konfigurationsdatei anlegen

Um zu erreichen, dass die Einstellungen permanent sind, musst du eine Konfigurationsdatei erzeugen. Dies klingt schwieriger als es tatsächlich ist. Eine offizielle Anleitung von ubnt findest du hier. Lass uns nun die Konfigurationsdatei erzeugen. Öffne dazu einen Texteditor deiner Wahl und kopiere folgende Zeilen: (du musst gerade noch nicht verstehen was das bedeutet, ich erkläre es dir gleich).

{
    "interfaces": {
        "pseudo-ethernet": {
            "peth0": {
                "address": ["192.168.2.100/24"],
                "description": "Zugriff auf Modem",
                "link": ["eth0"]
            }
        }
    },
    "service": {
        "nat": {
            "rule": {
                "5000": {
                    "destination": {
                        "address": ["192.168.2.1"]
                    },
                    "outbound-interface": ["peth0"],
                    "type": "masquerade"
                }
            }
        }
    }
}

Speichere diese Datei irgendwo auf deiner Festplatte (Hauptsache du findest sie nachher wieder) als config.gateway.json ab. Achte darauf, dass die Datei auch wirklich die Dateiendung .json hat.

1.1 Parameter anpassen

Der erste Teil der Konfigurationsdatei beschreibt das Pseudo-Mini-LAN am WAN-Port. Passe die folgenden Parameter an deine Bedürfnisse an:

{
    "interfaces": {
        "pseudo-ethernet": {
            "peth0": {
                "address": ["192.168.2.100/24"],
                "description": "Zugriff auf Modem",
                "link": ["eth0"]
            }
        }
    }
}
ParameterWert
„address“hier kommt die IP-Adresse rein, die das USG später im Adressbereich deines Modems hat. Im Beispiel hat das Modem die Adresse 192.168.2.1. Ich habe mir irgendeine freie Adresse in diesem Adressbereich gesucht, hier im Beispiel: 192.168.2.100
„description“Eine Beschreibung des Pseudo-Mini-LAN’s.
„link“Hier wird definiert, auf welchem Port am USG das Mini-LAN erzeugt wird.
„eth0“ ist der Name für den primären WAN-Port auf dem USG. Wenn du WAN2 oder den USG Pro verwendest, dann wird es wahrscheinlich anders sein. Per SSH Verbindung auf’s Gateway und dem Befehl „show interfaces“  kannst du sehen auf welchem Interface die Verbindung zum Modem läuft.

1.2 Etwas Magie

Wir könnten nun im Modem eine statische Route einrichten, damit das Modem weiß, wie es im Pseudo-Mini-LAN mit dem USG sprechen kann. Aber wie weiter oben schon beschrieben, soll das Modem gar nichts vom Mini-LAN wissen! Deshalb sagen wir dem USG, dass Pakete so maskiert werden sollen, dass sie den Anschein haben von einer Netzwerkschnittstelle des USG zu kommen und nicht von einer IP-Adresse. Das Modem muss also nichts über unser Pseudo-Mini-LAN wissen und die Konfiguration erfolgt nur an einer Stelle (am USG). Coole Geschichte. Genau dieses Maskieren der Pakete beschreibt der zweite Teil der Konfigurationsdatei

{
    "service": {
        "nat": {
            "rule": {
                "5000": {
                    "destination": {
                        "address": ["192.168.2.1"]
                    },
                    "outbound-interface": ["peth0"],
                    "type": "masquerade"
                }
            }
        }
    }
}
ParameterWert
„address“hier kommt die IP-Adresse des Modems rein. Hier im Beispiel die 192.168.2.1

2. Die Konfigurationsdatei übertragen und aktivieren

2.1 SFTP Verbindung herstellen und Konfigurationsdatei übertragen

Du hast nun eine fertige Konfigurationsdatei. Lass sie uns nun auf den UniFi Controller übertragen und aktivieren. Dazu müssen wir eine sftp Verbindung zu unserem Controller herstellen. Zum Beispiel kannst du dazu FileZilla verwenden. Die Server Adresse ist sftp://die-ip-des-unifi-controllers Benutzername und Passwort hast du in der Regel beim Einrichten des Controllers festgelegt. Der Port ist 22.

Verbindung zu UniFi Controller

Nachdem du die Verbindung aufgebaut hast (eventuell musst du ein Zertifikat bestätigen), navigierst du in folgendes Verzeichnis (1) und überträgst deine Konfigurationsdatei (2):

Verzeichnis der Konfigurationsdatei

Pfade für die Datei config.gateway.json

UmgebungPfadPfad getestet?
Unifi Controller/srv/unifi/data/sites/<site>ja
Auf einem Windows SystemC:\Users\%username%\Ubiquiti UniFi\data\sites\<site>ja
Auf einem Raspberry Pi (siehe auch Kapitel 2.1.1)/var/lib/unifi/sites/<site>ja

*Falls du diesen Dateipfad bei dir einsetzt und bestätigen kannst, dass er richtig ist, dann lass mich das in einem Kommentar wissen, sodass ich die Tabelle anpassen kann. Danke dir.

2.1.1 Raspberry Pi

Ich habe das hier aus den Kommentaren übernommen (Danke Jens)

Beim Raspberry PI als Controller einfach mit WIN-SCP die angepasste config.gateway.json ins Homeverzeichnis (/home/pi/) kopieren und dann mit Putty auf dem PI einloggen. Mit den folgenden Schritten wird die Datei dann ins richtige Verzeichins kopiert. Das Unifi-Verzeichnis ist gesperrt, also als Superuser arbeiten.

  1. sudo su
  2. cd /home/pi
  3. cp config.gateway.json /var/lib/unifi/sites/default/
  4. exit

Dann wie beschrieben provisionieren und mit der Modem-IP (bei mir FritzBox 7430 für Amazon-60€, die 7362SL ebay-20€ läuft als Telefonzentrale) zugreifen.

2.2 Eigentümer der Datei muss ggf. angepasst werden

Die config.gateway.json muss als Besitzerund Gruppenberechtigung unifi:unifi haben. Um das zu verifizieren muss eine ssh Verbindung mit dem Tool eurer Wahl, z.B. Putty erfolgen. Danach navigiert ihr in das Verzeichnis der config.gateway.json und führt den Befehl ls -l aus. Sollte nun etwas anderes wie unifi:unifi dort stehen, dann führt ihr den Befehl chown unifi:unifi config.gateway.json aus um die Besitzer und Gruppenrechte anzupassen.

2.3 Konfigurationsdatei am USG bereitstellen (aktivieren)

Als letzten Schritt musst du nun die Konfiguration noch Bereitstellen (provision). Dazu wählst du im UniFi Controller dein USG aus (1), selektierst den Reiter „Config“ (2) und stellst die Konfiguration bereit (3: provision)

Provisionieren

Bestätige nun, dass du das wirklich machen möchtest: Confirm (1)

10

3. Funktionalität prüfen

Nach dem die Bereitstellung fertig ist, solltest du nun dein Modem über den Browser deiner Wahl über die IP-Adresse des Modems (hier: 192.168.2.1) erreichen können.

2 thoughts on “Zugriff auf Modem hinter USG (Router)

  1. GUNT sagt:

    Welche Pfad muss man bei der Unifi Dream Machine nehmen?

    1. Alexander Grözinger sagt:

      Hi,
      leider gar nicht. Die Dream Maschine unterstützt keine Konfiguration per config.gateway.json Datei. Zumindest ist das mein aktueller Wissensstand.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

+ 56 = 60