Gluon Administration und Entwicklung
Administration von Mobilgeräten aus
Was läuft hier und wie verwalte ich das
Aktuelle Version, Gerät, etc abfragen via SSH
gluon-info
Für Webinterface außerhalb der Config-Mode (d.h. im Betrieb) ist folgender SSH Befehl hilfreich:
ssh root@KNOTEN -L 12345:localhost:81
Unter http://localhost:12345 kann der Knoten dann verwaltet werden.
WICHTIG: entweder via ssh uci commit für speichern bzw. gluon-reconfigure && gluon-reload für Übernehmen oder speichern & neustarten im Wizard anwählen, sonst wird nichts gespeichert/angewendet
Der Login zum Webinterface im Betrieb ist ausschließlich über SSH-Tunnel möglich. Dies verbessert die Sicherheit des Netzes und trägt dazu bei das z.B. die Rechte einzelner Personen ordentlich einkassiert werden können ohne globale Passwort-Änderungen.
Liste der vorinstallieren SSH-keys
-- mkg20001 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIBBEhZ7sLQCNZXBunHMxEDS2Niy3wpnHgUPDBCNeKew mkg20001@gmail.com', -- gabor 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOJQSyzxAt5NJ3+IhwI0+Qvg0s4zofVJjizulhuwcSZo gabor@g', -- av 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILx3bNdCoR8CmDS30bGP+/QaC/3P4XfZUz6Kt5poDfAS av', -- reinisch 'ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA53/y7tolRs/+hySECf4rfUYrs7FIzh6qBhmUM/IADLYm/NEwHTrWp+zXBs6xYXTKkgTmjDurA8Knl+ow/BCETS5vCgfhNtSb1O9YO40+8NEF0fSPjyNcMXkJTy+4Lvaq3kwWf8BkD6s+8rxJPZJpPXg7UDm8PXnL71BwTVuCEfI3WQlGdXpbjbh6C1FDLUleWi3LmWJvMLow0gwAUvpEF6wJSkmuHTxvs4t8EYDjlcQwqfPnqRqcpIb9rgNGmWWP+E1BJA9o41IzetSh2jDCnPAjTqOw5FWcFY9MKNh9y/AygryVvCsWval17ctz/WXRM+26QZuZaje7lAnsuedsUw== w@0032 w@0037',
Was machen meine Pakete
Teil 1: War es die Firewall?
Firewall debuggen
Interessante Zonen: * mesh (alles was mit mesh zu tun hat, außer LAN mesh) * wired_mesh (Nur LAN mesh) * loc_client (Client AP)
Zone Debuggen
uci set firewall.ZONE.log=1 uci set firewall.ZONE.log_limit=10/second uci commit service firewall reload
Dann logread -f und Spaß haben
Teil 2: Was zur Hölle? (Wireshark muss ran)
Die Pakete können auch per Wireshark angezapft werden, tcpdump ist vorinstalliert
Anzapfen geht via sshdump Adapter in Wireshark (dazu in der liste unten das Zahnrad neben dem Adapter anwählen)
Interface bestenfalls any, zum Filtern macht es Sinn !olsrd && !openvpn zu benutzen, um Noise zu filtern
WICHTIG: Wenn der zugriff auf die Node über das mesh selbst erfolgt, ist eventuelle Rückkopplung durch mesh Traffic möglich. Der "not (port 22)" filter fängt das idR, aber bei mesh VPN wirds kritisch.
Was macht mein OLSR
Nachbarn auflisten
olsrd-cli olsr1 neigh olsrd-cli olsr2 neigh
Daten abfragen
olsrd-cli olsr1 nodeinfo all olsrd-cli olsr2 nodeinfo json <befehl> # bzw olsrd-cli olsr2 nodeinfo raw help
Performance
Performance zwischen zwei Nodes testen
Server
iptables -I INPUT -p tcp -m tcp --dport 5201 -j ACCEPT ip6tables -I INPUT -p tcp -m tcp --dport 5201 -j ACCEPT iperf3 -s
Client
iperf3 -c IP
ManMan Sync
manman-sync übernimmt die interface ips die im ManMan angegeben sind
Abgerufen werden diese vom Knoten jede Stunde (jeweils zu zufälliger, gleichbleibender Minute). Auf ManApi wird die Info ebenfalls für eine Stunde gecached
Folgendes Namensschema wird verwendet, um ein ManMan Interface in ein Gluon Interface umzuwandeln
wifi -> mesh_radio0 tunnel -> mesh_vpn wan -> mesh_uplink lan -> mesh_other * (z.B. radio1) -> mesh_* *_* (z.B. ibss_radio0) -> *_*
In Gluon wird die Wi-Fi-IP für 802.11s verwendet
Das Setzen einer IP für IBSS ist dennoch möglich, in dem das Interface ibss_radio0 genannt wird
Ungültige Interfacenamen werden in gluon-static-ip config geworfen und bleiben dort für immer (oder bis jemand sie aufräumt), sind aber effektiv wirkungslos
WICHTIG: aktuell gibt es noch kein Rollback Support. d.h. kaputtmachen ist leicht. Das wird in Zukunft dann besser gemacht.
gdb
Was macht mein C code?
- in targets/x86-64 'gdb' und 'gdbserver' ergänzen (nicht commiten, nur lokal)
- x86-64 qemu debug bauen, irgendwo starten
- make GLUON_DEBUG=1 GLUON_TARGET=x86-64 -j12
- In /etc/config/firewall GDB durch die firewall lassen:
config rule 'allow_gdb' option name 'Allow GDB' option src '*' option proto 'tcp' option dest_port '3344' option target 'ACCEPT'
- GDBServer starten:
gdbserver --attach 0.0.0.0:3344 PID
- Lokal dann mit gdb oder pwndbg verbinden
target remote <ip>:3344