Meshkit für Freifunk Erfurt

Zurzeit nutzen wir den Meshkit Freifunk OpenWrt Imagebuilder mit einem Erfurter Profil, welches für viele modernen Freifunk-Router (z.B. TP-Link 841N) verfügbar ist. Dazu muss als Community Erfurt ausgewählt werden. Mit der Expert-Checkbox können wichtige und zusätzliche Parameter vorkonfiguriert werden. Mit dem Drücken auf Submit generiert die Webseite ein Firmware-Image, welches über das Webinterface des Routers eingespielt werden kann.

Nach dem Flashen ist der Router zunächst für Freifunk konfiguriert, es fehlen aber noch weitere Programme, insbesondere der VPN-Zugang.

Post-Install-Schritte

- Port Forward SSH from WAN
config redirect
option enabled '1'
option target 'DNAT'
option src 'wan'
option dest 'lan'
option proto 'tcp'
option src_dport '22'
option dest_ip '10.99.0.6'
option dest_port '22'
option name ‘SSH’
- Install fastd from openwork
opkg install http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/packages/fastd_14-1_ar71xx.ipk
- Install kmod-ipip
opkg install kmod-ipip
- Config fastd
- Config OLSRd
- Config network (mesh-vpn)
- Reboot
- Firewall-Zone (mesh-vpn)
- Input / Output / Forward ACCEPT
- Masquerading
- Forwarding Freifunk / WAN

fastd VPN

* Keys generieren und sicher abspeichern:

# fastd --generate-key
2014-08-26 23:19:58 +0200 --- Info: Reading 32 bytes from /dev/random...
Secret: 5014214cd21e84140d37de6a9a8f490e249ab8674f1836a4fc0b6015da731463
Public: 81ebc85e924595557eccaa5b54941e50416149958a032eccad1f0cc09b73f029

* VPN-Server konfigurieren:

# mkdir /etc/fastd/peers
# echo "key "3e652183339f2a68cb842a45de65fd1a1ea067c38841a21eb6a178c07a94d660";
remote ipv4 "sj.weimarnetz.de" port 10000;" > /etc/fastd/peers/connectionPartner

config

Die Datei /etc/config/fastd um folgenden Absatz erweitern:

config fastd freifunk
option enabled 1
list config_peer_dir '/etc/fastd/peers'
option syslog_level 'info'
list bind '0.0.0.0:10000'
list method 'null'
option mode 'tap'
option interface 'mesh-vpn'
option mtu 1426
option secure_handshakes 1
option secret '0000000000000000000000000000000000000000000000000000000000000000'
option up 'ip link set up dev $1;ip a a 10.99.254.X/24 dev $1;logger fastd tunnel active'

Den privaten Key in secret eintragen (und entsprechend sicher lokal abspeichern) und den öffentlichen Key an stephan@freifunk-erfurt.de schicken oder im IRC durchgeben. Dieser wird dann in der Server-Config auch als Peer eingetragen. Dann in der letzten Zeile in der IP-Adresse das X durch die Zahl des eindeutigen VPN-Nodes ersetzen, welcher dir dann mitgeteilt wird.

Netzwerk

Die Network-Config wird um ein weiteres Interface erweitert. In die Datei /etc/config/network folgenden Abschnitt einfügen:

config interface 'mvpn'
option ifname 'mesh-vpn'
option proto 'none'

OLSR

Die vollständige OLSRd Config sieht so aus:

config olsrd 'olsrd'
option IpVersion '4'
option FIBMetric 'flat'
option LinkQualityLevel '2'
option LinkQualityAlgorithm 'etx_ff'
option OlsrPort '698'
option Willingness '3'
option NatThreshold '1.0'
option RtTable '111'
option RtTableDefault '112'
config LoadPlugin 'olsrd_arprefresh'
option library 'olsrd_arprefresh.so.0.1'
config LoadPlugin 'olsrd_nameservice'
option library 'olsrd_nameservice.so.0.3'
option latlon_file '/var/run/latlon.js'
option hosts_file '/var/etc/hosts.olsr'
option sighup_pid_file '/var/run/dnsmasq.pid'
option services_file '/var/run/services_olsr'
option suffix '.olsr.erfurt.freifunk.net'
config LoadPlugin 'olsrd_txtinfo'
option library 'olsrd_txtinfo.so.0.1'
option accept '0.0.0.0'
config InterfaceDefaults 'InterfaceDefaults'
option Ip4Broadcast '255.255.255.255'
option Mode 'mesh'
config LoadPlugin 'dyngw_plain'
option library 'olsrd_dyn_gw_plain.so.0.4'
option ignore '1'
config LoadPlugin 'olsrd_watchdog'
option library 'olsrd_watchdog.so.0.1'
option file '/var/run/olsrd.watchdog'
option interval '30'
config LoadPlugin 'olsrd_jsoninfo'
option library 'olsrd_jsoninfo.so.0.0'
config Interface 'wireless0'
option interface 'wireless0'
option Mode 'mesh'
config Interface
option interface 'mvpn'
option Mode 'ether'