LoRaWAN-Gatewaysetup
Allgemeines
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:
- Manuell per Hand
- Automatisiert mit Ansible/flashfig
manuelles Setup
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
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
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
- (ggfs.) lte1: Deaktivieren
- (ggfs.) wlan1: Deaktivieren
PPP
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
Im System Abschnitt müssen vor allem weitere User angelegt werden sowie IPv6 aktiviert werden.
User
- Sichers Passwort für den User "admin" anlegen und im Anschluss sperren
- Neuen User "unhb" mit Admin-Rechten und sicheren Passwort anlegen
- (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
- IPv6 Paket aktivieren
Als Terminal Kommando:
/system package enable ipv6
Scheduler
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
Als Terminal Kommando:
/system identity set name="unhb-de-gwXX-XXX-unhb"
IP
Addresses
- Link Local IP im Keepass speichern
Ist evtl. später zur Fernwartung mal hilfreich.
DHCP Client
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
- Allow Remote Requests: Deaktivieren
Als Terminal Kommando:
/ip dns set allow-remote-requests=no
Services
- 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
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
Da IPv6 sich überwiegend selbst konfiguriert brauchen wir nur wenige Einstellungen.
Settings
- 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
In diesem Abschnitt wird die Verbindung zum The Things Network eingerichtet. Dabei gibt es alles in allem nicht viel zu tun.
Servers
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
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
/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:
/user disable admin # Achtung: Danach wir man aus der laufenden Session geworfen und man muss sich neu mit unhb anmelden /ipv6 settings set forward=yes accept-redirects=yes accept-router-advertisements=yes
automatisiertes Setup
Noch offen