Funkinsel mit OpenWRT auf Raspberry Pi 3: Unterschied zwischen den Versionen

Aus FunkFeuer Wiki
Zur Navigation springen Zur Suche springen
 
(9 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
'''SEITE IN BEARBEITUNG<br />
'''SEITE IN BEARBEITUNG<br />
Nach erfolgreicher Installation einer Funkinsel auf OpenWRT mit einem Raspberry, dokumentiere ich die Konfiguration.<br />
Nach erfolgreicher Installation einer Funkinsel auf OpenWRT-Basis mit einem Raspberry Pi 3 dokumentiere ich die Konfiguration.<br />
Vorerst mehr Stichwörter als Dokumentation!<br />
Vorerst mehr Stichwörter als Dokumentation!<br />


== Benötigte Pakete ==
== Benötigte Pakete ==
luci-mod-freifunk<br />
  luci-mod-freifunk
luci-app-olsr<br />
  luci-app-olsr
luci-ssl<br />
  luci-ssl
ebtables<br />
  ebtables
acme<br />
  acme
luci-app-acme<br />
  luci-app-acme
openvpn-openssl<br />
  openvpn-openssl


== OpenVPN einrichten ==
== OpenVPN einrichten ==
Note: Hier verweise ich nur auf die bereits bestehende Anleitung. Damit diese nur an einer Stelle aktuell gehalten werden muss:<br />
Siehe [https://wiki.funkfeuer.at/wiki/OpenVPN_mit_LEDE/OpenWRT_oder_%E2%80%9EBubbles%E2%80%9C OpenVPN mit LEDE/OpenWRT oder „Bubbles“]. Interface-Namen unterscheiden sich mit denen in dieser Anleitung.
[https://wiki.funkfeuer.at/wiki/OpenVPN_mit_LEDE/OpenWRT_oder_%E2%80%9EBubbles%E2%80%9C OpenVPN mit LEDE/OpenWRT oder „Bubbles“]<br />
(Die Interface Namen in dieser Anleitung können daher etwas abweichen)<br />


== Interface Einstellungen ==
== Interface Einstellungen ==
Zeile 45: Zeile 41:


wlan0 ist als static IP oder DHCP OHNE Default Gateway eingestellt.<br />
wlan0 ist als static IP oder DHCP OHNE Default Gateway eingestellt.<br />
unter "Network" --> "Static Routes" muss man daher die Router zum VPN Server anpassen (siehe openvpn config).<br />
unter "Network" --> "Static Routes" muss man daher die Router zum VPN Server anpassen (siehe OpenVPN config).<br />


OLSR soll über den Interfaces tap0 und eth0 laufen.
OLSR soll über die Interfaces tap0 und eth0 laufen.
*tap0 ist über openvpn verbunden.
*tap0 ist über OpenVPN verbunden.
*eth0 hat eine Verbindung auf eine NanoBeam, welche als AP eingestellt ist, für weitere Verbindungen.<br />
*eth0 hat eine Verbindung auf eine NanoBeam, welche als AP für weitere Verbindungen eingestellt ist.<br />
Daher eine Bridge erstellen, welche diese zwei Ports als Bridgeports hat. (br0)<br />
Daher muss eine Bridge erstellt werden, die diese zwei Ports als Bridgeports hat. (br0)<br />
Interfaces tap0 und eth0 bekommen als Protocol "unmanaged".<br />
Interfaces tap0 und eth0 bekommen als Protocol "unmanaged".<br />
<br />
<br />
Zeile 73: Zeile 69:
  exit 0
  exit 0


Nach einem Neustart, kann man mit ebtables -L überprüfen ob die Forward chain auf DROP steht, anstelle wie default auf ACCEPT<br />
Nach einem Neustart, kann man mit ebtables -L überprüfen ob die Policy der Forward chain auf DROP steht, anstelle wie default auf ACCEPT<br />


== OLSR ==
== OLSR ==
Note: In meinem Setup habe ich OLSR für IPV6 deaktiviert, weil ich wenig bit keine Erfahrung mit IPV6 habe.<br />
Note: In meinem Setup habe ich OLSR für IPV6 deaktiviert, weil ich kaum Erfahrung mit IPV6 habe.<br />


"Services" --> "OLSR IPv4":
"Services" --> "OLSR IPv4":
Zeile 86: Zeile 82:


== Firewall ==
== Firewall ==
WAN      br0{eth0,tap0}      (Public IP via OLSR)
LAN      wlan0                (Local Network / Falls überhaupt vorhanden)
MGMNT    eth0.1100            (Management VLAN)


=== Interfaces/Zonen ===
{| class="wikitable"
|<b>Zone</b>
|<b>Interfaces</b>
|-
|WAN
|br0,eth0,tap0
|-
|LAN
|wlan0
|-
|mgmnt
|eth0.1100
|}


Netzwork --> Firewall:
=== Zonen ===
                      INPUT  OUTPUT  FORWARD  Masquerading  MSS clamping
lan => wan,mgmnt    accept  accept  accept  no            no              Damit LAN über Funkfeuer ins Internet darf und auf das NanoBeam Management Interface zugreifen darf.
wan => accept        reject  accept  accept  yes          yes            Forward muss accept sein (Pico-Peering). Input auf Reject, da wir nicht alle Ports auf dem Router offen haben wollen.
mgmnt => wan        accept  accept  reject  no            no              Dies ist notwendig, wen die Nanobeam über den Router ins Internet gehen soll (zwecks Updates).


{| class="wikitable"
|<b>Name</b>
|<b>Zone => Forwardings</b>
|<b>Input</b>
|<b>Output</b>
|<b>Forward</b>
|<b>Masquerading</b>
|<b>MSS clamping</b>
|-
|lan
|lan => wan,mgmnt
|accept
|accept
|accept
|no
|no
|-
|wan
|wan => accept
|reject
|accept
|accept
|yes
|yes
|-
|mgmnt
|mgmnt => wan
|accept
|accept
|reject
|no
|no
|}


Da wir bei wan den input auf reject gesetzt haben, müssen wir ein paar Ports freigeben, da wir nun (von extern) weder auf die Weboberfläche kommen, noch mit olsr kommunizieren können.<br />
Da wir den wan input auf reject gesetzt haben, müssen wir einige Ports freigeben. Da wir nun (extern) weder auf die Weboberfläche kommen, noch mit OLSRd kommunizieren können.<br />
Network --> Firewall --> Traffic Rules:<br />
Network --> Firewall --> Traffic Rules:<br />
die Ports 698/udp, 80/tcp und 443/tcp freigeben.<br />
die Ports 698/udp, 80/tcp und 443/tcp freigeben.<br />
<br />
<br />
Beispiel von meinen: (auch hier habe ich wieder nur IPV4!)<br />
Eigenes Beispiel: (auch hier wird wieder nur mit IPv4 gearbeitet!)<br />
  Any udp From any host in wan To any router IP at port 698 on this device
  Any udp From any host in wan To any router IP at port 698 on this device
  IPv4-tcp From any host in wan To IP [INSERT PUBLIC IP] at port 80 on this device
  IPv4-tcp From any host in wan To IP [INSERT PUBLIC IP] at port 80 on this device
  IPv4-tcp From any host in wan To IP [INSERT PUBLIC IP] at port 443 on this device
  IPv4-tcp From any host in wan To IP [INSERT PUBLIC IP] at port 443 on this device


 
== Let's Encrypt ==
== Letsencrypt ==
Services --> acme
Services --> acme
Account email, Domain names und Webroot directory (/www) ausfüllen und auf "Save" drücken. NICHT auf "Save & Apply".<br />
Account email, Domain names und Webroot directory (/www) ausfüllen und auf "Save" drücken. NICHT auf "Save & Apply".<br />
Zeile 116: Zeile 152:


== Anmerkungen ==
== Anmerkungen ==
Nur ein kleiner hinweis, da ich diese Möglichkeiten noch nicht kannte, wie ich mit OpenWRT begonnen habe:<br />
Nur ein kleiner Hinweis, da ich diese Möglichkeiten noch nicht kannte, als ich mit OpenWRT begonnen habe:<br />
um über ssh einen logoutput zu bekommen:<br />
Um über SSH einen logoutput zu bekommen:<br />
  logread
  logread
  bzw.
  bzw.
  logread -f
  logread -f

Aktuelle Version vom 24. Juni 2019, 09:29 Uhr

SEITE IN BEARBEITUNG
Nach erfolgreicher Installation einer Funkinsel auf OpenWRT-Basis mit einem Raspberry Pi 3 dokumentiere ich die Konfiguration.
Vorerst mehr Stichwörter als Dokumentation!

Benötigte Pakete

 luci-mod-freifunk
 luci-app-olsr
 luci-ssl
 ebtables
 acme
 luci-app-acme
 openvpn-openssl

OpenVPN einrichten

Siehe OpenVPN mit LEDE/OpenWRT oder „Bubbles“. Interface-Namen unterscheiden sich mit denen in dieser Anleitung.

Interface Einstellungen

Interface Name Bridgeports Beschreibung
thumb
wlan0 none Schnittstelle zu lokalem Netzwerk
thumb
br-br0 eth0,tap0 Bridge für OLSR (public IP /32!)
eth0 und tap0 sind unmanaged Interfaces
thumb
br-mgmnt eth0.1100 Management Bridge / eth0.1100 ohne Bridge geht auch


wlan0 ist als static IP oder DHCP OHNE Default Gateway eingestellt.
unter "Network" --> "Static Routes" muss man daher die Router zum VPN Server anpassen (siehe OpenVPN config).

OLSR soll über die Interfaces tap0 und eth0 laufen.

  • tap0 ist über OpenVPN verbunden.
  • eth0 hat eine Verbindung auf eine NanoBeam, welche als AP für weitere Verbindungen eingestellt ist.

Daher muss eine Bridge erstellt werden, die diese zwei Ports als Bridgeports hat. (br0)
Interfaces tap0 und eth0 bekommen als Protocol "unmanaged".

Um auf das Management Interface der Nanobeam zu gelangen, benötigt man noch ein Management-VLAN.
Unter /etc/config/network folgendes hinzufügen:

config interface 'mgmnt'
       option type 'bridge'
       option ifname 'eth0.1100'
       option proto 'static'
       option netmask '255.255.255.0'
       option ipaddr '10.XX.YY.100' --> XXYY ist die NodeID!

ebtables

System -> Startup
Unter "Local Startup" folgendes eintragen bzw. ergänzen:

ebtables -P FORWARD DROP

Beispiel:

# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.
ebtables -P FORWARD DROP
exit 0

Nach einem Neustart, kann man mit ebtables -L überprüfen ob die Policy der Forward chain auf DROP steht, anstelle wie default auf ACCEPT

OLSR

Note: In meinem Setup habe ich OLSR für IPV6 deaktiviert, weil ich kaum Erfahrung mit IPV6 habe.

"Services" --> "OLSR IPv4":

  • Öffentliche IP unter "Main IP" eintragen.
  • Sicherstellen, dass nur br0 in den Interfaces eingetragen und aktiv ist:
Openwrt olsr interfaces.PNG
  • Plugins wie gewünscht anpassen
  • HNA wie gewünscht anpassen

Firewall

Interfaces/Zonen

Zone Interfaces
WAN br0,eth0,tap0
LAN wlan0
mgmnt eth0.1100

Zonen

Name Zone => Forwardings Input Output Forward Masquerading MSS clamping
lan lan => wan,mgmnt accept accept accept no no
wan wan => accept reject accept accept yes yes
mgmnt mgmnt => wan accept accept reject no no

Da wir den wan input auf reject gesetzt haben, müssen wir einige Ports freigeben. Da wir nun (extern) weder auf die Weboberfläche kommen, noch mit OLSRd kommunizieren können.
Network --> Firewall --> Traffic Rules:
die Ports 698/udp, 80/tcp und 443/tcp freigeben.

Eigenes Beispiel: (auch hier wird wieder nur mit IPv4 gearbeitet!)

Any udp From any host in wan To any router IP at port 698 on this device
IPv4-tcp From any host in wan To IP [INSERT PUBLIC IP] at port 80 on this device
IPv4-tcp From any host in wan To IP [INSERT PUBLIC IP] at port 443 on this device

Let's Encrypt

Services --> acme Account email, Domain names und Webroot directory (/www) ausfüllen und auf "Save" drücken. NICHT auf "Save & Apply".
Hier beschwert sich das System, dass das Feld "DNS API" nicht ausgefüllt ist. Diese Methode wollen wir aber nicht verwenden.
Wenn man nur auf Save klickt und anschließend auf "unsaved Changes" rechts oben drückt und diese dort anwendet, funktioniert es ohne der DNS API.


Anmerkungen

Nur ein kleiner Hinweis, da ich diese Möglichkeiten noch nicht kannte, als ich mit OpenWRT begonnen habe:
Um über SSH einen logoutput zu bekommen:

logread
bzw.
logread -f