Freifunk Dresden: Unterschied zwischen den Versionen

Aus C3D2
Zur Navigation springen Zur Suche springen
(33 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Broken|Reason=Technische Details depubliziert unter [[Intern:Freifunk_Dresden]]. Nicht überall wo Freifunk draufsteht ist auch freies Wissen drin. :-(|}}
[[Datei:1406FreifunkDresden-Logo.svg‎|rechts]]
[[Datei:1406FreifunkDresden-Logo.svg‎|rechts]]
[[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.<ref>Seite des [http://www.freifunk-dresden.de Freifunk Dresden]</ref>
[[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.<ref>Seite des [http://www.freifunk-dresden.de Freifunk Dresden]</ref>


== Entstehung ==
== Entstehung ==


[[Freifunk Dresden]] wurde ursprünglich unter dem Namen ''ddmesh'' von [[Stephan Enderlein]] gestartet und existiert bereits seit einigen Jahren.
[[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.
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 ==
== Mitmachen ==


Um Teil des Freifunk-Netzwerkes zu werden, braucht man sowohl die Freifunk-Firmware als auch einen passenden Router.
Um Teil des Freifunk-Netzwerkes zu werden, braucht man sowohl einen handelsüblichen Router als auch die passende Freifunk-Firmware-Version dazu.


=== Firmware ===
=== Firmware ===


Die aktuelle Versionsnummer der Dresdner Freifunk-Firmware lautet 2.1.2. Die entsprechende Datei kann [http://download.ddmesh.de/firmware/2.1.2/ar71xx/ hier] heruntergeladen werden. Die Firmware-Dateien sind nach den unterstützten Geräten benannt. Der Name einer Firmware-Datei setzt sich wie folgt zusammen:
Seit {{#formatdate:2014-12-03}} steht die [http://download.ddmesh.de/firmware/ Firmware] zur Verfügung.
openwrt-ar71xx-generic-''ROUTERNAME''-squashfs-''ZUSATZ''.bin
So ist die Datei
openwrt-ar71xx-generic-''tl-wr841n-v8''-squashfs-''factory''.bin
für einen Router mit der Bezeichnung ''TL-WR841N'' in der Hardware-Version 8 (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.


Die Firmware-Dateien sind nach den unterstützten Geräten benannt. Der Name einer Firmware-Datei setzt sich als <code>openwrt-ar71xx-generic-''ROUTERNAME''-squashfs-''ZUSATZ''.bin</code> zusammen.
: So ist beispielsweise die Datei <code>openwrt-ar71xx-generic-''tl-wr841n-v8''-squashfs-''factory''.bin</code> für einen Router
:* des Modells ''TL-WR841N''
:* in der ''V''ersion ''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 <code>openwrt-ar71xx-generic-''tl-wr841n-v8''-squashfs-''sysupgrade''.bin</code> bedeutet der Zusatz ''Sysupgrade'' hingegen, dass diese Datei zum Updaten eines bereits für den Dresdner Freifunk im Einsatz befindlichen Routers ist.


Genauere Erklärungen zur Firmware finden sich im [[Freifunk Dresden/Firmware-Handbuch | Firmware-Handbuch]].
Ausführliche Erklärungen zur Konfiguration der Firmware sowie alle anderen Informationen bezüglich Freifunk Dresden, werden im [[freifunk-dresden:Hauptseite | Wiki]] (wiki.freifunk-dresden.de) gepflegt.


=== Router ===
=== Router ===


Wie der [http://download.ddmesh.de/firmware/2.1.2/ar71xx/ 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:
Wie der [http://download.ddmesh.de/firmware/ 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.<br>
Eine aktuelle Übersicht wird im Wiki von Freifunk Dresden gepflegt [https://wiki.freifunk-dresden.de/index.php/Router Router].


{| class="wikitable sortable zebra toptextcells"
{| class="wikitable sortable zebra toptextcells"
Zeile 34: Zeile 35:
! Geräte-Name
! Geräte-Name
! Hersteller
! Hersteller
! Preis
! Preis (&euro;)
! Beschreibung
! RAM (MB)
! ROM (MB)
! class="unsortable" | Beschreibung
|-
|-
| TL-WR841N
| TL-WR841N
| TP-Link
| TP-Link
| 15-20€
| style="text-align:right" | 16-20
| Im Unterschied zum Modell mit der Endung ''ND'' mit nicht abnehmbaren Antennen ausgestattet
| style="text-align:right" | 32
| style="text-align:right" | 4
| Im Unterschied zum Modell mit der Endung ''ND'' mit nicht abnehmbaren Antennen ausgestattet.
|-
|-
| TL-WR841ND
| TL-WR841ND
| TP-Link
| TP-Link
| 20-25€
| style="text-align:right" | 20-29
| ''D'' steht für ''detachable'', der Router besitzt also abnehmbare Antennen
| style="text-align:right" | 32
| style="text-align:right" | 4
| ''D'' steht für ''detachable'', der Router besitzt also abnehmbare Antennen.
|-
| TL-WDR3600
| TP-Link
| style="text-align:right" | 40-
| style="text-align:right" | 128
| style="text-align:right" | 8
| mehr Speicher, USB Anschlüsse, auch 5 GHz, 2 abnehmbare Antennen
|-
| TL-WDR4300
| TP-Link
| style="text-align:right" | 45-
| style="text-align:right" | 128
| style="text-align:right" | 8
| mehr Speicher, USB Anschlüsse, auch 5 GHz, 3 abnehmbare Antennen
|-
| Nanostation&nbsp;M2&nbsp;loco
| Ubiquiti
| style="text-align:right" | 40-
| style="text-align:right" | 32
| style="text-align:right" | 8
| 2,4 GHz Richtfunk, Outdoor, 60° Öffnungswinkel, Power over Ethernet + Injector
|-
|-
|}
|}
Auch interessant für weitere Bastelarbeiten: [https://vocore.io/ vocore]
== 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 [http://www.freifunk-dresden.de/topology/google-maps.html Freifunk-Karte] einsehbar.
Neben den festen Standorten gibt es Freifunk auch auf [[Freifunk Dresden/Veranstaltung | Veranstaltung]]en, wie z. B. Weihnachtsmärkten.


== Original-Firmware ==
== Original-Firmware ==


Die Firmware basiert auf [[w:de:OpenWrt|OpenWrt]] mit BMX (Vorläufer von batman-adv) und einer custom Weboberfläche.
Die Firmware basiert auf [[w:de:OpenWrt|OpenWrt]] mit BMX (Alternativentwicklung basierend auf batmand) und einer custom Weboberfläche.<br />
Das Routingprotokoll batman-adv wird hier nicht verwendet und wurde parallel zu BMX mit einem komplett anderen Ziel entwickelt.


Nutzung der wenig dokumentierten Original-Firmware hat folgende Vorteile:
Nutzung der Original-Firmware hat folgende Vorteile:
* Konsistente Konfiguration mit fast allen anderen Teilnehmern
* Konsistente Konfiguration mit fast allen anderen Teilnehmern
* Anschluß ans Backbone-VPN (vtun)
* Anschluß ans Backbone-VPN (vtun)
* Offenes WLAN, welches über das Backbone ins Internet kommt (alternativ durch zusätzliche Pakete ein eigener VPN-Dienst konfigurierbar)
* Offenes WLAN, welches über das Backbone ins Internet kommt (alternativ durch zusätzliche Pakete ein eigener VPN-Dienst konfigurierbar)
* Webserver der die Knotenmetadaten ausliefert
* Webserver der die Knotenmetadaten ausliefert (automatische Knotenregistrierung)


=== Freie Software und Peering ===
=== 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.
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 [https://github.com/ddmesh/firmware-freifunk-dresden GitHub] (Licensen beachten).<br />
Eine komplette Öffnung des Projektes ist bisher nicht vorgesehen gewesen, sodass u.a. eine Anleitung zum Selbstbau der Firmware fehlt und die Dokumentation so gut wie nicht vorhanden ist.
Die Dokumentation zum Bau eigner Firmware Images und Alternativ-Knoten sind im Aufbau.


Da zu [Freier Software|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.
Da zu [[w:de:Freier Software|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 [[Diskussion:Freifunk_Dresden|derzeit diskutiert]] um die jetzigen Betreiber in Blick auf offenem Zugang zu Informationen zu überzeugen.
Ideen dazu werden [[Diskussion:Freifunk Dresden|diskutiert]], um die jetzigen Betreibenden in Blick auf offenem Zugang zu Informationen zu überzeugen.


=== Links ===
== Technische Informationen ==


* [http://download.ddmesh.de/firmware/ Firmware]
Grundsätzlich soll das [http://wiki.freifunk-dresden.de/ Wiki Freifunk Dresden] Informationen, insbesondere auch technische Informationen, bereitstellen. Das ist wohl aber noch nicht der Fall und soll wohl in Arbeit sein.
** [http://download.ddmesh.de/firmware/testing_2.1.2/ar71xx/changelog.txt Changelog Testing-Version 2.1.2]
* [http://bt.freifunk-dresden.de/projects/freifunk-firmware Projekt ''Freifunk Firmware'' beim Bugtracker (Redime) von] [[Freifunk Dresden]]


== WLAN-Einstellungen ==
=== Quellcode ===


Wird [[Intern:Freifunk_Dresden|derzeit Intern]] beschrieben.
Der Quellcode soll auf [[#GitHub]] verfügbar sein. Dies gilt insbesondere für die [[#Firmware]].<ref>https://github.com/ddmesh/firmware-freifunk-dresden</ref>


== Adressvergabe ==
=== mögliche Probleme beim Betrieb der Technik ===


==== IP-Adressberechnungs mit Shell- und Lua Script ====
== Metadaten ==


Die Berechnung kann sich in künftigen Versionen ändern, derzeit wird u.a. eine Aufteilung des Netzwerkes in "original"-FFF und "custom" erwogen. Deshalb ist Vorsicht geboten was die Aktualität des Inhaltes angeht - bitte überprüfen bevor ihr peert.
=== Freifunk-API ===


Die Scripte deren Algorithmus formalisiert werden soll:
Es existiert eine Inter-Community-API analog zur SpaceAPI. Beispiel: [http://cholin.spline.de/freifunk/api-viewer/ Freifunk API Viewer]


===== usr/bin/ddmesh-ipcalc.sh =====
[https://github.com/freifunk/directory.api.freifunk.net/blob/master/directory.json Directory.json], [http://info.ddmesh.de/info/freifunk.json Dresden]
<source lang="bash">
#!/bin/sh


if [ "$1" = "" ]
=== Knotenmetadaten ===
then
echo ""
        echo "ddmesh-ipcalc.sh (lua) Stephan Enderlein (c) 2013 V1.7"
echo ""
        echo "Calculates all the addresses for the ddmesh freifunk node"
echo "usage: ddmesh-ipcalc.sh [-n node] | [ip]"
echo ""
        exit 1
fi
 
if [ "$1" = "-n" ]; then
node=`echo "$2" | sed 's/[\$\`\(\)]/0/g'`
lua -lddmesh -e "ipcalc.print($node)"
else
ip=`echo "$1" | sed 's/[\$\`\(\)]/0/g'`
lua -lddmesh -e "print(iplookup(\"$ip\"))"
fi


</source>
Jeder Knoten bietet ein JSON-Dokument unter http://10.200.../sysinfo.json an. Es enthält Versionsstände, Geokoordinaten, Kontaktinfo, Auslastung und alle Routen.


===== usr/lib/lua/ddmesh.lua =====
== IPv4-Meshing mit bmxd ==


<source lang="lua">
BMXD is eine "expermientelle" Variante von b.a.t.m.a.n, welche rundsätzlich intern ähnlich funktioniert, aber zusätzliche
--[[----------------------------------------------------------------------------------------
Konfigurationen des Routings erlauben. Zusätzlich nutzt diese Varinate drei Routing-Tabellen, wodurch ein geziehltes Definieren
ddmesh.lua
von Routing-Regeln möglich ist. Dieses kann dazu verwendet werden, Angriffe auf das Routing und dann das Umleiten von Traffic
library for different freifunk functions
zu verhindern.
version: 6
Das war auch das Entscheidungkriterium für dieses Protokoll.
-------------------------------------------------------------------------------------------]]


----------------- ipcalc ---------------
Allderdings wird dieses Protokoll (bmxd) nicht mehr vom Author weiterentwicklet oder verbessert. Eine Weiterentwicklung ist auch
ipcalc={}
nicht nötig, wenn alle Funktionalitäten erfüllt werden.
ipcalc.data={}
ipcalc.data.max=2048


function split(str, delim, maxNb)
Während des Betriebs von Freifunk Dresden mit BMXD und der Testungsdurchläufen, sind allerdings einige Programmierfehler sichtbar geworden.
    -- Eliminate bad cases...
Diese wurden dann direkt in den Quellen von Freifunk Dresden, welches die Sourcen von bmxd enthält, korregiert.
    if string.find(str, delim) == nil then
        return { str }
    end
    if maxNb == nil or maxNb < 1 then
        maxNb = 0    -- No limit
    end
    local result = {}
    local pat = "(.-)" .. delim .. "()"
    local nb = 0
    local lastPos
    for part, pos in string.gfind(str, pat) do
        nb = nb + 1
        result[nb] = part
        lastPos = pos
        if nb == maxNb then break end
    end
    -- Handle the last field
    if nb ~= maxNb then
        result[nb + 1] = string.sub(str, lastPos)
    end
    return result
end


function ipcalc.rCalcIp(ip)
Die letzten Änderungen betreffen sogar den Rausschmiss einiger Funktionalitäten, um Speicher zu sparen und Datendurchsätze zu verdreifachen.
    if ip==nil or ip=="" then return -1 end
    a = split(ip, "[.]")
    if #a ~= 4 then return -1 end
    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]
Sicherlich ist es möglich, eigene Firmwares mit dem Protokoll zu bauen und ins Freifunk Dresden Netzwerk einzubinden. Allerdings sind einige
    if a[2]=="201" then middle = middle + 256 end
logische und organisatorische Bedingungen zu erfüllen und strickt einzuhalten.
    minor = math.floor(a[4]/64) --x>>6
Wenn das nicht erfolgt, ist es garantiert, dass das Freifunk Netz damit gestört wird.
    node = middle*4+minor --x<<2
Einen Schutz dagegen, kann BMXD und deren Varianten nicht erfüllen.
    if node < 0 or node > ipcalc.data.max then return -1 end
https://wiki.freifunk-dresden.de/index.php/Knoten_Spezifikation
    return node
end
=== Bauen ===


function ipcalc.calc(node)
Code, letzte Commits im Feb 2011, gibts [https://github.com/axn/bmxd auf Github].
    --node has to be a number n \in N_0, 0 <= n <= 2048
    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"
<pre>
git clone git://github.com/axn/bmxd.git
cd bmxd
make -j5
strip bmxd  # Spart Platz
</pre>


    --Ternary Operator in use
=== Voraussetzungen ===
    -- major network for nodes n < 1024: 200, for nodes > 1023: 201
    local major  = node >= 1024 and 201 or 200                    --a[2]
    -- etc.
    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"
* Lies die [http://man7.org/linux/man-pages/man8/ip-rule.8.html ip-rule Manpage] um die Abarbeitung von Regeln mit mehreren Routing-Tabellen zu verstehen.
    local nodeip  = meshnet .. "." .. major .. "." .. middle .. "." .. minor + 1
* Vergewisser dich ob der Broadcast-Adresse deines Adhoc-Interfaces. Mit ''ip addr add'' stimmte manchmal was nicht.
    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
=== Starten ===
    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
<pre>bmxd dev=adhoc0</pre>
    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"


    -- preparing variabled to be expoted
Der Routing-Daemon daemonisiert sofort und schreibt ins Syslog. Mit <code>bmxd -c</code> kann man sich nun zu ihm verbinden und Informationen entlocken (siehe [[#Nützliches]]).
    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)
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.


    if node==nil or node=="" then print("ERROR"); return -1 end
=== Nützliches ===
    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
;Ausführliche Hilfe:
        print("export _ddmesh_"..k.."="..v)
:<pre>bmxd -x</pre>
    end
;Aktuelle Routen
end
:<pre>bmxd -cid8</pre>
;Aktuelle empfangene HNAs (''Host and Network Association'', Subnetze)
:<pre>bmxd -c --hnas</pre>
;HNA ankündigen
:<pre>bmxd -c -a 172.22.99.0/24</pre>


--not needed for ip address calculation
== Wiki ==
function iplookup(ip)
* [[:Kategorie:Freifunk Dresden]]
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
 
--not needed for ip address calculation
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
</source>
 
== Metadaten ==
 
=== Freifunk-API ===
 
Es existiert eine Inter-Community-API analog zur SpaceAPI. Beispiel: [http://cholin.spline.de/freifunk/api-viewer/ Freifunk API Viewer]
 
[https://github.com/freifunk/directory.api.freifunk.net/blob/master/directory.json Directory.json], [http://info.ddmesh.de/info/freifunk.json Dresden]
 
=== Knotenmetadaten ===
 
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.
 
== Einzelnachweise ==
<references/>


== Siehe auch ==
== Siehe auch ==
* [[wikipedia:de:Freifunk]]
* [[wikipedia:de:Freifunk]]
* [https://wiki.freifunk.net/Freifunk_Dresden freifunk:Freifunk Dresden]
* [https://wiki.freifunk.net/Freifunk_Dresden freifunk:Freifunk Dresden]
* [[Freifunk]]
* Planung zu [[Datenspuren 2014/Freifunk Dresden | Freifunk bei den Datenspuren 2014]]
* Planung zu [[Datenspuren 2014/Freifunk Dresden | Freifunk bei den Datenspuren 2014]]
* [[Freifunk Dresden]] bei den [[Datenspuren]]
* [[Freifunk Dresden]] bei den [[Datenspuren]]
Zeile 297: Zeile 205:
* [https://www.freifunk-dresden.de/ <code>www.freifunk-dresden.de</code>, Homepage von] [[Freifunk Dresden]]
* [https://www.freifunk-dresden.de/ <code>www.freifunk-dresden.de</code>, Homepage von] [[Freifunk Dresden]]
** [https://dresden.freifunk.net/ <code>dresden.freifunk.net</code>]
** [https://dresden.freifunk.net/ <code>dresden.freifunk.net</code>]
** [http://wiki.freifunk-dresden.de/ <code>wiki.freifunk-dresden.de</code>, Wiki von] [[Freifunk Dresden]]
** [http://bt.freifunk-dresden.de/ Bugtracker von] [[Freifunk Dresden]]
** [http://bt.freifunk-dresden.de/ Bugtracker von] [[Freifunk Dresden]]
* [http://www.ddmesh.de/hotspots.html Hotspot-Liste]
* [http://www.ddmesh.de/ <code>www.ddmesh.de</code>] (wie auch <code>www.freifunk-dresden.de</code>)
** [http://download.ddmesh.de/firmware/ Firmware]
*** [http://download.ddmesh.de/firmware/latest/ar71xx/changelog.txt changelog der aktuellen Version der Firmware]
** [http://www.ddmesh.de/hotspots.html Hotspot-Liste]
* [https://github.com/ddmesh/firmware-freifunk-dresden Firmware auf GitHub]
* [https://drive.google.com/?ddrp=1#folders/0B1LY99qDqRVPdTBNT2JEMlRkRzQ Flyer / Sticker / Kollaboration für Werbemittel]
* [https://drive.google.com/?ddrp=1#folders/0B1LY99qDqRVPdTBNT2JEMlRkRzQ Flyer / Sticker / Kollaboration für Werbemittel]
== Einzelnachweise ==
<references/>


[[Kategorie:Projekt]]
[[Kategorie:Projekt]]
[[Kategorie:WLAN]]
[[Kategorie:freier Netzzugang]]
[[Kategorie:Dresden]]
[[Kategorie:Dresden]]
[[Kategorie:OpenWrt]]

Version vom 12. Dezember 2018, 09:42 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]

Entstehung

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.

Firmware

Seit 2014-12-03 steht die Firmware zur Verfügung.

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 sowie alle anderen Informationen bezüglich Freifunk Dresden, 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.
Eine aktuelle Übersicht wird im Wiki von Freifunk Dresden gepflegt Router.

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

Auch interessant für weitere Bastelarbeiten: vocore

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

Directory.json, Dresden

Knotenmetadaten

Jeder Knoten bietet ein JSON-Dokument unter http://10.200.../sysinfo.json an. Es enthält Versionsstände, Geokoordinaten, Kontaktinfo, Auslastung und alle Routen.

IPv4-Meshing mit bmxd

BMXD is eine "expermientelle" Variante von b.a.t.m.a.n, welche rundsätzlich intern ähnlich funktioniert, aber zusätzliche Konfigurationen des Routings erlauben. Zusätzlich nutzt diese Varinate drei Routing-Tabellen, wodurch ein geziehltes Definieren von Routing-Regeln möglich ist. Dieses kann dazu verwendet werden, Angriffe auf das Routing und dann das Umleiten von Traffic zu verhindern. Das war auch das Entscheidungkriterium für dieses Protokoll.

Allderdings wird dieses Protokoll (bmxd) nicht mehr vom Author weiterentwicklet oder verbessert. Eine Weiterentwicklung ist auch nicht nötig, wenn alle Funktionalitäten erfüllt werden.

Während des Betriebs von Freifunk Dresden mit BMXD und der Testungsdurchläufen, sind allerdings einige Programmierfehler sichtbar geworden. Diese wurden dann direkt in den Quellen von Freifunk Dresden, welches die Sourcen von bmxd enthält, korregiert.

Die letzten Änderungen betreffen sogar den Rausschmiss einiger Funktionalitäten, um Speicher zu sparen und Datendurchsätze zu verdreifachen.

Sicherlich ist es möglich, eigene Firmwares mit dem Protokoll zu bauen und ins Freifunk Dresden Netzwerk einzubinden. Allerdings sind einige logische und organisatorische Bedingungen zu erfüllen und strickt einzuhalten. Wenn das nicht erfolgt, ist es garantiert, dass das Freifunk Netz damit gestört wird. Einen Schutz dagegen, kann BMXD und deren Varianten nicht erfüllen.

https://wiki.freifunk-dresden.de/index.php/Knoten_Spezifikation

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)
bmxd -c --hnas
HNA ankündigen
bmxd -c -a 172.22.99.0/24

Wiki

Siehe auch

Weblinks

Einzelnachweise