Änderungen

Zur Navigation springen Zur Suche springen
488 Bytes hinzugefügt ,  20:43, 30. Sep. 2006
Zeile 122: Zeile 122:  
#!/bin/sh
 
#!/bin/sh
    +
# Funktion um Netzknotennummer einem Ort zuzuweisen,fuer lesbare Konfig
 
get_name() {
 
get_name() {
 
  case $1 in
 
  case $1 in
Zeile 137: Zeile 138:  
}
 
}
    +
# Funktion zum schreiben der OLSR-Konfigdaten
 
write_olsr() {
 
write_olsr() {
 
  echo -e "\n{\nHelloInterval 5.0\nHelloValidityTime 90.0\nTcInterval 3.0\nTcValidityTime 270.0"
 
  echo -e "\n{\nHelloInterval 5.0\nHelloValidityTime 90.0\nTcInterval 3.0\nTcValidityTime 270.0"
Zeile 142: Zeile 144:  
}
 
}
    +
# Variablendefinitionen
 
THIS="$(nvram get wifi_ipaddr|cut -d'.' -f3)"
 
THIS="$(nvram get wifi_ipaddr|cut -d'.' -f3)"
 
OLSR="/etc/local.olsrd.conf"; VTUN="/etc/vtund.conf"
 
OLSR="/etc/local.olsrd.conf"; VTUN="/etc/vtund.conf"
 
VPN="10.63.254"; SRV="214"; CNT="-1"
 
VPN="10.63.254"; SRV="214"; CNT="-1"
 +
# Liste aller teilnehmenden Clients (Netzknotennummern)
 
LST="41 82 42 37 62 54 135 87 1"
 
LST="41 82 42 37 62 54 135 87 1"
   −
test -e $OLSR && rm $OLSR
+
# sicherheitshalber evtl. laufende Instanzen und/oder vorhandene Dateien loeschen
test -e $OLSR && rm $CFG
+
test -e $OLSR && rm $OLSR; test -e $OLSR && rm $CFG
killall vtund
+
killall vtund; killall -9 vtund
killall -9 vtund
      +
# laeuft das skript auf dem Server oder auf einem Client?
 
if [ "$THIS" = "$SRV" ]
 
if [ "$THIS" = "$SRV" ]
 
  then
 
  then
  echo >$VTUN "default { proto udp; type tun; compress no; encrypt no; keepalive yes; multi yes; stat no; }"
+
# ok,skript laeuft auf dem server, also passende Konfigs machen, und fuer jeden client eine extra OLSR-interface-config
 +
  echo   >$VTUN "default { proto udp; type tun; compress no; encrypt no; keepalive yes; multi yes; stat no; }"
 
  for CLIENT in $LST;do let CNT+=1
 
  for CLIENT in $LST;do let CNT+=1
   
   echo >>$VTUN "$(get_name $CLIENT) { passwd bla; device tun$CNT;"
 
   echo >>$VTUN "$(get_name $CLIENT) { passwd bla; device tun$CNT;"
 
   echo >>$VTUN " up { program \"ip addr add $VPN.$THIS peer $VPN.$CLIENT dev %%; ip link set %% mtu 1450 up\"; }; }"
 
   echo >>$VTUN " up { program \"ip addr add $VPN.$THIS peer $VPN.$CLIENT dev %%; ip link set %% mtu 1450 up\"; }; }"
 
+
   echo >>$OLSR -e "Interface \"tun$CNT\"$(write_olsr)\nIp4Broadcast $VPN.$CLIENT\n}"
   echo >>$OLSR "Interface \"tun$CNT\"$(write_olsr)"
  −
  echo >>$OLSR -e "\nIp4Broadcast $VPN.$CLIENT\n}"
  −
 
   
   iptables -I POSTROUTING -t nat -o tun$CNT -j MASQUERADE
 
   iptables -I POSTROUTING -t nat -o tun$CNT -j MASQUERADE
 
  done
 
  done
 
  vtund -s
 
  vtund -s
 
else
 
else
 +
# ok,skript laeuft auf einem Client, also passende Konfigs erzeugen
 
  CNT=0;for IP in $LST;do if [ "$IP" = "$THIS" ];then NUMMER=$CNT;fi;let CNT+=1;done
 
  CNT=0;for IP in $LST;do if [ "$IP" = "$THIS" ];then NUMMER=$CNT;fi;let CNT+=1;done
   
  echo  >$VTUN "$(get_name $THIS) { passwd bla; type tun; persist yes;"
 
  echo  >$VTUN "$(get_name $THIS) { passwd bla; type tun; persist yes;"
 
  echo >>$VTUN " up { program \"ip addr add dev %% $VPN.$THIS peer $VPN.$SRV; ip link set %% mtu 1450 up\"; }; }"
 
  echo >>$VTUN " up { program \"ip addr add dev %% $VPN.$THIS peer $VPN.$SRV; ip link set %% mtu 1450 up\"; }; }"
 
+
  echo >>$OLSR -e "Interface \"tun0\"$(write_olsr)\nIp4Broadcast $VPN.$SRV\nLinkQualityMult $VPN.$SRV 0.1\n}"
  echo >>$OLSR "Interface \"tun0\"$(write_olsr)"
+
# und starten
echo >>$OLSR -e "\nIp4Broadcast $VPN.$SRV"
  −
echo >>$OLSR -e "LinkQualityMult $VPN.$SRV 0.1\n}"
  −
 
   
  vtund $(get_name $THIS) 141.54.160.25
 
  vtund $(get_name $THIS) 141.54.160.25
 
fi
 
fi
<pre>
+
</pre>

Navigationsmenü