Freifunk unter OpenBSD
Aus freifunk-brb.de
→Nächstältere Version | Nächstjüngere Version←
Inhaltsverzeichnis |
Voraussetzungen
Achtung!!! Diese Seite ist "Work In Progress", also Fehler nicht ausgeschlossen.
Netzwerkparameter
- Netzname brb.freifunk.net
- Netzwerkkanal 1
- BSSID 02:ca:ff:ee:ba:be
- IP Adresse deine angemeldete IP Adresse
- Netzmaske 255.255.0.0
- Broadcast 10.23.255.255
- Nameserver ein oder mehrere IP Adressen von Access Points, z.B. 10.23.4.56
System vorbereiten
IP Forwarding aktivieren
Die Datei /etc/sysctl.conf(5) editieren, und net.inet.ip.forwarding=1 aktivieren.
Diese Einstellung wird dann beim nächsten reboot aktiviert. Um IP forwarding ohne reboot zu aktivieren, als root folgendedn Befehl ausführen:
sysctl net.inet.ip.forwarding=1
WLAN Karte konfigurieren
Editiere deine /etc/hostname.if(5) Datei, z.B. /etc/hostname.rum0 wie im Falle meines USB WLAN Sticks, wie folgendes Beispiel:
nwid brb.freifunk.net chan 1 mediaopt ibss bssid 02:ca:ff:ee:ba:be inet DEINE_IP_ADRESSE 255.255.0.0 10.23.255.255 !/usr/local/sbin/olsrd -d 0
Ersetze DEINE_IP_ADRESSE mit deiner IP Adresse.
Wenn die Datei existiert, und die WLAN karte beim booten aktiv ist, wird diese
konfiguriert, und olsrd als Hintergrundprozess automatisch gestartet. Im Falle die WLAN Karte wird im laufenden Betrieb eingesteckt, warten bis der Kernel sie erkannt hat, dann folgenden Befehl ausführen:
sh /etc/netstart rum0
rum0 mit dem Namen deiner Netzwerkkarte ersetzen.
DNS konfigurieren
Editiere deine /etc/resolv.conf und trage einen freien Nameserver ein, z.B:
lookup file bind nameserver 212.204.60.4
Olsrd Software
Olsrd Version 0.5.6-r3 ist in den ports von OpenBSD 4.5 enthalten, und gibts als package schon fertig zum runterladen.
Installieren also folgendermaßen als root:
export PKG_PATH=ftp://ftp.de.openbsd.org/pub/OpenBSD/4.5/packages/i386/ pkg_add -i olsrd
oder den Port selbst kompilieren:
cd /usr/ports/net/olsrd make install clean
Mehr zur Konfiguration siehe olsrd.conf(5)
Freifunk auf dem Notebook (Mobiler Client) konfigurieren
Olsrd Konfiguration
Auf einem mobilen Client (hier angenommen die WLAN Karte ist vom Typ rum) sollte die olsrd Konfigurationsdatei /etc/olsrd.conf folgendermassen aussehen:
DebugLevel 3
IpVersion 4
ClearScreen yes
AllowNoInt yes
IpcConnect
{
MaxConnections 3
Host 127.0.0.1
}
UseHysteresis no
LinkQualityLevel 2
LinkQualityWinSize 14
Pollrate 0.05
NicChgsPollInt 3.0
TcRedundancy 2
MprCoverage 1
Willingness 7
LoadPlugin "olsrd_dot_draw.so.0.3" {}
# Fish-Eye link Quality
LinkQualityFishEye 1
Interface "rum0"
{
AutoDetectChanges yes
HelloInterval 2.0
HelloValidityTime 20.0
TcInterval 0.5
TcValidityTime 5.0
LinkQualityMult 10.23.4.87 1.0
LinkQualityMult default 0.8
}
Die Plugins werden im Package/Port nicht mit installiert. Drum solltet ihr diese Zeile auskommentieren, falls ihr olsrd nicht selbst kompiliert und installiert habt. Die Parameter LinkQualityMult in der Interface konfiguration solltet ihr auch auskommentieren, es sei denn, ihr wisst was ihr tut. Der Hintergrund hier ist folgender: Mein Router zu Haus hat die IP 10.23.4.87, und dieser hat auch einen Uplink. Aus diesem Grunde möchte ich mich zum Internet natürlich über diesen direkt verbinden, und nicht über mögliche anwesende andere Notebooks in der Nähe geroutet werden.
Freifunk auf dem Router (Access Point mit Uplink) konfigurieren
Olsrd Konfiguration
Auf einem Router mit Uplink zum Internet sollte die /etc/olsrd.conf folgenden Inhalt haben:
DebugLevel 0
IpVersion 4
ClearScreen yes
AllowNoInt yes
Hna4
{
0.0.0.0 0.0.0.0
}
IpcConnect
{
MaxConnections 3
Host 127.0.0.1
}
UseHysteresis no
LinkQualityLevel 2
LinkQualityWinSize 14
Pollrate 0.05
NicChgsPollInt 3.0
TcRedundancy 2
MprCoverage 1
Willingness 7
# Fish-Eye link Quality
LinkQualityFishEye 1
Interface "wi0"
{
AutoDetectChanges yes
HelloInterval 2.0
HelloValidityTime 20.0
TcInterval 0.5
TcValidityTime 5.0
}
Der wichtigste Unterschied zum Mobilen Client ist der Hna4 Abschnitt. Damit propagiert die Node einen Uplink zum Internet, und kann von den anderen somit als Exit aus dem Freifunk ins Internet genutzt werden.
PF Firewall auf dem Router
Der Router als Beispiel hat 2 Interfaces:
- 1x Wireless (wi0 (hier im Beispiel 10.23.4.87)) fürs Freifunk
- 1x Ethernet (hier im Beispiel sis0, dynamische IP via DHCP), als Uplink zum Internet
Die Firewall auf dem Router ist folgendermassen konfiguriert:
- erlaube in allen Richtungen ausgehenden Netzwerkverkehr vom Router
- erlaube eingehende olsrd Routing Pakete
- NAT des Freifunk Netzwerkverkehrs am Internet Interface
Hier eine Beispielhafte /etc/pf.conf Datei:
# $OpenBSD: pf.conf,v 1.34 2007/02/24 19:30:59 millert Exp $
#
# See pf.conf(5) and /usr/share/pf for syntax and examples.
# Remember to set net.inet.ip.forwarding=1 and/or net.inet6.ip6.forwarding=1
# in /etc/sysctl.conf if packets are to be forwarded between interfaces.
freifunk_if="wi0"
ext_if="sis0"
table <freifunk> persist {10.23.0.0/16}
set skip on lo
nat on $ext_if from <freifunk> to any -> ($ext_if)
block in
pass out
antispoof quick for { lo $ext_if $freifunk_if}
pass quick on $int_if proto tcp to ($int_if) port ssh
# allow olsrd traffic to pass
pass in on $freifunk_if proto udp to ($freifunk_if) port 698
Natürlich nicht vergessen die Firewall in /etc/pf.conf zu aktivieren.
Kein Netz was nun?
Ist das WLAN Interface richtig konfiguriert?
# ifconfig ral0
ral0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
lladdr 00:0a:09:15:aa:7e
description: Access Point
groups: wlan
media: IEEE802.11 autoselect ibss
status: active
ieee80211: nwid brb.freifunk.net chan 1 bssid 02:ca:ff:ee:ba:be 100dBm
inet6 fe80::211:9ff:fe15:aa7e%ral0 prefixlen 64 scopeid 0x4
inet 10.23.4.56 netmask 0xffff0000 broadcast 10.23.255.255
Interface flags sollte ein UP enthalten, die konfigurierte IP Adresse, Netzmaske und Broadcast müssen stimmen. Channel 1 und Netzwerk ID brb.frefunk.net sollten gesetzt sein, weiterhin sollte die BSSID auch der obigen entsprechen. Die Karte sollte im ibss (ad-hoc) Modus laufen.
Ist ein Access Point in der Nähe?
Um zu sehen ob Access Points in der Nähe sind, müss nach ihnen gescannt werden, wie im folgenden Beispiel:
# ifconfig rum0 scan
rum0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
lladdr 00:22:b0:74:10:57
priority: 0
groups: wlan egress
media: IEEE802.11 autoselect ibss (autoselect mode 11g ibss)
status: active
ieee80211: nwid brb.freifunk.net chan 1 bssid 02:ca:ff:ee:ba:be 100dBm
lladdr 00:40:05:af:4c:5f 110dB 11M ibss bss
inet 10.23.5.39 netmask 0xffff0000 broadcast 10.23.255.255
In obiger Ausgabe ist eine Freifunk-node ist in der Nähe, erkennbar an der nwid.