LTE Offloader Router in einem Gerät mit Webserver für Dienste im Freifunk Netz

Im Zuge der Verkleinerung der Event Installation ist eine Lösung entstanden, die LTE Uplink, Offloader, WLAN, Mesh und Client LAN, sowie einen Webserver für Dienste im Freifunk Netz realisiert.

Hardware

  • APU.2D4 Board mit SSD
  • Sierra Wireless MC7455 LTE Cat 6
  • Compex WLE900VX 802.11ac Wireless LAN
  • Alcatel IK40V LTE Cat. 4 USB Stick (optional)

Software

  • Proxmox
  • Freifunk Offloader VM
  • Webserver VM

1 Proxmox installieren

Proxmox kann nicht direkt installiert werden, da das APU Board keine Grafikkarte hat und per seriellen Nullmodem Kabel die Installation erfolgt. Es wird ein USB-RS232 Adapter benötigt. Mit dem Linux Konsolen Terminal “screen” ist man dann verbunden. Der USB Port kann eine andere Nummer haben, je nachdem.

screen /dev/ttyUSB0 115200

Zunächst wird Debian Strech installiert. Download netinst, amd64 image von hier: https://www.debian.org/distrib/netinst und per

dd if=debian-9.1.0-amd64-netinst.iso of=/dev/sdX

auf einen USB Stick kopieren. Unbedingt auf das richtige Gerät achten. Den Stick am Board einstecken, serielle Verbindung herstellen und das APU Board starten.
Beim Boot Menü h drücken und

install console=ttyS0,115200n8

eingeben. Debian normal installieren, die minimale Einstellung nur verwenden.

Vorläufige /etc/network/interfaces

source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback

allow-hotplug enp1s0

iface enp1s0 inet static

        address  192.168.5.1
        netmask  255.255.255.0
        gateway  192.168.5.254
        nameservers 192.168.5.254

Die IP Adressen müssen an das Netzwerk, von wo aus installiert wird, angepasst werden. Da später ein DHCP Server läuft, darauf achten, dass es kein Konflikt mit dem Start Netzwerk gibt. Da das Gerät gleich per LTE online ist, kann nach dem Aufsetzen von Promox die Netzwerkeinstellungen, wie hier beschrieben, genommen werden.

Das eigentliche Proxmox

https://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_Stretch

/etc/hosts

127.0.0.1       localhost.localdomain localhost
192.168.5.1   proxmox.freifunk pvelocalhost

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
echo "deb http://download.proxmox.com/debian/pve stretch pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list
wget http://download.proxmox.com/debian/proxmox-ve-release-5.x.gpg -O /etc/apt/trusted.gpg.d/proxmox-ve-release-5.x.gpg
apt update && apt dist-upgrade
apt install proxmox-ve postfix open-iscsi
apt remove os-prober

Auf

https://192.168.5.1:8006

kann die Weboberfläche von Proxmox mit dem Browser aufgerufen werden.

2 Netzwerke einrichten

Mit der LTE Karte online gehen

Die Sierra Wireless MC7455 Karte hat einen Bug, sodass vor dem Einbauen sechs Pins abgeklebt werden müssen, nur auf einer Seite.

Es ist etwas kniffelig, mit LTE online zu kommen. Hier die wirre Anzahl an ausprobierten Befehlen:

Unbedingt die richtige SIM Pin angeben.

usb-devices
apt install modem-manager
apt install modemmanager
mmcli -L
mmcli -i 0 --pin=1234
usermod -a -G dialout benutzername
mmcli -m 0
cat /etc/NetworkManager/system-connections/MyModem
mmcli -m 0 -e
mmcli -i 0 --pin=1234
nm-connection-editor
apt-get install network-manager
nm-connection-editor
mmcli -m 0 -e
mmcli -L
apt install uuid
mmcli -m 0
nmcli r wwan on
nmcli connection add type gsm ifname cdc-wdm0 apn internet
nmcli radio wwan on
nmcli connection
nmcli connection up gsm-cdc-wdm0
cd /etc/NetworkManager/system-connections/
nano gsm-cdc-wdm0 
mmcli -m 0 -e
nmcli con list
nmcli dev status
nmcli r wwan on
nmcli con up id gsm-cdc-wdm0
nmcli networking on
mmcli -m 0 | grep -Ev "imei|equipment"
nmtui
systemctl status NetworkManager
lspci

Das geht sicherlich auch eleganter.

Netzwerkports

Die virtuelle Maschine braucht Bridges zu den Netzwerkports. Die LTE Karte wird nicht als Netzwerkkarte in Proxmox dargestellt. Bei anderen VMs kann diese als USB Gerät durchgeschliffen werden, doch das Freifunk Images unterstützt das nicht so einfach. Unser Ansatz ist LAN Port 1 mit einer Bridge zu versehen mit fester IP Addresse, sodass die Weboberfläche dort erreichbar ist, dass angeschlossene Geräte per DHCP Adressen bekommen und über ein NAT Gateway mit LTE online sind, Dieser Port 1 wird später auch der WAN Port für den Offloader. Port 2 und 3 werden Mesh LAN und Client LAN für Feifunk. Am Client Port hängt später das WLAN Interface, sowie der Webserver als VM im Freifunknetz.

Die komplette /etc/network/interfaces

source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback

allow-hotplug enp1s0

iface enp1s0 inet manual

iface enp2s0 inet manual

iface enp3s0 inet manual

# WLAN
allow-hotplug wlp4s0
iface wlp4s0 inet manual

auto vmbr1
iface vmbr1 inet manual
bridge-ports enp2s0
bridge-stp off
bridge-fd 0
#Mesh Net Port 2

auto vmbr2
iface vmbr2 inet manual
bridge-ports enp3s0
bridge-stp off
bridge-fd 0
#Client Net Port 3

auto vmbr0
iface vmbr0 inet static
address 192.168.5.1
netmask 255.255.255.0
bridge-ports enp1s0
bridge-stp off
bridge-fd 0
#LAN DHCP Proxmox Port 1

Für die Bridge dies installieren:

apt-get install bridge-utils

NAT Gateway installieren:

apt-get install vlan
modprobe 8021q
apt-get install dnsmasq
apt-get install iptables-persisten

nano /etc/dnsmasq.conf anpassen:

interface=vmbr0
listen-address=127.0.0.1
domain=proxmox.freifunk-dueren.de
dhcp-range=192.168.5.100,192.168.5.150,12h

nano /etc/sysctl.conf anpassen:

net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1

nano /etc/iptables/rules.v4 anpassen:

*nat
-A POSTROUTING -o wwp0s19u1u3i8 -j MASQUERADE
COMMIT

*filter
-A INPUT -i lo -j ACCEPT
# ssh erlauben, damit wir uns nicht selbst aussperren
-A INPUT -i wwp0s19u1u3i8 -p tcp -m tcp --dport 22 -j ACCEPT
# eingehenden Traffic erlauben der zu den ausgehenden Verbindungen,
# u.a. für Clients aus dem Private-Netzwerk
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# alles andere eingehend verbieten
-A INPUT -i wwp0s19u1u3i8 -j DROP
COMMIT

Abschließend:

iptables-restore < /etc/iptables/rules.v4

WLAN Modul

Leider wird von der CPU PCI passthrough nicht unterstützt, d.h. das WLAN wird nicht über den Offloader bedient, sondern nur per Brücke an das Client Netz gehängt.

Auf der Proxmox Shell dies installieren:

apt-get install hostapd

Die Datei /etc/hostapd/hostapd.conf bearbeiten:

# Bridge-Betrieb
bridge=vmbr2

# Schnittstelle und Treiber
interface=wlp4s0
#driver=nl80211

# WLAN-Konfiguration
ssid=Freifunk
channel=11
hw_mode=g
ieee80211n=1
ieee80211d=1
country_code=DE
wmm_enabled=1

Diese Einträge in /etc/default/hostapd hinzufügen:

RUN_DAEMON=yes
DAEMON_CONF="/etc/hostapd/hostapd.conf"
  • Reboot

3 Freifunk Offloader VM

  • Auf der Proxmox Weboberfläche https://192.168.5.1:8006 mit root einloggen.
  • Neue VM erstellen
  • Node vorgabe, VM ID etwas freies hier 101, Name Offloader
  • In der erweiterten Ansicht kann Start at Boot aktiviert werden
  • OS kein Medium auswählen und Type Linux 4x/3x/2.6 benutzen
  • Harddisk Bus/Device SATA 0 Storage local  Sitze 0,07 GiB Format RAW Disk Image Cache Write back
  • CPU 1 Kern
  • Memory 64 MiB
  • Network erst einmal ohne Device
  • Bestätigen

Auf der Konsole ins Verzeichnis /var/lib/vz/images/101 wechseln

wget https://images.aachen.freifunk.net/stable/factory/gluon-ffac-2016.2.7-1-stable-x86-64.img.gz

gunzip gluon-ffac-2016.2.7-1-stable-x86-64.img.gz

cp gluon-ffac-2016.2.7-1-stable-x86-64.img vm-101-disk-0.raw
  • Auf der Proxmox Oberfläche unter 101 Hardware Harddisk aushängen und wieder einbinden.
  • Bus Device SATA 0
  • Disk Image vm-101-disk-0.raw
  • Cache Write back

Der erste Start der Offloader VM darf erst erfolgen, wenn alle Netzwerkports richtig eingestellt sind.

  • Unter Hardware hinzufügen Netzwerk Device
  • Bridge vmbr1
  • Model Virto
  • Bestätigen

Dies wird auf dem Offloader LAN eth0 für den Config Mode. Später Mesh on LAN an Port 2 der APU.

  • Unter Hardware hinzufügen Netzwerk Device
  • Bridge vmbr0
  • Model Virto
  • Bestätigen

Dies wird eth1 für WAN VPN an Port 1

  • Unter Hardware hinzufügen Netzwerk Device
  • Bridge vmbr2
  • Model Virto
  • Bestätigen

Dies wird eth2 für das Client Netz an Port 3

Die VM kann gestartet werden.

Offloader konfigurieren

Der Config Mode ist exakt so, wie auf einem Freifunk Router. Er ist über Port 2 an der APU erreichbar.

  • Im Experten Modus ein Passwort oder Key hinterlegen. Mesh on LAN aktivieren.
  • Im normalen Modus die gewohnten Angaben und VPN aktivieren.
  • Einstellungen speichern und den Config Mode abschließen.

Nach dem Neustart eine SSH Verbindung herstellen oder über den Proxmox Bildschirm auf die Konsole zugreifen:

uci add_list network.client.ifname=eth2
uci commit network

4 Webserver für Dienste im Freifunk Netz

Für den Server kann das Debian Netinstall iso Image genutzt werden.
Dieses mal gehen wir direkt auf die Proxmox Oberfläche und laden unter local Inhalt das ISO Images hoch.

  • Neue VM erstellen
  • Node vorgabe, VM ID etwas freies hier 102, Name Webserver
  • In der erweiterten Ansicht kann Start at Boot aktiviert werden
  • OS ISO Medium aus local auswählen: debian-9.1.0-amd64-netinst.iso
  • Type Linux 4x/3x/2.6 benutzen
  • Harddisk Bus/Device SATA 0 Storage local  Sitze 10 GiB Format RAW Disk Image Cache no cache (normal)
  • CPU 1 Kern
  • Memory 1536 MiB
  • Network Bridge vmbr2 Model Virto
  • Bestätigen

Die Webserver VM kann gestartet werden und normal aufgesetzt werden.

Wenn die privacy extensions ausgeschaltet ist und die Mac Adresse nicht wechselt, der Server im gleichen Segment bleibt, wechselt die IPV6 Adresse nicht, solange alle Supernodes das gleiche Prefix announcen.

Ein DNS Name kann per responsd <Name>.nodes.ffac.rocks vergeben werden.

Alternativ kann auch ein DNS AAAA Record gesetzt werden und mit letsencrypt https gemacht werden.

5 Zweite Offloader VM an einem zweiten LTE Uplink per USB Stick (Optional)

Es kann an den USB Anschlüssen noch weitere USB LTE Sicks verwendet werden. Falls das erste Mobilfunknetz ausfällt, kann ein weiteres als Backup dienen. Der WAN Port geht über den Stick und Mesh on LAN an Port 2. Ein weiteres Client Netz wird nicht aufgesetzt.

/etc/network/interfaces editieren und folgendes ergänzen:

iface enp0s16u1 inet manual

auto vmbr3
iface vmbr3 inet manual
bridge-ports enp0s16u1
bridge-stp off
bridge-fd 0
#LTE Stick USB

enp0s16u1 ist der Netzwerkport des  LTE Sticks und kann anders nummeriert sein, Mit ip address ist zu sehen, wie genau die Nummern sind.

Die Offloader Backup VM wird eingerichtet, wie vorweg beschrieben, nur, dass die ID und der Name anders sein muss. Es werden nur zwei Netzwerkkarten benötigt, net0 an vmbr1 und net1 an vmbr3.

Den Hauptoffloader erst stoppen, da kurz zum Einrichten des Backupoffloader der Mesh Port 2 für den Config Mode gebraucht wird. Die Backup VM starten.

Die Konfiguration des Backup Offloaders benötigt Mesh on LAN und der VPN muss aktiviert werden.

Jetzt kann auch der Haupt Offloader wieder gestartet werden.