Eigenen Rechner in das Freifunk-Netz: Unterschied zwischen den Versionen

Aus Freifunk Kiel
Zur Navigation springen Zur Suche springen
Zeile 29: Zeile 29:
 
ESSID=batman.kiel.freifunk.net
 
ESSID=batman.kiel.freifunk.net
 
CHANNEL=11
 
CHANNEL=11
 +
FREQUENCY=2462
 
CELLID=02:ca:ff:ee:ba:be
 
CELLID=02:ca:ff:ee:ba:be
 
NODELINK=http://freifunk.in-kiel.de/ffmap/nodes.html
 
NODELINK=http://freifunk.in-kiel.de/ffmap/nodes.html
Zeile 35: Zeile 36:
 
   ESSID=f8:d1:11:87:52:2e
 
   ESSID=f8:d1:11:87:52:2e
 
   CHANNEL=1
 
   CHANNEL=1
 +
  FREQUENCY=2412
 
   CELLID=f8:d1:11:87:52:2e
 
   CELLID=f8:d1:11:87:52:2e
 
   NODELINK=http://10.130.10.1/ffhh/nodes.html
 
   NODELINK=http://10.130.10.1/ffhh/nodes.html
 
fi
 
fi
 +
  
 
if [ "$1" = "--help" ]; then
 
if [ "$1" = "--help" ]; then
Zeile 61: Zeile 64:
 
   echo "restart network-manager"
 
   echo "restart network-manager"
 
   $NETWORKMANAGER restart
 
   $NETWORKMANAGER restart
 +
 
 +
  echo "turn network bridge off"
 +
  brctl delif br-freifunk bat0
 +
  brctl delif br-freifunk eth0
 +
  brctl delbr br-freifunk
 +
 +
  ifconfig br-freifunk down
 +
  ifconfig bat0 down -promisc
 +
  ifconfig eth0 down -promisc
 +
 
   echo "turn wlan iface off"
 
   echo "turn wlan iface off"
 
   batctl if del $IFACE
 
   batctl if del $IFACE
Zeile 78: Zeile 91:
 
   echo "turn wlan iface off"
 
   echo "turn wlan iface off"
 
   ifconfig $IFACE down
 
   ifconfig $IFACE down
   echo" set maximal transfer unit from standard 1500 to 1528"
+
   echo "set maximal transfer unit from standard 1500 to 1528"
 
   ifconfig $IFACE mtu 1528
 
   ifconfig $IFACE mtu 1528
 
   echo "turn wlan encryption off"
 
   echo "turn wlan encryption off"
 
   iwconfig $IFACE enc off
 
   iwconfig $IFACE enc off
 
   echo "start ad-hoc mode"
 
   echo "start ad-hoc mode"
    
+
   # mit HT40 bei 802.11n kann man potentiell auch mit 40MHz breiten kanälen senden,
 +
  # falls da noch platz ist über oder unter jenem kanal und dann am besten noch HT40- statt HT40+
 +
  # das minus oder plus sagt, ob die zusätzlichen 20MHz kanalbreite über oder unter dem gewählten
 +
  # kanal benutzt werden sollen
 +
  #iw dev wlan0 ibss join $ESSID $FREQUENCY fixed-freq HT40- $CELLID
 +
 
 +
  # in case the iw doesent work, use:
 
   iwconfig $IFACE mode ad-hoc essid $ESSID ap $CELLID channel $CHANNEL
 
   iwconfig $IFACE mode ad-hoc essid $ESSID ap $CELLID channel $CHANNEL
 
 
  #eigentlich sollte man lieber das hier benutzen, geht aber nicht:
 
  # iw dev wlan0 ibss join $ESSID 2412 HT40+ fixed-freq $CELLID
 
 
    
 
    
 
   echo "load module into kernel"
 
   echo "load module into kernel"
Zeile 98: Zeile 114:
 
   ifconfig bat0 up
 
   ifconfig bat0 up
 
   echo "ESSID $ESSID on $IFACE should be ready"
 
   echo "ESSID $ESSID on $IFACE should be ready"
 
 
 
   #sollte man eigentlich machen, geht aber nicht:
 
   #sollte man eigentlich machen, geht aber nicht:
 
   #batctl gw client
 
   #batctl gw client
 +
 
 +
  echo "starting bridge to share internet connection over eth0"
 +
  ifconfig eth0 up promisc
 +
 +
  brctl addbr br-freifunk
 +
  brctl addif br-freifunk bat0
 +
  brctl addif br-freifunk eth0
 
    
 
    
 
   echo "internet starting, this may take some minutes due to latency..."
 
   echo "internet starting, this may take some minutes due to latency..."
   echo "Die Fehlermeldung 'Rather than invoking init scripts through /etc/init.d...' kann ignoriert werden"
+
   echo "(use"
   dhclient bat0
+
  echo "tail -f /var/log/syslog"
 +
  echo "in another window for debugging)"
 +
  echo
 +
  echo dhclient br-freifunk
 +
  echo "The error 'Rather than invoking init scripts through /etc/init.d...' can be ignored:"
 +
   dhclient br-freifunk
 +
  # without bridge: dhclient bat0
 +
 
 +
  echo
 
   echo "internet connection IP:"
 
   echo "internet connection IP:"
 
   ifconfig|grep Bcast
 
   ifconfig|grep Bcast
 
   echo you should have an IP like 10.x.x.x
 
   echo you should have an IP like 10.x.x.x
   echo after a minute your node should popup on the nodeGraph here $NODELINK
+
   echo "after a minute your node should popup on the nodeGraph here $NODELINK"
 
   echo
 
   echo
 +
  echo you can connect another device on eth0 if you like. there will be internet available via cable
 +
  echo "if you use network-manager (ubuntu) you will have to set ipv6 method to \"ignore\""
 +
  echo see http://freifunk.in-kiel.de/wiki/Ubuntu
 +
  echo
 
   echo "to resume normal networking call this script with option stop"
 
   echo "to resume normal networking call this script with option stop"
 
   echo
 
   echo
 
fi
 
fi
 +
 
</pre>'''
 
</pre>'''
  
Wenn das script ausgeführt wird, dann ist dein Rechner Teil des Freifunk-Netzwerkes und mescht mit. Er kann so also auch als Brücke zwischen zwei Routern fungieren, die zu weit auseinander liegen.
+
Wenn das script ausgeführt wird, dann ist dein Rechner Teil des Freifunk-Netzwerkes und mescht mit. Er kann so also auch als Brücke zwischen zwei Routern fungieren, die zu weit auseinander liegen. Außerdem kann man über den Netzwerkanschluss eth0 weitere clients anschließen, die dann über deinen Rechner Internet bekommen (beachte den Hinweis auf IPv6 beim [[Ubuntu|NetworkManager unter Ubuntu]])
  
 
Alternative im Hamburger Wiki [http://wiki.freifunk.net/Freifunk_Hamburg/%C3%9Cber#B.A.T.M.A.N. hier]
 
Alternative im Hamburger Wiki [http://wiki.freifunk.net/Freifunk_Hamburg/%C3%9Cber#B.A.T.M.A.N. hier]

Version vom 13. Dezember 2012, 01:56 Uhr

So einfach kann man seinen Laptop in das Freifunk-Netz als Knoten mit integrieren (Unter Ubuntu 12.04 getestet):

Installation

sudo apt-get install batctl

Kernelmodul laden:

sudo modprobe batman-adv

Version prüfen:

sudo batctl -v

Nicht alle Batmanversionen sind kompatibel - siehe: http://www.open-mesh.org/projects/batman-adv/wiki/Compatversion

Start-Script erstellen

Um sich mit batman.kiel.freifunk.net auf der Schnittstelle wlan0 mit der bssid 02:ca:ff:ee:ba:be zu verbinden erstelle folgendes script und nenne es
`/usr/local/sbin/freifunk-connect`:

download script

Dieses Script ist noch experimentell: Ein Fehler ist, dass es nur einmal funktioniert. Man kann sich dann zwar wieder trennen mit
`freifunk-connect stop`
aber meist funktioniert ein erneutes Verbinden erst nach einem Rechner neustart

#!/bin/bash
IFACE=wlan0
ESSID=batman.kiel.freifunk.net
CHANNEL=11
FREQUENCY=2462
CELLID=02:ca:ff:ee:ba:be
NODELINK=http://freifunk.in-kiel.de/ffmap/nodes.html

if [ "$1" = "hh" ]; then
  ESSID=f8:d1:11:87:52:2e
  CHANNEL=1
  FREQUENCY=2412
  CELLID=f8:d1:11:87:52:2e
  NODELINK=http://10.130.10.1/ffhh/nodes.html
fi


if [ "$1" = "--help" ]; then
  echo "[start](default) or [stop]"
  echo to connect to hamburg call this script with option hh
  echo edit the options in the top section of this script to connect to another network
  echo your network devices:
  lspci|grep -i net
  exit
fi

NETWORKMANAGER="service network-manager"
# some distributions have 
#NETWORKMANAGER="/etc/init.d/network-manager"

if [ "$(whoami &2>/dev/null)" != "root" ] && [ "$(id -un &2>/dev/null)" != "root" ] ; then
  echo "You must be root to run this script!"; exit 1
fi


if [ "$1" = "stop" ]; then
  echo "resuming normal networking..."
  echo "restart network-manager"
  $NETWORKMANAGER restart
  
  echo "turn network bridge off"
  brctl delif br-freifunk bat0
  brctl delif br-freifunk eth0
  brctl delbr br-freifunk
 
  ifconfig br-freifunk down
  ifconfig bat0 down -promisc
  ifconfig eth0 down -promisc
 
  echo "turn wlan iface off"
  batctl if del $IFACE
  sleep 10
  echo "OK"
  echo "echo it can take a few minutes until network-manager gets a new route"
  echo
  exit
elif [ "$1" = "restart" ]; then
  echo "not implemented. call this script first with stop and then with start"
  exit
else # "start"
  echo "stopping network-manager"
  $NETWORKMANAGER stop
  echo "pls wait"
  sleep 10
  echo "turn wlan iface off"
  ifconfig $IFACE down
  echo "set maximal transfer unit from standard 1500 to 1528"
  ifconfig $IFACE mtu 1528
  echo "turn wlan encryption off"
  iwconfig $IFACE enc off
  echo "start ad-hoc mode"
  # mit HT40 bei 802.11n kann man potentiell auch mit 40MHz breiten kanälen senden, 
  # falls da noch platz ist über oder unter jenem kanal und dann am besten noch HT40- statt HT40+ 
  # das minus oder plus sagt, ob die zusätzlichen 20MHz kanalbreite über oder unter dem gewählten 
  # kanal benutzt werden sollen
  #iw dev wlan0 ibss join $ESSID $FREQUENCY fixed-freq HT40- $CELLID

  # in case the iw doesent work, use:
  iwconfig $IFACE mode ad-hoc essid $ESSID ap $CELLID channel $CHANNEL
  
  echo "load module into kernel"
  modprobe batman-adv
  echo "adding iface to batman"
  batctl if add $IFACE
  echo "turn wlan iface on"
  ifconfig $IFACE up
  echo "turn batman iface on"
  ifconfig bat0 up
  echo "ESSID $ESSID on $IFACE should be ready"
  #sollte man eigentlich machen, geht aber nicht:
  #batctl gw client
  
  echo "starting bridge to share internet connection over eth0"
  ifconfig eth0 up promisc
 
  brctl addbr br-freifunk
  brctl addif br-freifunk bat0
  brctl addif br-freifunk eth0
  
  echo "internet starting, this may take some minutes due to latency..."
  echo "(use"
  echo "tail -f /var/log/syslog"
  echo "in another window for debugging)"
  echo 
  echo dhclient br-freifunk
  echo "The error 'Rather than invoking init scripts through /etc/init.d...' can be ignored:"
  dhclient br-freifunk
  # without bridge: dhclient bat0
  
  echo 
  echo "internet connection IP:"
  ifconfig|grep Bcast
  echo you should have an IP like 10.x.x.x
  echo "after a minute your node should popup on the nodeGraph here $NODELINK"
  echo
  echo you can connect another device on eth0 if you like. there will be internet available via cable
  echo "if you use network-manager (ubuntu) you will have to set ipv6 method to \"ignore\""
  echo see http://freifunk.in-kiel.de/wiki/Ubuntu
  echo 
  echo "to resume normal networking call this script with option stop"
  echo
fi

Wenn das script ausgeführt wird, dann ist dein Rechner Teil des Freifunk-Netzwerkes und mescht mit. Er kann so also auch als Brücke zwischen zwei Routern fungieren, die zu weit auseinander liegen. Außerdem kann man über den Netzwerkanschluss eth0 weitere clients anschließen, die dann über deinen Rechner Internet bekommen (beachte den Hinweis auf IPv6 beim NetworkManager unter Ubuntu)

Alternative im Hamburger Wiki hier

Siehe auch: Askubuntu

Todo

fastd installieren und eine Werbindung vom eigenen Rechner aus aufbauen: