Um das Freifunknetzwerk nicht nur zu nutzen, sondern auch zu erweitern, lernen wir ein Teil davon zu werden.
Debian 7.0 kommt bereits mit dem notwendigen batman-adv Kernelmodul. Weiterhin sollten die Pakete batctl, ip, nmap und curl vorhanden sein.
# Kernelmodul laden modprobe batman-adv # wlan device in ad-hoc mode schalten iwconfig wlan0 mode ad-hoc iwconfig wlan0 essid batman.jena.freifunk.net batctl if add wlan0 # eine weile warten und andere Teilnehmer des Meshnetzwerks anzeigen batctl o # optional kann man andere hosts im batman-adv layer pingen batctl p fa:1a:67:cb:25:12 # um ins internet zu kommen muss man einen default gateway finden # alle konten sind von der form 10.17.*.1 ifconfig wlan0 0.0.0.0 ifconfig bat0 10.17.78.1 # besser auf address kollision pruefen! # finde den schnellsten node nmap -sP '10.17.*.1' # nutze den schnellsten als gateway ip route add default via 10.17.11.1 dev bat0 # akzeptiere den splash screen curl -d target_url=foo 10.17.11.1/cgi-bin/splash-click.html
Die einzelnen Batman Knoten kann man ueber ihre link-local IPv6 Addresse erreichen:
ssh fe80::fa1a:67ff:fecb:3162%bat0
In order to check the underlying mesh-wide distributed database (hbbp source repository), add the following Lua code to /usr/share/wireshark/init.lua. If you run wireshark as root make sure to comment out the appropriate lines in this file to allow Lua to run.
trivial_proto = Proto("hbbp","Home Brew Broadcast Protocol")
-- create a function to dissect it
function trivial_proto.dissector(buffer,pinfo,tree)
pinfo.cols.protocol = "HBBP"
local subtree = tree:add(trivial_proto,buffer(),"HBBP Data")
local i = 0
local b = buffer():bytes()
while (i<b:len() and b:get_index(i)~=0) do
i = i + 1
end
if i==0 then
return (nil)
end
subtree:add(buffer(0,i),"Task: " .. buffer(0,i):string())
if b:get_index(i) == 0 then
subtree:add(buffer(i+1),"Payload: [Length " .. buffer:len()-i .. "]")
end
end
-- load the udp.port table
udp_table = DissectorTable.get("udp.port")
-- register our protocol to handle udp port 4950
udp_table:add(4950,trivial_proto)
Here is screenshot of the dissector in action: