LoRaWAN-Gatewaysetup: Unterschied zwischen den Versionen

Aus Un-Hack-Bar
Zur Navigation springen Zur Suche springen
(Formatierung verbessert, PPP L2TP eingefügt)
 
(9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 13: Zeile 13:
 
'''Achtung: NOCH IN ARBEIT'''
 
'''Achtung: NOCH IN ARBEIT'''
  
Im Vorfeld mit dem Gastgeber klären ob wir für Remote-Management den SSH Port durch die Firewall weiterleiten dürfen (sehr zu bevorzugen). Außerdem wäre ein Dyndns Dienst hilfreich (aber nicht zwingend erforderlich). Außerdem sollten wir Port 1700 TCP und UDP an das Gateway weiterleiten (für den Downlink vom TTN zu den Nodes).
+
Im Vorfeld sollte mit dem Gastgeber für ein Node geklärt werden ob der Gastgeber selbst auch zuriff auf das Gateway haben möchte. Außerdem können ggfs. spezielle Wüsnche berücksichtig werden (zB. das Gateway als WLAN Access Point eingerichtet werden um damit das WLAN des Gastgebers zu erweitern). Alles was auf dieser Seite beschrieben ist, ist eine Default-Ausgangskonfig die für die viele Anwendungszwecke ausreicht bzw. nur minimale Änderungen erfordert um weitere Wünsche zu erfüllen.
  
Folgende Schritte sind auf den Gateways in den Verschiedenen Sektionen zu erledigen:
+
 
 +
 
 +
=== Nach dem ersten Booten/Factory Reset ===
 +
 
 +
In der Default Config nutzen die Gateways den Ethernetport als WAN Zugriff. Daher blockieren sie alle eingehenden Anfragen auf diesem Interface. Um das zu ändern muss man sich mit dem entsprechenden "Mikrotik XXXX" Wifi verbinden (kein Kennwort) und auf die Seite http://192.168.88.1 gehen. Von dort aus dann:
 +
 
 +
# '''WebFig''' auswählen ''(oben rechts)''
 +
# Auf '''IP -> Addresses''' gehen und dort die IP für eth1 notieren
 +
# '''Interfaces -> Interface-List''' <br \> Dort nun auf das Interface eth1 klicken und auf "LAN" umstellen.
 +
# Anschließend erlaubt das Gateway Zugriffe auf das Webinterface über die per DHCP erhaltene Adresse (siehe Punkt 2 oben)
 +
 
 +
Folgende Schritte kann man nun per direkt im Netz des Gastgebers auf auf dem Gateway erledigen. Dazu gibt es div. Punkte in den unterschiedlichen Sektionen zu erledigen:
  
 
=== Interfaces ===
 
=== Interfaces ===
Zeile 43: Zeile 54:
 
| IPsec Secret  || ''SUPERGEHEIM^2'' || ''Wieder siehe Space-Router<br \>Findet sich auch im UNHB-Keepass
 
| IPsec Secret  || ''SUPERGEHEIM^2'' || ''Wieder siehe Space-Router<br \>Findet sich auch im UNHB-Keepass
 
|}
 
|}
 +
 +
Als Terminal Kommandos:
 +
 +
  /interface l2tp-client add connect-to=router.unhb.de max-mru=1450 max-mtu=1450 user=lorawan-gwXX password=SUPERGEHEIM use-ipsec=yes ipsec-secret=SUPERDUPERGEHEIM  disabled=no name=l2tp-out1
  
 
=== System ===
 
=== System ===
Zeile 54: Zeile 69:
  
 
Kennwörter für "unhb" und "admin" im UNHB Keepass speichern!
 
Kennwörter für "unhb" und "admin" im UNHB Keepass speichern!
 +
 +
Als Terminal Kommandos:
 +
 +
  /user disable admin
 +
  /user add name=unhb copy-from=admin password=AUCHSUPERGEHEIM
  
 
==== Packages ====
 
==== Packages ====
 
* IPv6 Paket aktivieren
 
* IPv6 Paket aktivieren
 +
 +
Als Terminal Kommando:
 +
 +
  /system package enable ipv6
  
 
==== Scheduler ====
 
==== Scheduler ====
Zeile 80: Zeile 104:
 
|}
 
|}
  
   name="Auto Update"
+
Als Terminal Kommando:
  start-date=jul/01/2021
+
 
  start-time=startup
+
   /system scheduler add name="Auto Update" start-date=jul/01/2021 start-time=startup interval=12h policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon on-event="/system package update:check-for-updates once:delay 3s;:if ( [get status] = \"New version is available\") do={ install }"
  interval=12h
+
 
  on-event=/system package update\ncheck-for-updates once\n:delay 3s;\n:if ( [get status] = "New version is available") do={ install }
+
==== Identity ====
   policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon
+
Als Terminal Kommando:
 +
 
 +
   /system identity set name="unhb-de-gwXX-XXX-unhb"
  
 
=== IP ===
 
=== IP ===
Zeile 112: Zeile 138:
 
|}
 
|}
  
  interface=bridge
+
Als Terminal Kommando:
   add-default-route=yes
+
 
  use-peer-dns=yes
+
   /ip dhcp-client add interface=wlan1 use-peer-dns=yes use-peer-ntp=yes add-default-route=yes dhcp-options=hostname,clientid
  use-peer-ntp=yes
 
  dhcp-options=hostname,clientid  
 
  
 
==== DNS ====
 
==== DNS ====
 
* Allow Remote Requests: Deaktivieren
 
* Allow Remote Requests: Deaktivieren
  
 +
Als Terminal Kommando:
 +
 +
  /ip dns set allow-remote-requests=no
  
 
==== Services ====
 
==== Services ====
Zeile 131: Zeile 158:
 
* www: Aktivieren (je nach Absprache mit Standort-Sponsor)
 
* www: Aktivieren (je nach Absprache mit Standort-Sponsor)
 
* ssh: Aktivieren
 
* ssh: Aktivieren
 +
 +
Als Terminal Kommando:
 +
 +
  /ip service disable api,api-ss,ftp,telnet,winbox,www-ssl
 +
 +
==== Firewall ====
 +
 +
Als Terminal Kommando:
 +
 +
  /ip firewall filter add chain=input in-interface=all-ppp action=accept comment="Allow any traffic via VPN"
 +
  /ip firewall filter move 12 5
  
 
=== IPv6 ===
 
=== IPv6 ===
 
Da IPv6 sich überwiegend selbst konfiguriert brauchen wir nur wenige Einstellungen.
 
Da IPv6 sich überwiegend selbst konfiguriert brauchen wir nur wenige Einstellungen.
 +
 
==== Settings ====
 
==== Settings ====
 
* IPv6 Forward: Aktivieren
 
* IPv6 Forward: Aktivieren
 
* Accept Redirekt: Aktivieren
 
* Accept Redirekt: Aktivieren
 
* Accept Router Advertisments: "yes"
 
* Accept Router Advertisments: "yes"
 +
 +
Als Terminal Kommando:
 +
 +
  /ipv6 settings set forward=yes accept-redirects=yes accept-router-advertisements=yes
  
 
=== LoRa ===
 
=== LoRa ===
Zeile 153: Zeile 196:
 
|Down port:    || 1700 ||
 
|Down port:    || 1700 ||
 
|}
 
|}
 +
 +
Als Terminal Kommando:
 +
 +
  /lora servers add name="TTN v3" address=eu1.cloud.thethings.network up-port=1700 down-port=1700
  
 
==== Device ====
 
==== Device ====
Zeile 170: Zeile 217:
 
| Spoof GPS: || ''entsprechend des Standortes eintragen'' || ''kann man alternativ auch in der TTN Console fix eingetragen''
 
| Spoof GPS: || ''entsprechend des Standortes eintragen'' || ''kann man alternativ auch in der TTN Console fix eingetragen''
 
|}
 
|}
 +
 +
Als Terminal Kommando:
 +
 +
  /lora disable numbers=0
 +
  /lora print      # hardware-id ist die Gateway ID
 +
  /lora set name="unhb-de-gw16-ltap-unhb" gateway-id="3133303723005B00" servers="TTN v3" channel-plan=eu-868 forward=crc-valid disabled=no numbers=0
 +
 +
=== Alle Terminal Befehle zusammen ===
 +
  /user add name=unhb copy-from=admin password=AUCHSUPERGEHEIM
 +
 +
  /interface l2tp-client add connect-to=router.unhb.de max-mru=1450 max-mtu=1450 user=lorawan-gwXX password=SUPERGEHEIM use-ipsec=yes ipsec-secret=SUPERDUPERGEHEIM  disabled=no name=l2tp-out1
 +
 +
  /system package enable ipv6
 +
  /system identity set name="unhb-de-gwXX-XXX-unhb"
 +
  /system scheduler add name="Auto Update" start-date=jul/01/2021 start-time=startup interval=12h policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon on-event="/system package update:check-for-updates once:delay 3s;:if ( [get status] = \"New version is available\") do={ install }"
 +
 +
  /ip dhcp-client add interface=wlan1 use-peer-dns=yes use-peer-ntp=yes add-default-route=yes dhcp-options=hostname,clientid
 +
  /ip dns set allow-remote-requests=no
 +
  /ip service disable api,api-ss,ftp,telnet,winbox,www-ssl
 +
  /ip firewall filter add chain=input in-interface=all-ppp action=accept comment="Allow any traffic via VPN"
 +
  /ip firewall filter move 12 5
 +
 +
  /lora servers add name="TTN v3" address=eu1.cloud.thethings.network up-port=1700 down-port=1700
 +
  /lora disable numbers=0
 +
  /lora print      # hardware-id ist die Gateway ID
 +
  /lora set name="unhb-de-gwXX-XXXX-unhb" gateway-id="3133303723005B00" servers="TTN v3" channel-plan=eu-868 forward=crc-valid disabled=no numbers=0
 +
 +
Update via Terminal:
 +
 +
  /system package update; check-for-updates once; :delay 3s; :if ( [get status] = "New version is available") do={ install }
 +
 +
Nach dem Reboot:
 +
 +
  /ipv6 settings set forward=yes accept-redirects=yes accept-router-advertisements=yes
 +
  /user disable admin    # Achtung: Danach wir man aus der laufenden Session geworfen und man muss sich neu mit unhb anmelden
  
 
== automatisiertes Setup ==
 
== automatisiertes Setup ==
 
Noch offen
 
Noch offen

Aktuelle Version vom 25. August 2021, 07:17 Uhr

Allgemeines[Bearbeiten | | Quelltext bearbeiten]

Einrichtungsguide für die Gateways aus der Landesförderung

Da die Gateways kein Einfallstor in das Netz des Gastgebers sein sollen müssen die Gateways möglichst sicher konfiguriert werden (was im Grunde aber eh immer eine gute Idee ist...).

Es gibt aktuell 2 Ansätze zur Konfiguration:

  1. Manuell per Hand
  2. Automatisiert mit Ansible/flashfig

manuelles Setup[Bearbeiten | | Quelltext bearbeiten]

Achtung: NOCH IN ARBEIT

Im Vorfeld sollte mit dem Gastgeber für ein Node geklärt werden ob der Gastgeber selbst auch zuriff auf das Gateway haben möchte. Außerdem können ggfs. spezielle Wüsnche berücksichtig werden (zB. das Gateway als WLAN Access Point eingerichtet werden um damit das WLAN des Gastgebers zu erweitern). Alles was auf dieser Seite beschrieben ist, ist eine Default-Ausgangskonfig die für die viele Anwendungszwecke ausreicht bzw. nur minimale Änderungen erfordert um weitere Wünsche zu erfüllen.


Nach dem ersten Booten/Factory Reset[Bearbeiten | | Quelltext bearbeiten]

In der Default Config nutzen die Gateways den Ethernetport als WAN Zugriff. Daher blockieren sie alle eingehenden Anfragen auf diesem Interface. Um das zu ändern muss man sich mit dem entsprechenden "Mikrotik XXXX" Wifi verbinden (kein Kennwort) und auf die Seite http://192.168.88.1 gehen. Von dort aus dann:

  1. WebFig auswählen (oben rechts)
  2. Auf IP -> Addresses gehen und dort die IP für eth1 notieren
  3. Interfaces -> Interface-List
    Dort nun auf das Interface eth1 klicken und auf "LAN" umstellen.
  4. Anschließend erlaubt das Gateway Zugriffe auf das Webinterface über die per DHCP erhaltene Adresse (siehe Punkt 2 oben)

Folgende Schritte kann man nun per direkt im Netz des Gastgebers auf auf dem Gateway erledigen. Dazu gibt es div. Punkte in den unterschiedlichen Sektionen zu erledigen:

Interfaces[Bearbeiten | | Quelltext bearbeiten]

  • (ggfs.) lte1: Deaktivieren
  • (ggfs.) wlan1: Deaktivieren

PPP[Bearbeiten | | Quelltext bearbeiten]

Hier legen wir die Verbindung zum Space-Router via L2TP an.

Add New, L2TP Client

Name: l2tp-out1 (Kann frei gewählt werden)
Max MTU 1450
Max MRU 1450
Connect to: router.unhb.space
User: z.B. lorwan-gw01 Entsprechend den Usern unter PPP->Secrets auf dem Space-Router
Siehe auch UNHB-Keepass
Password SUPERGEHEIM Ebenfalls entsprechend den USern unter PPP->Secrets auf dem Space Router
Siehe auch UNHB-Keepass
Use IPsec Yes
IPsec Secret SUPERGEHEIM^2 Wieder siehe Space-Router
Findet sich auch im UNHB-Keepass

Als Terminal Kommandos:

 /interface l2tp-client add connect-to=router.unhb.de max-mru=1450 max-mtu=1450 user=lorawan-gwXX password=SUPERGEHEIM use-ipsec=yes ipsec-secret=SUPERDUPERGEHEIM  disabled=no name=l2tp-out1

System[Bearbeiten | | Quelltext bearbeiten]

Im System Abschnitt müssen vor allem weitere User angelegt werden sowie IPv6 aktiviert werden.

User[Bearbeiten | | Quelltext bearbeiten]

  1. Sichers Passwort für den User "admin" anlegen und im Anschluss sperren
  2. Neuen User "unhb" mit Admin-Rechten und sicheren Passwort anlegen
  3. (Optional): User für den Gastgeber mit sicheren Passwort anlegen und Zugangsdaten rausgeben

Kennwörter für "unhb" und "admin" im UNHB Keepass speichern!

Als Terminal Kommandos:

 /user disable admin
 /user add name=unhb copy-from=admin password=AUCHSUPERGEHEIM

Packages[Bearbeiten | | Quelltext bearbeiten]

  • IPv6 Paket aktivieren

Als Terminal Kommando:

 /system package enable ipv6

Scheduler[Bearbeiten | | Quelltext bearbeiten]

Wir möchte automatisch Updates installieren lassen. Dazu legen wir einen entsprechend regelmässig ausgeführten Job an.

Add New

Name: Auto Update (Kann frei gewählt werden)
Start Date: jul/01/2021
Start Time "startup"
Interval 12:00:00 Wir prüfen also 2x am Tag
Policy ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon
On Event /system package update
check-for-updates once
:delay 3s;
:if ( [get status] = "New version is available") do={ install }

Als Terminal Kommando:

 /system scheduler add name="Auto Update" start-date=jul/01/2021 start-time=startup interval=12h policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon on-event="/system package update:check-for-updates once:delay 3s;:if ( [get status] = \"New version is available\") do={ install }"

Identity[Bearbeiten | | Quelltext bearbeiten]

Als Terminal Kommando:

 /system identity set name="unhb-de-gwXX-XXX-unhb"

IP[Bearbeiten | | Quelltext bearbeiten]

Addresses[Bearbeiten | | Quelltext bearbeiten]

  • Link Local IP im Keepass speichern

Ist evtl. später zur Fernwartung mal hilfreich.

DHCP Client[Bearbeiten | | Quelltext bearbeiten]

In der Default-Konfig haben die LoRaWAN Gateways kein DHCP-Client aktiviert. Für gewöhnlich werden die Standorte aber wohl einen Router mit eingebauten DHCP-Server verwenden. Daher konfigurieren wir nun die automatische Adresskonfiguration.

Add New mit folgenden Parametern:

Interface: bridge
Add Default Route: Yes
Use Peer DNS Yes
Use Peer NTP Yes
DHCP Options hostname,clientid

Als Terminal Kommando:

 /ip dhcp-client add interface=wlan1 use-peer-dns=yes use-peer-ntp=yes add-default-route=yes dhcp-options=hostname,clientid

DNS[Bearbeiten | | Quelltext bearbeiten]

  • Allow Remote Requests: Deaktivieren

Als Terminal Kommando:

 /ip dns set allow-remote-requests=no

Services[Bearbeiten | | Quelltext bearbeiten]

  • API: Deaktivieren
  • API-SSL: Deaktivieren
  • FTP: Deaktivieren
  • telnet: Deaktivieren
  • winbox: Deaktivieren
  • www-ssl: Deaktivieren (je nach Absprache mit Standort-Sponsor)
  • www: Aktivieren (je nach Absprache mit Standort-Sponsor)
  • ssh: Aktivieren

Als Terminal Kommando:

 /ip service disable api,api-ss,ftp,telnet,winbox,www-ssl

Firewall[Bearbeiten | | Quelltext bearbeiten]

Als Terminal Kommando:

 /ip firewall filter add chain=input in-interface=all-ppp action=accept comment="Allow any traffic via VPN"
 /ip firewall filter move 12 5

IPv6[Bearbeiten | | Quelltext bearbeiten]

Da IPv6 sich überwiegend selbst konfiguriert brauchen wir nur wenige Einstellungen.

Settings[Bearbeiten | | Quelltext bearbeiten]

  • IPv6 Forward: Aktivieren
  • Accept Redirekt: Aktivieren
  • Accept Router Advertisments: "yes"

Als Terminal Kommando:

 /ipv6 settings set forward=yes accept-redirects=yes accept-router-advertisements=yes

LoRa[Bearbeiten | | Quelltext bearbeiten]

In diesem Abschnitt wird die Verbindung zum The Things Network eingerichtet. Dabei gibt es alles in allem nicht viel zu tun.

Servers[Bearbeiten | | Quelltext bearbeiten]

Add New

Name: TTN v3 (Kann beliebig verwendet werden)
Address: eu1.cloud.thethings.network
Up port: 1700
Down port: 1700

Als Terminal Kommando:

 /lora servers add name="TTN v3" address=eu1.cloud.thethings.network up-port=1700 down-port=1700

Device[Bearbeiten | | Quelltext bearbeiten]

Gerät konfigurieren

Name: z.B. unhb-de-gw10-ltap-unhb Entsprechend Namensschema
Gateway ID: Wie Hardware ID Muss auch in der TTN Console eingetragen werden
Network Server: "TTN v3"
Channel plan: "EU 868"
Forward: "Valid" Pakete die nicht "valid" sind werden vom TTN Netzwerk verworfen.
Das können wir auch lokal erledigen und damit die TTN Server entlasten
Spoof GPS: entsprechend des Standortes eintragen kann man alternativ auch in der TTN Console fix eingetragen

Als Terminal Kommando:

 /lora disable numbers=0
 /lora print       # hardware-id ist die Gateway ID
 /lora set name="unhb-de-gw16-ltap-unhb" gateway-id="3133303723005B00" servers="TTN v3" channel-plan=eu-868 forward=crc-valid disabled=no numbers=0

Alle Terminal Befehle zusammen[Bearbeiten | | Quelltext bearbeiten]

 /user add name=unhb copy-from=admin password=AUCHSUPERGEHEIM
 /interface l2tp-client add connect-to=router.unhb.de max-mru=1450 max-mtu=1450 user=lorawan-gwXX password=SUPERGEHEIM use-ipsec=yes ipsec-secret=SUPERDUPERGEHEIM  disabled=no name=l2tp-out1
 /system package enable ipv6
 /system identity set name="unhb-de-gwXX-XXX-unhb"
 /system scheduler add name="Auto Update" start-date=jul/01/2021 start-time=startup interval=12h policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon on-event="/system package update:check-for-updates once:delay 3s;:if ( [get status] = \"New version is available\") do={ install }"
 /ip dhcp-client add interface=wlan1 use-peer-dns=yes use-peer-ntp=yes add-default-route=yes dhcp-options=hostname,clientid
 /ip dns set allow-remote-requests=no
 /ip service disable api,api-ss,ftp,telnet,winbox,www-ssl
 /ip firewall filter add chain=input in-interface=all-ppp action=accept comment="Allow any traffic via VPN"
 /ip firewall filter move 12 5
 /lora servers add name="TTN v3" address=eu1.cloud.thethings.network up-port=1700 down-port=1700
 /lora disable numbers=0
 /lora print       # hardware-id ist die Gateway ID
 /lora set name="unhb-de-gwXX-XXXX-unhb" gateway-id="3133303723005B00" servers="TTN v3" channel-plan=eu-868 forward=crc-valid disabled=no numbers=0

Update via Terminal:

 /system package update; check-for-updates once; :delay 3s; :if ( [get status] = "New version is available") do={ install }

Nach dem Reboot:

 /ipv6 settings set forward=yes accept-redirects=yes accept-router-advertisements=yes
 /user disable admin    # Achtung: Danach wir man aus der laufenden Session geworfen und man muss sich neu mit unhb anmelden

automatisiertes Setup[Bearbeiten | | Quelltext bearbeiten]

Noch offen