Home |

XEDOX.DE - Freifunk Konsole

Firmware

== Arbeiten auf der Kommandozeile von Routern ==
Die Kommandozeile ist ein Eingabebereich f√ľr die Steuerung des Routers das im Textmodus abl√§uft. Damit er√∂ffnen sich f√ľr den Benutzer M√∂glichkeiten jenseits der Grenzen der Weboberfl√§che.
Voraussetzung f√ľr das Arbeiten mit der Kommandozeile ist, dass bei der Erstkonfiguration bereits ein Passwort gesetzt, oder -besser- ein SSH-Schl√ľssel hinterlegt wurde.

== Zugriff auf die Kommandozeile des Routers mit SSH ==

Wie man eine SSH-Verbindung zu einem Router aufbaut, ist im Detail auf der Seite [SSH | SSH] beschrienen.
Mit den im Folgenden erkl√§rten Befehlen, kann man bei bestehender SSH-Verbindung zum Router die Konfiguration nach Bedarf anpassen, ohne den Router in den Konfigurations-Modus versetzen zu m√ľssen.

=== Nachtr√§gliches Hinterlegen eines SSH‚ÄďSchl√ľssels (MacOS und Linux) ===

Wenn man bei der Einrichtung des Routers einen SSH‚ÄďSchl√ľssel hinterlegt hat, kann man sich damit einloggen, ohne jedes Mal das Passwort eingeben zu m√ľssen. Der Schl√ľssel kann man aber auch nachtr√§glich auf dem Router speichern (Die Beispiel IP‚ÄďAdresse muss selbstverst√§ndlich angepasst werden):

cat ~/.ssh/id_rsa.pub | ssh root@fe80::6a72:51ff:fe04:f52e%en1 'cat >> /etc/dropbear/authorized_keys'

Damit der Befehl auch tats√§chlich auf dem Router ausgef√ľhrt wird, muss noch ein Mal das Passwort eingegeben werden, aber anschlie√üend nutzen alle Logins den Schl√ľssel.

== Auf der Kommandozeile ==
Hat man sich schließlich per SSH eingeloggt, lassen sich zahlreiche Befehle nutzen.

=== Grundlegende Befehle ===

ls

ist ein Befehl, mit dem ihr eine Liste aller Dateien in einem Verzeichnis anzeigen lassen könnt (ähnlich `dir` unter MSDOS)


ls -l

Zeigt eine Liste mit den kompletten Informationen der Dateien an


cd

heißt soviel wie "change directory" oder auch "wechsle das Verzeichnis". Damit könnt ihr in einen Ordner eurer Wahl springen.


cd ..

Damit kommt ihr in den √ľbergeordneten Ordner


cd /

in das Hauptverzeichnis


cat

gibt den Inhalt einer Datei in der Kommandozeile aus. Der Vorteil ist das man nicht extra einen Editor starten muss


vi

ist ein Kommandozeileneditor, mit dem ihr euch Dateien angucken und ver√§ndern k√∂nnt. Um damit umzugehen, sollte man bei einer Suchmaschine eures Vertrauens mal nach "vi kommandos" oder "vi einf√ľhrung" suchen. Kurz erw√§hnt: ihr kommt mit `:q!` oder ` :q!` immer aus diesen Programm wieder raus, weitere Infos entnehmt ihr bitte einer Anleitung des `vi`. Ein guter Einstieg ist der Wikipedia Artikel dazu


top

ein Tool, mit dem ihr euch die Aktuelle Auslastung eures Systems anzeigen lassen könnt


date

verändert die Systemzeit


rm

löscht eine Datei


rm -d

löscht ein Verzeichnis inklusive Inhalt

=== Anpassen der Einstellungen in OpenWrt ===

[UCI] ist das Kommandozeilentool, welches in [[OpenWRT|OpenWRT]] genutzt wird, um Einstellungen auszulesen oder zu √§ndern. √úber UCI lassen sich alle Einstellungen, die auch √ľber die Konfigurationsoberfl√§che m√∂glich sind, sowie einige weitere Einstellungen vornehmen.

====Einstellungen anzeigen====

Alle gesetzten Einstellungen auflisten:

uci show

Eine bestimmte Einstellung suchen:

uci show|grep Suchwort

Eine bestimmte Einstellung anzeigen:

uci show Einstellung
Beispiel:
uci show autoupdater.settings.enabled

Oder f√ľr eine Einstellungsgruppe:

uci show autoupdater.settings

====Einstellungen setzen====

uci set Einstellung=Wert
Beispiel:

uci set autoupdater.settings.enabled=1
Wichtig: Wenn du Einstellungen via UCI gesetzt hast, m√ľssen diese via uci commit am Ende aktiviert werden!

====Einstellungen sichern====

Bevor man an Einstellungen herum fummelt kann es sinnvoll sein, diese zun√§chst zu sichern um sie problemlos wieder herzustellen. Dies l√§sst sich f√ľr alle Einstellungen
via uci export oder auch nur f√ľr einen Abschnitt machen, wie im folgenden Beispiel:

uci export network > network.uci
Und der Import geht dann so:

cat network.uci | uci import

===Einstellungen von Gluon ändern===
[Gluon] ist eine [OpenWrt]-basierte [Freifunk-Firmware], die recht häufig (aber nicht von allen Communities) im Freifunk-Umfeld benutzt wird.

Ein [https://github.com/freifunk-gluon/gluon/wiki/Commandline-administration englisches Wiki] mit weiteren Befehlen ist im offiziellen GitHub-Repository zu finden.

====Autoupdater Branch festlegen====

Wenn der Router nach dem Reboot wieder oben ist k√∂nnt ihr den Branch f√ľr den Autoupdater noch festlegen:

uci set autoupdater.settings.enabled='1'
uci set autoupdater.settings.branch='stable'
uci commit autoupdater

Das Update kann man dann manuell anstoßen.
autoupdater -f

Das stable Release ist immer die j√ľngste stabile Version der Firmware f√ľr Produktivsysteme. Seit der Version 0.5 ist der Autoupdater mit dem stable Branch automatisch bei Installation aktiviert, so dass die Router sich automatisch aktuell halten. Sollte dies nicht gew√ľnscht sein, so muss dies explizit deaktiviert werden.

====Neustart im Configmode====

Manchmal ist es Notwendig in den Configmode zu starten. Dies beinhaltet die Weboberfl√§che des Systems zum ersten Einrichten eines Freifunk-Routers. F√ľr gew√∂hnlich h√§lt man ein paar Sekunden lang die Reset Taste gedr√ľckt. Folgende Ausf√ľhrung w√ľrde den gleichen Effekt erzielen:

uci set gluon-setup-mode.@setup_mode0.enabled=1
uci commit gluon-setup-mode
reboot

====Routernamen ändern====

Wenn ihr bspw. den *Namen* des Router ändern möchtet geht dies wie folgt in der SSH Shell:

pretty-hostname FF-OB-SAMPLE-01

oder klassisch

uci set system.@system0.hostname='FF-OB-SAMPLE-01' << Name anpassen
uci commit system

Danach ist ein Reboot erforderlich.

====Kontaktdaten ändern====

uci set gluon-node-info.@owner0='owner'
uci set gluon-node-info.@owner0.contact='Mustermann muster@freifunk-ruhrgebiet.de 02453434434' << Daten anpassen
uci commit gluon-node-info

====Geodaten ändern====

uci set gluon-node-info.@location0='location'
uci set gluon-node-info.@location0.share_location='1'
uci set gluon-node-info.@location0.latitude='51.484943' << anpassen
uci set gluon-node-info.@location0.longitude='6.880250' << anpassen
uci commit gluon-node-info

====Bandbreitenbegrenzung ändern====
Alt:

uci set gluon-simple-tc.mesh_vpn='interface'
uci set gluon-simple-tc.mesh_vpn.ifname='mesh-vpn'
uci set gluon-simple-tc.mesh_vpn.enabled='1'
uci set gluon-simple-tc.mesh_vpn.limit_ingress='50000' << download anpassen
uci set gluon-simple-tc.mesh_vpn.limit_egress='10000' << upload anpassen
uci commit gluon-simple-tc


Neu:

uci set simple-tc.mesh_vpn=interface
uci set simple-tc.mesh_vpn.ifname='mesh-vpn'
uci set simple-tc.mesh_vpn.enabled='1'
uci set simple-tc.mesh_vpn.limit_ingress='16000' << download anpassen
uci set simple-tc.mesh_vpn.limit_egress='1000' << upload anpassen
uci commit simple-tc

====Bandbreitenbegrenzung zeitgesteuert ändern====

Folgende Cronjobs anlegen:

vi /usr/lib/micron.d/speedlimit

F√ľr t√§gliche Limits von 07 bis 1700 Uhr:
0 7 * * * uci set gluon-simple-tc.mesh_vpn.enabled='1' && uci set gluon-simple-tc.mesh_vpn.limit_ingress='2000' && uci set gluon-simple-tc.mesh_vpn.limit_egress='500' && uci commit gluon-simple-tc && reboot

0 17 * * * uci set gluon-simple-tc.mesh_vpn.enabled='0' && uci commit gluon-simple-tc && reboot

F√ľr werkt√§gliche Limits von 07 bis 1700 Uhr (ungetestet):
0 7 * * 1-5 uci set gluon-simple-tc.mesh_vpn.enabled='1' && uci set gluon-simple-tc.mesh_vpn.limit_ingress='2000' && uci set gluon-simple-tc.mesh_vpn.limit_egress='500' && uci commit gluon-simple-tc && reboot

0 17 * * 1-5 uci set gluon-simple-tc.mesh_vpn.enabled='0' && uci commit gluon-simple-tc && reboot

Hier wird jeweils ein Limit von 2Mbits down und 0.5 MBits up gesetzt.

Achtung! Jeder Scriptaufruf f√ľhrt ein commit und damit einen Schreibvorgang auf dem Rom aus. Dies kann sich negativ auf die Lebensdauer des Ger√§tes auswirken. Ein Reboot ist n√∂tig, damit die Beschr√§nkung aktiv oder inaktiv wird.

====Mesh VPN aktivieren====

Mesh VPN bezieht sich auf das Meshen mit anderen Routern √ľber das Internet. Es ist auch Voraussetzung f√ľr die Internetfreigabe der Clients am eigenen Knoten.

uci set fastd.mesh_vpn.enabled=1
uci commit fastd
/etc/init.d/fastd start

Sofern noch kein Schl√ľssel generiert wurde, muss das ebenfalls geschehen:
/etc/init.d/fastd generate_key mesh_vpn
18fa75d1808692f04770bedf30c42dac24585d331560c545d70dd27f22a05648

Dieser Schl√ľssel muss dann in der jeweiligen Dom√§ne angemeldet werden.

====Meshing √ľber WAN-Schnittstelle ([[Mesh on wan|Mesh on wan]]) aktivieren====

Wenn du die WAN-Schnittstelle nicht nur f√ľr einen Internetzugang verwenden m√∂chtest, sondern √ľber diese auch das Meshing-Protokoll aktivieren willst, um z.B. andere, evtl. langsamere Freifunk-Router mit dem Freifunk-Netz zu versorgen, gehst du wie folgt vor:

uci set network.mesh_wan.auto=1
uci commit network
/etc/init.d/network restart

====Meshing √ľber WAN-Schnittstelle deaktivieren====

uci set network.mesh_wan.auto=0
uci commit network
/etc/init.d/network restart

====Private WLAN====

Es ist möglich ein privates WLAN anzulegen, das mit dem WAN-Port gebridged und separat zum Mesh Netzwerk ist. Bitte beachte, dass Mesh on Wan nicht zeitgleich aktiviert werden sollte.
Effekt: Dieses private WLAN ist nun Teil des am WAN-Port anliegenden Heimnetzes. Gibt man ihm die gleichen Zugangsdaten (SSID & Passwort) wie dem bestehenden Heim-WLAN, so wird dieses effektiv erweitert. Zeitgleich fungiert der Router als Freifunk-Router. Freifunk und privates Netz bleiben dabei voneinander getrennt.

Das private WLAN kann im Config-Modus aktiviert werden, alternativ auch √ľber die Konsole wie folgt:

uci set wireless.wan_radio0=wifi-iface
uci set wireless.wan_radio0.device=radio0
uci set wireless.wan_radio0.network=wan
uci set wireless.wan_radio0.mode=ap
uci set wireless.wan_radio0.encryption=psk2
uci set wireless.wan_radio0.ssid="$SSID"
uci set wireless.wan_radio0.key="$KEY"
uci set wireless.wan_radio0.disabled=0
uci commit wireless
wifi

Bitte ersetze $SSID mit dem Namen deines Heimnetzwerks und $KEY mit deinem bisher √ľblichen Key (der vom privaten Router). Bei einem Dualband-Ger√§t (das 2.4 und 5 Ghz f√ľr WLAN verwendet), gibt es neben radio0 auch radio1; letzteres sollte genauso konfiguriert werden.

Zum deaktivieren des Ganzen wie folgt vorgehen:

uci set wireless.wan_radio0.disabled=1
uci commit wireless
wifi

====Meshing on LAN====

Eigentlich wird nur der WAN Anschluss zum Betreiben eines Freifunk Routers ben√∂tigt. Die anderen Ports jedoch bleiben ungenutzt. Das Meshing ist √ľber diese (meist gelben) LAN Ports abgeschaltet. Diese sind f√ľr Clients, neben WLAN, eine zus√§tzliche Verbindungsmethode. Man kann diese Ports jedoch auch daf√ľr benutzen um mit weiteren Routern zu "meshen":

uci set network.client.ifname='bat0'
uci set network.mesh_lan=interface
uci set network.mesh_lan.ifname="$(cat /lib/gluon/core/sysconfig/lan_ifname)"
uci set network.mesh_lan.mesh=bat0
uci set network.mesh_lan.proto=gluon_mesh
uci set network.mesh_lan.auto=1
uci commit network
reboot



Nur 2015.1.x:
# activate
uci set network.client.ifname="bat0"
uci set network.mesh_lan.auto=1
uci commit network
/etc/init.d/network restart

# deactivate
uci set network.client.ifname="bat0 $(cat /lib/gluon/core/sysconfig/lan_ifname)"
uci set network.mesh_lan.auto=0
uci commit network
/etc/init.d/network restart




Testen (funktioniert nur, wenn auch ein Kabel eingesteckt ist):

batctl if
sollte nun u.A. eth1: active anzeigen

ubus call network.interface.mesh_lan status
Sollte "up": true anzeigen

====Abrufen an welchen Ports Kabel eingesteckt sind====

swconfig dev switch0 show | grep 'link:'

====Gateways im Router an-/abschalten====
uci set fastd.mesh_vpn_backbone_peer_<>_vpn<>.enabled=0/1
uci commit
/etc/init.d/fastd restart

<> muss durch das K√ľrzel eurer Community ersetzt werden, z.B. ffnord

<> wird durch die Zahl des Gateways ersetzt (i.d.R. 0-3)

====Clientnetz zeitgesteuert an-/abschalten====
Dieser Crontab schaltet das Clientnetz um 21 Uhr aus und um 7 Uhr wieder ein. Das MESH Netz bleibt dabei aktiv.

crontab -e

i (um den Schreibmodus zu aktivieren)

0 21 * * * uci set wireless.client_radio0.disabled=1;uci set wireless.client_radio1.disabled=1;wifi
0 7 * * * uci set wireless.client_radio0.disabled=0;uci set wireless.client_radio1.disabled=0;wifi

ESC dann :wq

====Statusseite partiell ausblenden - Privacy (2016.1.x)====

Nachbarknoten (alles)
chmod -x /lib/gluon/status-page/www/cgi-bin/interfaces

Nachbarknoten (dBm)
chmod -x /lib/gluon/status-page/www/cgi-bin/dyn/stations

Statistik (alles)
chmod -x /lib/gluon/status-page/www/cgi-bin/dyn/statistics

====WAN auf allen Netzwerkports====
uci set network.client.ifname=bat0
uci set network.wan.ifname='eth0 eth1'
uci commit network

====ReBroadcast Mesh-on-WAN/LAN abschalten ([https://github.com/freifunk-gluon/gluon/issues/652 Default on 2016.2.x])====

With this option set incoming multicast payload frames on are not being rebroadcasted on again.

This option should be set on links which are known to be transitive and symmetric only, for instance point-to-point wifi longshots or wired links.

-- Linus L√ľssing

uci set network.mesh_wan.mesh_no_rebroadcast='1'
uci set network.mesh_lan.mesh_no_rebroadcast='1'
uci commit network
reboot && exit

====Weiterleitungs-Kosten des Mesh-Hop (Knoten) festlegen (2011.0.0 <= batman-adv < 2014.1.0)====

A higher [https://www.open-mesh.org/projects/batman-adv/wiki/Tweaking#hop-penalty hop penalty] will make it more unlikely that other nodes will choose this node as intermediate hop towards any given destination.

EX: Mobile nodes could choose a value of 255 (maximum value) to avoid being chosen as a router by other nodes.

1. Anzeigen (Default: 15)
cat /sys/class/net/bat0/mesh/hop_penalty

2. Temporär ändern, z.B. 100
echo 100 > /sys/class/net/bat0/mesh/hop_penalty

3. Persistent abspeichern, z.B. 100
uci set batman-adv.bat0.hop_penalty='100'
uci commit batman-adv

====POE Passthrough auf TP-Link CPE====

Ab Gluon 2016.2:

uci set system.gpio_switch_poe_passthrough=gpio_switch
uci set system.gpio_switch_poe_passthrough.name='PoE Passthrough'
uci set system.gpio_switch_poe_passthrough.gpio_pin='20'
uci set system.gpio_switch_poe_passthrough.value='1'
uci commit system


====Kanalkonfiguration updatefest speichern====

Diese Konfigurationsbefehle sind nur in speziellen Umgebungen geeignet, in denen mehrere Router Client-Netz anbieten und Mesh-Verbindungen z.B. √ľber Mesh-on-LAN erfolgen.
Wird in einer reinen Funk-Mesh-Umgebung der Kanal ge√§ndert ohne dass Nachbar-Knoten auf den selben Kanal wechseln, k√∂nnen die Knoten untereinander keine Mesh-Verbindung √ľber Funk aufbauen!
Die entsprechenden Befehle lauten:

uci set wireless.radio0.channel='1'
uci set gluon-core.@wireless0=wireless
uci set gluon-core.@wireless0.preserve_channels="1"
uci commit





Der bisherige Dienst Fastd wird durch Tunneldigger/L2TP
ersetzt und abgeschaltet.

https://openwrt.org/docs/guide-user/luci/luci.essentials
Last Change: 28/09/21 18:37 | Help | Recent Changes | Edit Page |
| OliveWiki 3.10 (17.04.2019, 07.49 PHP7.2)