Pimp my Node
Config Mode
Grundsätzlich ist unsere Freifunk Firmware so konzipiert, dass der Betreiber eines Nodes (Freifunkknoten) keinerlei Konfigurationsarbeiten durchführen muss. Das bedeutet, nach dem Aufspielen unserer Firmware und der Registrierung, kann der Betreiber direkt loslegen und ist Teil unseres Freifunk-Netzwerkes. Wenn der Betreiber es wünscht, besteht natürlich für Ihn die Möglichkeit, seinen Knoten an seine speziellen Bedürfnisse anzupassen. Die Möglichkeiten und Abweichungen von der Default-Konfiguration sind vielfältig. Diese sollten aber nur dann durchgeführt werden, wenn der Durchführende genau weiß was er da macht. Eine fehlerhaft Konfiguration kann zum Beispiel zu Störungen im Netzwerk führen, ferner könnten illegitime Maßnahmen implementiert werden. Beide zuvor genannten Beispiele würden zu einem Ausschluss aus unserem Netzwerk führen. Dennoch kann man gute Gründe haben die ein Abweichen von den Defaultwerten sinnvoll machen.
- Es ist zum Beispiel möglich, ein Passwort zu setzen um den Node per Fernzugriff/Login zu warten oder einige erweiterte Einstellungen vorzunehmen.
Es kann durchaus sinnvoll sein, die LAN-Ports speziell zu konfigurieren oder zusätzliche Software für eine Bandbreitenbegrenzung zu installieren.
An dieser Stellen möchten wir nur beschreiben, wie man in diesen Konfigurationsmodus gelangt. Eine ausführliche Beschreibung einiger Erweiterungen ist in Arbeit. Siehe auch Pimp_My_Node
Vorgehensweise
- PC mit Router über Netzwerkkabel verbinden (gelbe LAN Ports am Router)
- Wenn der Router gestartet ist (Power, Sys, WLAN leuchten dauerhaft), QSS Taste (schwarzer Knopf) 6 Sekunden drücken (Abb.10) (bis der Router neu startet, das sieht man daran, dass alle Lampen einmal ausgehen). Danach wird die Sys-Lampe, unregelmäßig blinken (Siehe: http://www.nilsschneider.net/2013/02/10/freifunk-blinken.html).
- bei manchen Routern (z.B. beim WR841N) muss man jetzt das Netzwerkkabel am Router umstecken (blauer WAN Port)
- Abwarten, bis der PC eine neue LAN-Verbindung aufgebaut hat (DHCP ist aktiv)
- Adresse http://192.168.1.1 aufrufen. - Punkt "Knoten neu einrichten" anklicken (Abb. 11)
- Vergabe von Passwort für den Fernzugriff/Login. Dann auf "weiter" klicken (Abb. 12)
- bei Bedarf die Bandbreitenbegrenzung aktivieren und auf "weiter" klicken (Abb. 13)
- auf "Jetzt neustarten!" klicken (Abb. 14) - Der Router startet neu, die kommende Fehlermeldung kann ignoriert werden (Abb. 15)
- Netzwerkkabel trennen und im WLAN warten, bis das netz "kbu.freifunk.net" auftaucht
Verbinde keinesfalls Dein lokales Netz mit den gelben LAN-Ports des Nodes. Sonst steht es allen offen!
Netztheorie/Technik und Entwicklung
Vertiefung
Arbeiten auf der Shell
Vorraussetzung für folgende Befehle sind eine Verbindung mit dem KBU Freifunk Netz sowie ein Terminal / Shell. Vergesst nicht eth0 gegen die Bezeichnung eures Netzwerkinterfaces, welches am Freifunk hängt zu tauschen. Bei Macbooks via Wlan z.B. "en1" statt "eth0"! Die link local Adresse der jeweiligen node findet ihr auf der KBU Register Seite.
IPv6 ping
ping6 <link local adress des node>%eth0
IPv6 ssh
Hinter der link local Adresse "%" + "Netzwerk Interface an eurer Kiste" (Hier im Beispiel eth0)
ssh root@<link local adress des node>%eth0
Firmware
Node mit uplink
ssh root@<link local adress des node>%eth0 // SSH Verbindung zum Node aufbauen cd ../tmp/ // in das Verzeichnis "tmp" wechseln free // Freien Speicher prüfen wget http://pfad/zur/firmware.bin // Firmware herunterladen oder sysupgrade -v firmware.bin // Firmwareupgrade durchführen
Achtung: Beim Download der Firmware via wget kann auf dem Router die Integrität der Firmware nicht geprüft werden, da gpg i.d.R. auf den Routern nicht verfügbar ist. Deshalb ist es sicherer, den oben beschriebenen Weg zu wählen, oder die geprüfte Firmware per scp (s.u.) auf den Router zu kopieren.
Node ohne uplink (mesh node)
scp -6 -v -r firmware.bin root@\[<linkloc>%eth0\]:../tmp/ // Firmware auf den node schieben (md5 checken!) ssh root@<link local adress des node>%eth0 cd ../tmp/ sysupgrade -v firmware.bin
LAN Kopplung
Eine LAN Kopplung kann in manchen Fällen sinnvoll sein, besonders wenn man einen VLAN fähigen Switch und eine bestehende Ntzwerkverkabelung hat. Hier werden die Switchports angwiesen auch über LAN zu meshen.
TL-WR841ND
03/2014: Hier wird über die alle 4 LAN Ports gemeshed, Mesh über WLAN kann man optional noch ausschalten! Folgende Config stammt von rampone/FF-KBU und wurde an 2 TL-WR841N v.8 getestet mit KBU-FF-Firmware 1.1.
vim /etc/config/network - Folgende Änderungen wurden an der FF-Firmware 1.0 vorgenommen:
- config interface 'freifunk' -> Hier haben wir eth0 aus "ifname" rausgenommen, damit kein ff aus dem eth0 (switch) rauskommt.
- config interface 'mesh_lan' -> kompl. codeblock hinzugefügt, dieser bewirkt das über eth0 (switch) gemeshed wird.
config interface 'loopback' option ifname 'lo' option proto 'static' option ipaddr '127.0.0.1' option netmask '255.0.0.0' config interface 'wan' option ifname 'eth0' option proto 'dhcp' option type 'bridge' option accept_ra '0' option auto '1' config switch option name 'switch0' option reset '1' option enable_vlan '1' config switch_vlan option device 'switch0' option vlan '1' option ports '0 1 2 3 4' config interface 'freifunk' option ifname 'bat0' #LAN-Kopplung: ifname eth1 entfernt option type 'bridge' option proto 'none' option auto '1' option accept_ra '1' option macaddr '10:fe:ed:f1:53:84' config interface 'mesh' option proto 'batadv' option mtu '1528' option mesh 'bat0' config interface 'mesh_vpn' option ifname 'mesh-vpn' option proto 'batadv' option mesh 'bat0' option macaddr '12:fe:ed:f2:53:84' config interface 'mesh_lan' #LAN-Kopplung: Codeblock mesh-lan hinzugefuegt option ifname 'eth1' option proto 'batadv' option mesh 'bat0'
vim /etc/config/wireless - Hier wird der Codeblock, der für das Mesh über WLAN verantwortlich ist auskommentiert (optional)
#config wifi-iface 'wifi_mesh' # option device 'radio0' # option network 'mesh' # option mode 'adhoc' # option ssid '02:d1:11:37:fc:39' # option bssid '02:d1:11:37:fc:39
TL-WDR4300
Das gleiche nochmal für den 4300er
vim /etc/config/network
config interface 'loopback' option ifname 'lo' option proto 'static' option ipaddr '127.0.0.1' option netmask '255.0.0.0' config interface 'wan' option ifname 'eth0.2' option proto 'dhcp' option type 'bridge' option accept_ra '0' option auto '1' option macaddr 'a2:f3:c1:65:81:cd' config switch option name 'eth0' option reset '1' option enable_vlan '1' config switch_vlan option device 'eth0' option vlan '1' option ports '0t 2 3 4 5' config switch_vlan option device 'eth0' option vlan '2' option ports '0t 1' config interface 'freifunk' option ifname 'bat0' #LAN-Kopplung: ifname eth0.1 entfernt option type 'bridge' option proto 'none' option auto '1' option accept_ra '1' option macaddr 'a0:f3:c1:64:81:cc' config interface 'mesh' option proto 'batadv' option mtu '1528' option mesh 'bat0' config interface 'mesh_vpn' option ifname 'mesh-vpn' option proto 'batadv' option mesh 'bat0' option macaddr 'a2:f3:c1:65:81:cc' config interface 'mesh_lan' #LAN-Kopplung: Codeblock mesh-lan hinzugefuegt option ifname 'eth0.1' option proto 'batadv' option mesh 'bat0'
Einsperren des Freifunk-Routers in eine DMZ
Wer seinen Freifunk-Router einsperren und/oder die Bandbreite begrenzen möchte, kann dies am einfachsten tun, indem er ihn an seiner Firewall an einen eigenen Netzwerkport klemmt und diesen dann als DMZ konfiguriert. Ein KBU-Freifunk-Router muß zur Zeit im LAN DHCP, DNS, im Internet NTP sowie mit den fastd-Knoten reden können. Folgendes Bespiel für eine iptables-Firewall nimmt an, dass der Freifunk-Router über eth2 angeschlossen ist:
# eth2 darf nur dns, ntp, dhcp und ansonsten mit den fastdX reden iptables -i eth2 -A INPUT -p udp --dport 67:68 --sport 67:68 -j ACCEPT iptables -i eth2 -A FORWARD -p udp --dport 67:68 --sport 67:68 -j ACCEPT iptables -i eth2 -A INPUT -p udp --dport 53 -j ACCEPT iptables -i eth2 -A INPUT -p tcp --dport 53 -j ACCEPT iptables -i eth2 -A INPUT -p tcp --dport 123 -j ACCEPT iptables -i eth2 -A FORWARD -p udp --dport 53 -j ACCEPT iptables -i eth2 -A FORWARD -p tcp --dport 53 -j ACCEPT iptables -i eth2 -A FORWARD -p tcp --dport 123 -j ACCEPT iptables -i eth2 -A FORWARD --dst 176.9.41.253 -j ACCEPT iptables -i eth2 -A FORWARD --src 176.9.41.253 -j ACCEPT iptables -i eth2 -A FORWARD --dst 178.63.59.41 -j ACCEPT iptables -i eth2 -A FORWARD --src 178.63.59.41 -j ACCEPT iptables -i eth2 -A FORWARD --dst 37.120.169.214 -j ACCEPT iptables -i eth2 -A FORWARD --src 37.120.169.214 -j ACCEPT iptables -i eth2 -A FORWARD --dst 37.221.195.47 -j ACCEPT iptables -i eth2 -A FORWARD --src 37.221.195.47 -j ACCEPT iptables -i eth2 -A FORWARD --dst 78.46.68.75 -j ACCEPT iptables -i eth2 -A FORWARD --src 78.46.68.75 -j ACCEPT iptables -i eth2 -A FORWARD --dst 84.201.35.206 -j ACCEPT iptables -i eth2 -A FORWARD --src 84.201.35.206 -j ACCEPT iptables -i eth2 -A INPUT -j DROP iptables -i eth2 -A FORWARD -j DROP # eth2 darf maximal 2000 kbit/s ein- und ausgehenden traffic machen wondershaper eth2 2000 2000
Prinzipiell könnte man den Traffic noch weiter einschränken. DHCP und DNS müssen nur zum DHCP- bzw. DNS-Server funktionieren und der Traffic zu den fastd-Servern ließe sich auf TCP Port 80 und UDP Port 10000 begrenzen.