Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
fastd_und_batman_server [2014/08/12 18:43] – mwarning | fastd_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/ | Dieses Howto ist für Leute gedacht die selber einen Server bereitstellen wollen der als Knotenpunkt und vielleicht auch als Gateway (Exit-Node/ | ||
- | Die Anleitung ist definitiv für fortgeschrittene Nutzer gedacht und wurde für Debian-artige | + | Die Anleitung ist definitiv für fortgeschrittene Nutzer gedacht und wurde für Debian/ |
+ | Installation von einigen noch nötigen Programmen: | ||
+ | apt-get install bridge-utils tayga radvd | ||
- | **Aufsetzen des Watchdog-Scriptes** | + | / |
+ | 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: | ||
+ | AdvOnLink on; | ||
+ | AdvAutonomous on; | ||
+ | AdvRouterAddr on; | ||
+ | }; | ||
+ | prefix 2001: | ||
+ | AdvOnLink on; | ||
+ | AdvAutonomous on; | ||
+ | AdvRouterAddr on; | ||
+ | }; | ||
+ | RDNSS fdef: | ||
+ | }; | ||
- | Das Watchdog-Script testet den OpenVPN Anschluss on Internet verfügbar ist und | + | / |
- | gibt das im Freifunk-Netz bekannt. | + | tun-device nat64 |
+ | ipv4-addr 10.26.0.1 | ||
+ | prefix fdef: | ||
+ | dynamic-pool 10.26.0.0/ | ||
+ | data-dir / | ||
- | 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 >/ | + | |
- | date | + | |
- | + | ||
- | mesh_mac=`cat / | + | |
- | + | ||
- | #translate to local administered mac | + | |
- | a=${mesh_mac%%: | + | |
- | a=$((0x$a | 2)) #set second bit to 1 | + | |
- | a=`printf ' | + | |
- | mesh_mac=" | + | |
- | + | ||
- | mac2ip() | + | |
- | { | + | |
- | #Get the IP of a node by MAC. | + | |
- | + | ||
- | mac=$1 | + | |
- | ff_subnet=29 | + | |
- | + | ||
- | [ -z " | + | |
- | echo " | + | |
- | exit 1 | + | |
- | } | + | |
- | + | ||
- | seed=0 | + | |
- | for x in $(echo $mac | tr ":" | + | |
- | 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 " | + | |
- | } | + | |
- | + | ||
- | mesh_ip=`mac2ip " | + | |
- | + | ||
| | ||
is_running() { | is_running() { | ||
Zeile 61: | Zeile 51: | ||
} | } | ||
| | ||
- | | + | |
- | echo "(E) $1" | + | echo "(I) Start batman-adv." |
- | | + | |
- | | + | |
| | ||
- | if is_running "fastd"; then | + | if ! is_running "alfred"; then |
- | echo "(I) Fastd supernode is running." | + | echo "(I) Start alfred." |
- | else | + | |
- | echo "(I) Start Fastd supernode." | + | |
- | | + | |
fi | fi | ||
| | ||
- | if batctl o &> /dev/null; then | + | if ! is_running " |
- | echo " | + | echo " |
- | else | + | |
- | | + | fi |
| | ||
- | modprobe batman-adv | + | if ! is_running |
- | + | echo " | |
- | echo "(I) Detach all interfaces from batman-adv." | + | /etc/init.d/radvd start |
- | batctl if del fastd_mesh &> /dev/null | + | |
- | batctl if del dummy_mesh &> /dev/null | + | |
- | | + | |
- | echo " | + | |
- | | + | |
- | ifconfig dummy_mesh down #needed? | + | |
- | ifconfig dummy_mesh hw ether " | + | |
- | batctl if add dummy_mesh || error " | + | |
- | batctl if add fastd_mesh || echo " | + | |
- | ifconfig bat0 up | + | |
- | + | ||
- | echo "(I) Configure batmn-adv." | + | |
- | #for now we don't have internet yet | + | |
- | echo " | + | |
- | echo " | + | |
- | echo " | + | |
| | ||
- | echo "(I) Setup br-mesh." | + | if ! is_running |
- | #We could use just plainbat0 instead of br-mesh | + | echo " |
- | #But it might give us moreflexibility in the future. | + | |
- | brctl addbr br-mesh | + | |
- | brctl addif br-mesh bat0 | + | |
- | echo " | + | |
- | | + | |
fi | fi | ||
| | ||
- | | + | |
+ | ip -6 addr add fdef: | ||
+ | ip -6 addr add 2001: | ||
| | ||
- | | + | #is_running |
- | ping_servers() | + | |
- | { | + | |
- | echo "(I) Try to ping root servers on ' | + | |
- | + | ||
- | | + | |
- | pick() | + | |
- | { | + | |
- | local n=$1; shift; | + | |
- | local s="`echo \"$@\" | tr ' ' ' | + | |
- | get() { shift $(($#-$1)); echo " | + | |
- | get $n $s | + | |
- | } | + | |
- | + | ||
- | #check if any root server can be reached via default gateway and wan interface | + | |
- | IPCHECK=" | + | |
- | for ip in `pick 3 $IPCHECK`; do | + | |
- | echo -n "(I) Ping ' | + | |
- | if ping $ip -c 1 -I $vpn_interface -q -W 1 > /dev/null 2>& | + | |
- | echo "- success." | + | |
- | return 0 | + | |
- | else | + | |
- | echo "- failed." | + | |
- | fi | + | |
- | done | + | |
- | echo "(W) Cannot reach any tested IP." | + | |
- | return 1 | + | |
- | } | + | |
- | + | ||
- | if ifconfig " | + | |
- | echo "(I) Internet access on ' | + | |
- | batctl gw_mode server 8MBit/ | + | |
- | else | + | |
- | echo "(I) No Internet access on ' | + | |
- | 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 / | + | |
- | + | ||
- | < | + | |
- | + | ||
- | 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 " | + | |
- | die jeder Router hat. Damit läßt sich der Router, mit dem man verbunden ist, bequemer finden. | + | |
- | + | ||
- | echo " | + |