Benutzer-Werkzeuge


    Warning: Undefined array key "REMOTE_USER" in /usr/local/www/wiki.freifunk-bielefeld.de/lib/tpl/starter/main.php on line 62
  • Admin

  • Warning: Undefined array key "REMOTE_USER" in /usr/local/www/wiki.freifunk-bielefeld.de/lib/tpl/starter/tpl_functions.php on line 50

    Warning: Undefined array key "REMOTE_USER" in /usr/local/www/wiki.freifunk-bielefeld.de/lib/tpl/starter/tpl_functions.php on line 77
  • Registrieren

Webseiten-Werkzeuge


Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
fastd_und_batman_server [2014/08/12 20:00] mwarningfastd_und_batman_server [2023/06/04 11:32] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 2: Zeile 2:
  
 Dieses Howto ist für Leute gedacht die selber einen Server bereitstellen wollen der als Knotenpunkt und vielleicht auch als Gateway (Exit-Node/Gateway) dient. Das heißt das viele Knoten (z.B. Router) sich über diesen Server verbinden und Daten austauschen können. Ebenso kann für alle Nutzer eine Internetanbindung über einen VPN-Provider zur Verfügung gestellt werden. Dieses Howto ist für Leute gedacht die selber einen Server bereitstellen wollen der als Knotenpunkt und vielleicht auch als Gateway (Exit-Node/Gateway) dient. Das heißt das viele Knoten (z.B. Router) sich über diesen Server verbinden und Daten austauschen können. Ebenso kann für alle Nutzer eine Internetanbindung über einen VPN-Provider zur Verfügung gestellt werden.
-Die Anleitung ist definitiv für fortgeschrittene Nutzer gedacht und wurde für Debian-artige Systeme geschrieben.+Die Anleitung ist definitiv für fortgeschrittene Nutzer gedacht und wurde für Debian/Ubuntu Systeme geschrieben. Sie sollte aber auch für andere unixartige Systeme funktionieren.
  
 +Installation von einigen noch nötigen Programmen:
 +  apt-get install bridge-utils tayga radvd
  
-**Aufsetzen des Watchdog-Scriptes**+/etc/radvd.conf 
 +  interface bat0 { 
 +  IgnoreIfMissing on; 
 +  AdvSendAdvert on; 
 +  AdvOtherConfigFlag off; 
 +  AdvDefaultLifetime 1800; 
 +  AdvLinkMTU 0; 
 +  AdvCurHopLimit 64; 
 +  AdvReachableTime 0; 
 +  MaxRtrAdvInterval 600; 
 +  MinRtrAdvInterval 198; 
 +  AdvDefaultPreference high; 
 +  AdvRetransTimer 0; 
 +  AdvManagedFlag off; 
 +  UnicastOnly on; #send RAs only as a request as unicast 
 +   
 +  prefix fdef:17a0:ffb1:300::/64 { 
 +  AdvOnLink on; 
 +  AdvAutonomous on; 
 +  AdvRouterAddr on; 
 +  }; 
 +  prefix 2001:bf7:1320:300::/64 { 
 +  AdvOnLink on; 
 +  AdvAutonomous on; 
 +  AdvRouterAddr on; 
 +  }; 
 +  RDNSS fdef:17a0:ffb1:300::1 {  }; 
 +  };
  
-Das Watchdog-Script testet den OpenVPN Anschluss on Internet verfügbar ist und +/etc/tayga.conf 
-gibt das im Freifunk-Netz bekannt.+  tun-device nat64 
 +  ipv4-addr 10.26.0.1 
 +  prefix fdef:17a0:ffb1:1337::/96 
 +  dynamic-pool 10.26.0.0/20 
 +  data-dir /var/spool/tayga
  
-Das Script bemötigt noch tunctl und brctl: 
  
-  apt-get install uml-utilities +/root/setup.sh 
-  apt-get install bridge-utils +  #!/bin/sh
- +
-Dieses Script konfiguriert und startet die Dienste. +
- +
-  #!/bin/bash+
      
-  exec >/var/log/freifunk_watchdog.log 2>&1 
-  date 
-   
-  mac2ip() 
-  { 
-    #Get the IP of a node by MAC. 
-     
-    mac=$1 
-    ff_subnet=29 
-     
-    [ -z "$mac" -o -z "$ff_subnet" -o ${#mac} -ne 17 ] && { 
-      echo "0.0.0.0" 
-      exit 1 
-    } 
-     
-    seed=0 
-    for x in $(echo $mac | tr ":" "\n"); do 
-      seed=$((seed + 0x$x + (0x$x << 8) + (0x$x << 16))) 
-    done 
-     
-    addr_t=$((1900545 + (seed % 65278))) 
-    addr_c=$(((addr_t & 0xff00) >> 8)) 
-    addr_d=$(((addr_t & 0x00ff) >> 0)) 
-     
-    echo "10.$ff_subnet.$addr_c.$addr_d" 
-  } 
-     
   is_running() {   is_running() {
     ps aux | grep -v grep | grep "$1" > /dev/null     ps aux | grep -v grep | grep "$1" > /dev/null
   }   }
      
-  error() { +  if ! lsmod | grep -v grep | grep "batman_adv" > /dev/null; then 
-    echo "(E$1+    echo "(IStart batman-adv.
-    exit 1 +    echo "5000" >  /sys/class/net/bat0/mesh/orig_interval 
-  }+  fi
      
-  if is_running "fastd"; then +  if is_running "alfred"; then 
-    echo "(I) Fastd supernode is running." +    echo "(I) Start alfred." 
-  else +    alfred -i bat0  -b bat0 -m &> /dev/null &
-    echo "(I) Start Fastd supernode." +
-    fastd --config /etc/fastd/fastd.conf --daemon || error "Cannot start fastd."+
   fi   fi
      
-  if batctl o &> /dev/null; then +  if ! is_running "fastd"; then 
-    echo "(I) batman-adv is running." +    echo "(I) Start fastd." 
-  else +    fastd --config /etc/fastd/vpn/fastd.conf --daemon || error "Cannot start fastd." 
-    echo "(I) Setup batman-adv."+  fi
      
-    modprobe batman-adv +  if ! is_running "radvd"; then 
-     +    echo "(I) Start radvd." 
-    echo "(I) Detach all interfaces from batman-adv." +    /etc/init.d/radvd start 
-    batctl if del fastd_mesh &> /dev/null +  fi
-   +
-    echo "(I) Add fastd_mesh to bat0." +
-    batctl if add fastd_mesh || echo "Failed to attach interface fastd_mesh to batman-adv." +
-    ip link set dev bat0 up +
-   +
-    echo "(I) Configure batmn-adv." +
-    #for now we don't have internet yet +
-    echo "client"/sys/class/net/bat0/mesh/gw_mode +
-    echo "3000" /sys/class/net/bat0/mesh/orig_interval +
-    echo "1" > /sys/class/net/bat0/mesh/bridge_loop_avoidance +
      
-    echo "(I) Set IP '$mesh_ip' for bat0." +  if ! is_running "tayga"; then 
-    mesh_mac=`cat /sys/kernel/debug/batman_adv/bat0/originators | head -1 | grep -io '[0-9a-f:]\{17\}'+    echo "(I) Start tayga." 
-    mesh_ip=`mac2ip "$mesh_mac"+    /etc/init.d/tayga start
-    ifconfig bat0 "$mesh_ip" netmask 255.255.0.0 up+
   fi   fi
      
-  is_running "openvpn " || /etc/init.d/openvpn start+  ip link set bat0 up 
 +  ip -6 addr add fdef:17a0:ffb1:300::1/64 dev bat0 
 +  ip -6 addr add 2001:bf7:1320:300::1/64 dev bat0
      
-  vpn_interface="vpn_exit" +  #is_running "openvpn " || /etc/init.d/openvpn start 
-  ping_servers() + 
-  { +
-    echo "(I) Try to ping root servers on '$vpn_interface':" +
-     +
-    #shuffle list and pick n entries +
-    pick() +
-    { +
-      local n=$1; shift; +
-      local s="`echo \"$@\" | tr ' ' '\n' awk 'BEGIN { srand() } { print rand() "\t" $0 }' | sort -n | cut -f2- | tr '\n' ' '`" +
-      get() { shift $(($#-$1)); echo "$@";+
-      get $n $s +
-    } +
-     +
-    #check if any root server can be reached via default gateway and wan interface +
-    IPCHECK="192.33.4.12 128.8.10.90 193.0.14.129 198.41.0.4 192.228.79.201 192.5.5.241 192.36.148.17 192.58.128.30" +
-    for ip in `pick 3 $IPCHECK`; do +
-      echo -n "(I) Ping '$ip'+
-      if ping $ip -c 1 -I $vpn_interface -q -W 1 > /dev/null 2>&1; then +
-        echo "- success.+
-        return 0 +
-      else +
-        echo "- failed." +
-      fi +
-    done +
-    echo "(W) Cannot reach any tested IP." +
-    return 1 +
-  } +
-   +
-  if ifconfig "$vpn_interface" &> /dev/null && ping_servers; then +
-    echo "(I) Internet access on '$vpn_interface' => Server mode." +
-    batctl gw_mode server 8MBit/8MBit +
-  else +
-    echo "(I) No Internet access on '$vpn_interface'. => Client mode." +
-    batctl gw_mode client +
-  fi +
-   +
-  echo "(I) Done." +
- +
-Dieses Script kann einmal nach dem Systemstart oder regelmäßig durch cron aufgerufen werden. +
-Dafür muss folgende Zeile an die  /etc/crontab angehängt werden: +
- +
-<code>*/5 *   * * *   root    /root/freifunk_watchdog > /dev/null</code> +
- +
-Wichig ist dabei, dass das Script ausführbar ist: +
- +
-  chmod a+x freifunk_watchdog +
- +
-Ein Eintrag in /etc/hosts sorgt dafür das der Name "node" in eine Anycast-Adresse übersetzt wird +
-die jeder Router hat. Damit läßt sich der Router, mit dem man verbunden ist, bequemer finden. +
- +
-  echo "fdef:17a0:ffb1::0 node" >> /etc/hosts+