Jeder Knoten bietet ein JSON-Dokument unter http://10.200.../sysinfo-json.cgi an. Es enthält Versionsstände, Geokoordinaten, Kontaktinfo, Auslastung und alle Routen.
Jeder Knoten bietet ein JSON-Dokument unter http://10.200.../sysinfo-json.cgi an. Es enthält Versionsstände, Geokoordinaten, Kontaktinfo, Auslastung und alle Routen.
== Veraltete Technische Informationen ==
Bitte konsultiert zuerst das [http://wiki.freifunk-dresden.de/ Wiki Freifunk Dresden] und
[http://wiki.freifunk-dresden.de/index.php/Knoten_Spezifikation Knoten Spezifikationen] für aktuelle Informationen,
da diese immer aktueller sind.<br/>
Derzeit enthält es noch keine techischen Informationen (ist aber in Arbeit).
<font color="red">Die Informationen hier in diesem Wiki sind derzeit veraltet und sind nicht mehr kompatibel mit dem Freifunk Dresden Netz. Sie sollten daher
nicht mehr verwendet werden, da es damit zu IP Konflikten kommt.</font>
=== WLAN-Einstellungen ===
In Syntax der <code>/etc/config/wireless</code> unter OpenWRT:
Viele WLAN-Treiber unter Linux lassen mehrere Interfaces pro Adapter zu. Du kannst Adhoc also auch mit AccessPoints konfigurieren. Allerdings sollte der Channel übereinstimmen.
=== Adressvergabe ===
Die Berechnung erfolgt über ein Script ''ddmesh-ipcalc.sh''. Die Berechnung hier in diesem Wiki ist veraltet.
=== Knotennummer reservieren ===
''registerkey'' ist ein eindeutiger Registrierungskey, mit dem der Knoten im Freifunk Netz registriert wird. Dieser wird derzeit
aus den MAC Adressen der Netzwerkkarten im Router und dem ssh-fingerprint generiert. Die Keylänge ist dabei zu erfüllen.
Für die Knotennummer 141 generiert es ein Netzzuweisung von '''10.200.35.64/26'''. Die erste nutzbare Adresse wird als '''10.200.35.65/8''' auf das Adhoc-Interface konfiguriert. Dann sollte auch die Broadcast-Adresse '''10.255.255.255''' stimmen.
==== IP-Adressberechnungs mit Shell- und Lua Script ====
Die Scripte deren Algorithmus formalisiert werden soll:
'''usr/bin/ddmesh-ipcalc.sh'''
<pre>
#!/bin/sh
if [ "$1" = "" ]
then
echo ""
echo "ddmesh-ipcalc.sh (lua) Stephan Enderlein (c) 2013 V1.7"
echo ""
echo "Calculates all the addresses for the ddmesh freifunk node"
if a[1]==nil or a[1]=="" or tonumber(a[1]) ~= 10 then return -1 end
if a[2]==nil or a[2]=="" or tonumber(a[2]) ~= 200 and tonumber(a[2]) ~= 201 then return -1 end
if a[3]==nil or a[3]=="" or tonumber(a[3]) < 0 or tonumber(a[3]) > 255 then return -1 end
if a[4]==nil or a[4]=="" or tonumber(a[4]) < 0 or tonumber(a[4]) > 255 then return -1 end
middle = a[3]
if a[2]=="201" then middle = middle + 256 end
minor = math.floor(a[4]/64) --x>>6
node = middle*4+minor --x<<2
if node < 0 or node > ipcalc.data.max then return -1 end
return node
end
function ipcalc.calc(node)
if node==nil or node=="" then return -1 end
node=tonumber(node)
if node==nil or node=="" then return -1 end
if node < 0 or node > ipcalc.data.max then return -1 end
local domain = "freifunk-dresden.de"
local major = node >= 1024 and 201 or 200 --a[2]
local middle = node >= 1024 and math.floor((node-1024) / 4) or math.floor(node / 4) --a[3]
local minor = (node % 4) * 64
local meshnet = "10"
local nodeip = meshnet .. "." .. major .. "." .. middle .. "." .. minor + 1
local meshnetmask = "255.0.0.0"
local meshpre = 15
local meshbroadcast = "10.255.255.255"
local meshnetwork = "10.200.0.0"
local dhcpstart = meshnet .. "." .. major .. "." .. middle .. "." .. minor + 2
local dhcpend = meshnet .. "." .. major .. "." .. middle .. "." .. minor + 63
local dhcpoffset = 1 --used by config/dhcp
local dhcplimit = 62 --used by config/dhcp
local dhcprangepre = 26
local dhcprangemask = "255.255.255.192"
local dhcpnetmask = "255.255.255.255"
local dhcpbroadcast = "10.255.255.255" -- needed, else dnsmasq will not start
local dhcpnetwork = meshnet .. "." .. major .. "." .. middle .. "." .. minor
local hna = meshnet .. "." .. major .. "." .. middle .. "." .. minor .. "/" .. dhcprangepre
local mesh6pre = "48"
local mesh6net = "fd11:11ae:7466::"
-- client range
local mesh6nodenet= "fd11:11ae:7466:" .. string.format("%x", node) .. "::"
local mesh6ip = mesh6nodenet .. "1"
local mesh6nodepre= "64"
ipcalc.data.node = node
ipcalc.data.domain = domain
ipcalc.data.hostname = "r" .. node
ipcalc.data.ip = nodeip
ipcalc.data.network = meshnetwork
ipcalc.data.netpre = meshpre
ipcalc.data.netmask = meshnetmask
ipcalc.data.broadcast = meshbroadcast
ipcalc.data.dhcpstart = dhcpstart
ipcalc.data.dhcpend = dhcpend
ipcalc.data.dhcpoffset = dhcpoffset
ipcalc.data.dhcplimit = dhcplimit
ipcalc.data.dhcprangepre = dhcprangepre
ipcalc.data.dhcprangemask = dhcprangemask
ipcalc.data.dhcpnetwork = dhcpnetwork
ipcalc.data.dhcpbroadcast = dhcpbroadcast
ipcalc.data.dhcpnetmask = dhcpnetmask
ipcalc.data.clienthna = hna
ipcalc.data.mesh6ip = mesh6ip
ipcalc.data.mesh6net = mesh6net
ipcalc.data.mesh6pre = mesh6pre
ipcalc.data.mesh6nodenet = mesh6nodenet
ipcalc.data.mesh6nodepre = mesh6nodepre
end
function ipcalc.print(node)
if node==nil or node=="" then print("ERROR"); return -1 end
node=tonumber(node)
if node==nil then print("ERROR"); return -1 end
if node < 0 or node > ipcalc.data.max then return -1 end
ipcalc.calc(node)
for k,v in pairs(ipcalc.data)
do
print("export _ddmesh_"..k.."="..v)
end
end
function iplookup(ip)
if ip==nil then return -1 end
n=ipcalc.rCalcIp(ip)
if n == -1 then return -1 end
ipcalc.calc(n)
return ipcalc.data.hostname
end
function lookup(node)
if node==nil then return -1 end
if string.sub(node,1,1) == "r" then
n=tonumber(string.sub(node,2))
else
n=tonumber(node)
end
if n==nil then return -1 end
if n < 0 or n > ipcalc.data.max then return -1 end
ipcalc.calc(n)
return ipcalc.data.ip
end
</pre>
== IPv4-Meshing mit bmxd ==
== IPv4-Meshing mit bmxd ==
Version vom 20. Mai 2015, 02:14 Uhr
Freifunk Dresden ist das Projekt in Dresden zu wikipedia:de:Freifunk. Das Freifunk-Netz Dresden ist ein von Freiwilligen betriebenes freies WLAN-Netzwerk. Ziel ist es, Dresden flächendeckend mit Freifunk zu versorgen.[1]
Freifunk Dresden wurde ursprünglich unter dem Namen ddmesh von Stephan Enderlein gestartet und existiert bereits seit einigen Jahren.
Seit 2014 sind durchgängig mehr als 50 Knoten in Dresden erreichbar und auch Geschäfte in Dresden nehmen die Vorteile von Freifunk für sich und ihre Kunden wahr.
Mitmachen
Um Teil des Freifunk-Netzwerkes zu werden, braucht man sowohl einen handelsüblichen Router als auch die passende Freifunk-Firmware-Version dazu.
Die Firmware-Dateien sind nach den unterstützten Geräten benannt. Der Name einer Firmware-Datei setzt sich als openwrt-ar71xx-generic-ROUTERNAME-squashfs-ZUSATZ.bin zusammen.
So ist beispielsweise die Datei openwrt-ar71xx-generic-tl-wr841n-v8-squashfs-factory.bin für einen Router
des Modells TL-WR841N
in der Version 8 (der Hardware)
siehe Etikett auf der Unterseite des Gerätes.
Factory bedeutet, dass diese Firmware-Datei für die Erstinstallation der Freifunk-Firmware auf einem Gerät verwendet werden muss, auf dem sich bisher noch eine andere Firmware befindet, meist die Original-Firmware des Herstellers.
Beim Dateinamen openwrt-ar71xx-generic-tl-wr841n-v8-squashfs-sysupgrade.bin bedeutet der Zusatz Sysupgrade hingegen, dass diese Datei zum Updaten eines bereits für den Dresdner Freifunk im Einsatz befindlichen Routers ist.
Ausführliche Erklärungen zur Konfiguration der Firmware werden im Wiki (wiki.freifunk-dresden.de) gepflegt.
Router
Wie der Firmware-Liste zu entnehmen ist, gibt es eine Vielzahl an Freifunk-kompatiblen Routern. Allerdings erfreuen sich bestimmte Modelle in Dresden meist insbesondere wegen der günstigen Anschaffungskosten besonderer Beliebtheit:
Geräte-Name
Hersteller
Preis (€)
RAM (MB)
ROM (MB)
Beschreibung
TL-WR841N
TP-Link
16-20
32
4
Im Unterschied zum Modell mit der Endung ND mit nicht abnehmbaren Antennen ausgestattet.
TL-WR841ND
TP-Link
20-29
32
4
D steht für detachable, der Router besitzt also abnehmbare Antennen.
TL-WDR3600
TP-Link
40-
128
8
mehr Speicher, USB Anschlüsse, auch 5 GHz, 2 abnehmbare Antennen
TL-WDR4300
TP-Link
45-
128
8
mehr Speicher, USB Anschlüsse, auch 5 GHz, 3 abnehmbare Antennen
Nanostation M2 loco
Ubiquiti
40-
32
8
2,4 GHz Richtfunk, Outdoor, 60° Öffnungswinkel, Power over Ethernet + Injector
Standorte
Das Netz von Freifunk Dresden erstreckt sich nicht nur über Dresden selbst, sondern ist mittlerweile vereinzelt u. a. in
Coswig,
Freital,
Meißen,
Radeberg und
Radebeul
zu finden. Detaillierte Standortinformationen sind auf der Freifunk-Karte einsehbar.
Neben den festen Standorten gibt es Freifunk auch auf Veranstaltungen, wie z. B. Weihnachtsmärkten.
Original-Firmware
Die Firmware basiert auf OpenWrt mit BMX (Alternativentwicklung basierend auf batmand) und einer custom Weboberfläche.
Das Routingprotokoll batman-adv wird hier nicht verwendet und wurde parallel zu BMX mit einem komplett anderen Ziel entwickelt.
Nutzung der Original-Firmware hat folgende Vorteile:
Konsistente Konfiguration mit fast allen anderen Teilnehmern
Anschluß ans Backbone-VPN (vtun)
Offenes WLAN, welches über das Backbone ins Internet kommt (alternativ durch zusätzliche Pakete ein eigener VPN-Dienst konfigurierbar)
Webserver der die Knotenmetadaten ausliefert (automatische Knotenregistrierung)
Freie Software und Peering
Die Software ist frei und kann durch die Quellen von OpenWRT und die Sourcen zu Änderungen von der Freifunk-Seite eingesehen werden. Konfiguration und Scripte sind in den Images zu finden oder auf GitHub (Licensen beachten).
Die Dokumentation zum Bau eigner Firmware Images und Alternativ-Knoten sind im Aufbau.
Da zu Freie Software für viele von uns auch der freie und möglichst barrierefreiem Zugang zu weiteren Informationen zählt, wollen wir diesen Umstand ändern - auch um Freifunk noch besser machen zu können. Im Widerspruch dazu steht das berechtigte Interesse der bisherigen Freifunk-Teilnehmer auf einen Störungsfreien Betrieb und infolgedessen Imageschaden bei den normalen Benutzern, der durch Experimente mit alternativer Firmware gefährdet sein könnte - das Marketing für Freie Software sowie für Freifunk selbst sind leider schwierig.
Ideen dazu werden diskutiert, um die jetzigen Betreibenden in Blick auf offenem Zugang zu Informationen zu überzeugen.
Technische Informationen
Grundsätzlich soll das Wiki Freifunk Dresden Informationen, insbesondere auch technische Informationen, bereitstellen. Das ist wohl aber noch nicht der Fall und soll wohl in Arbeit sein.
Quellcode
Der Quellcode soll auf #GitHub verfügbar sein. Dies gilt insbesondere für die #Firmware.[2]
mögliche Probleme beim Betrieb der Technik
Metadaten
Freifunk-API
Es existiert eine Inter-Community-API analog zur SpaceAPI. Beispiel: Freifunk API Viewer
Jeder Knoten bietet ein JSON-Dokument unter http://10.200.../sysinfo-json.cgi an. Es enthält Versionsstände, Geokoordinaten, Kontaktinfo, Auslastung und alle Routen.
IPv4-Meshing mit bmxd
Bauen
Code, letzte Commits im Feb 2011, gibts auf Github.
git clone git://github.com/axn/bmxd.git
cd bmxd
make -j5
strip bmxd # Spart Platz
Voraussetzungen
Lies die ip-rule Manpage um die Abarbeitung von Regeln mit mehreren Routing-Tabellen zu verstehen.
Vergewisser dich ob der Broadcast-Adresse deines Adhoc-Interfaces. Mit ip addr add stimmte manchmal was nicht.
Starten
bmxd dev=adhoc0
Der Routing-Daemon daemonisiert sofort und schreibt ins Syslog. Mit bmxd -c kann man sich nun zu ihm verbinden und Informationen entlocken (siehe #Nützliches).
Geht alles glatt, legt er seine Routen in den Tabellen 64 & 65 ab. Das bedeuetet, dass ein einfacher ip r-Aufruf keine Meshadressen anzeigt. Erst ip route show table all bringt sie zum Vorschein. Diese Routing Tabellen werden bevorzugt, da bmxd entsprechende ip rule-Regeln mit höherer Präferenz als der default-Tabelle anlegt.
Nützliches
Ausführliche Hilfe
bmxd -x
Aktuelle Routen
bmxd -cid8
Aktuelle empfangene HNAs (Host and Network Association, Subnetze)