Änderungen

Zur Navigation springen Zur Suche springen
313 Bytes entfernt ,  20:45, 1. Okt. 2006
NEUE VERSION - 8-)))
Zeile 124: Zeile 124:  
<pre>
 
<pre>
 
#!/bin/sh
 
#!/bin/sh
# /etc/init.d/S52.weimarnetz.vpn $VER 0.1 - 2006okt1 - Bastian Bittorf
+
# /etc/init.d/S52.weimarnetz.vpn $VER 0.2 - 2006okt1 - Bastian Bittorf
    
# Verbinden von funkmaessig getrennten Wireless-Mesh-Wolken ueber ein VPN:
 
# Verbinden von funkmaessig getrennten Wireless-Mesh-Wolken ueber ein VPN:
Zeile 137: Zeile 137:  
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"; SRVPUBLIC="141.54.160.25"
+
VPN="10.63.254"; SRV="214"; CNT="-1"; SRVPUBLIC="141.54.160.25"; BC="10.255.255.255"; MTU=1500
 
# Liste aller teilnehmenden Clients (Netzknotennummern)
 
# 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"
    
# Funktion um Netzknotennummer einem Ort zuzuweisen,fuer lesbare Konfig
 
# Funktion um Netzknotennummer einem Ort zuzuweisen,fuer lesbare Konfig
get_name() {
+
get_name() { case $1 in
case $1 in
+
135) echo "m18---schwansee69";;
        135) echo "m18---schwansee69";;
+
  42) echo "m18---frauentor3";;
        42) echo "m18---frauentor3";;
+
  41) echo "m18---rembrandtweg";;
        41) echo "m18---rembrandtweg";;
+
  82) echo "m18---jakob2a";;
        82) echo "m18---jakob2a";;
+
  37) echo "m18---wbode13";;
        37) echo "m18---wbode13";;
+
  62) echo "m18---trierer65";;
        62) echo "m18---trierer65";;
+
  54) echo "m18---kunstturm";;
        54) echo "m18---kunstturm";;
+
  87) echo "m18---weimarwest";;
        87) echo "m18---weimarwest";;
+
  1) echo "m18---liszt18a";; esac }
          1) echo "m18---liszt18a";;
  −
          *) echo "m18---unbekannt";;
  −
esac
  −
}
      
# Funktion zum schreiben der OLSR-Konfigdaten
 
# 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"
+
                echo -e "MidInterval 15.0\nMidValidityTime 270.0\nHnaInterval 15.0\nHnaValidityTime 90.0"; }
echo -e "MidInterval 15.0\nMidValidityTime 270.0\nHnaInterval 15.0\nHnaValidityTime 90.0"
  −
}
      
# sicherheitshalber evtl. laufende Instanzen und/oder vorhandene Dateien loeschen
 
# sicherheitshalber evtl. laufende Instanzen und/oder vorhandene Dateien loeschen
Zeile 170: Zeile 164:  
if [ "$THIS" = "$SRV" ]
 
if [ "$THIS" = "$SRV" ]
 
  then
 
  then
# ok,skript laeuft auf dem server, also passende Konfigs machen, und fuer jeden client eine extra OLSR-interface-config
+
  echo  >$VTUN "default { proto tcp; type ether; compress no; encrypt no; keepalive no; multi yes; stat no; }"
  echo  >$VTUN "default { proto tcp; type tun; compress no; encrypt no; keepalive yes; multi yes; stat no; }"
+
  for CLIENT in $LST;do let CNT+=1;OKTETT=$(( 254 - CNT ))
  for CLIENT in $LST;do let CNT+=1
+
   echo >>$VTUN "$(get_name $CLIENT) { passwd bla; device tap$CNT; speed 80;"
   echo >>$VTUN "$(get_name $CLIENT) { passwd bla; device tun$CNT;"
+
   echo >>$VTUN " up { program \"ip addr add dev %% $VPN.$OKTETT/16 brd $BC; ip link set %% mtu $MTU up\"; }; }"
   echo >>$VTUN " up { program \"ip addr add $VPN.$THIS peer $VPN.$CLIENT dev %%; ip link set %% mtu 1450 up\"; }; }"
+
   IFLIST=$IFLIST" \"tap$CNT\""
   echo >>$OLSR -e "Interface \"tun$CNT\"$(write_olsr)\n\nIp4Broadcast $VPN.$CLIENT\n}"
  −
  # gleich noch ein NAT, damit man ohne Probleme auf beide Tunnelseiten kommt.
  −
  iptables -I POSTROUTING -t nat -o tun$CNT -j MASQUERADE
   
  done
 
  done
  # Server starten
+
  echo >>$OLSR -e "Interface$IFLIST$(write_olsr)\n\nIp4Broadcast $BC\n#LinkQualityMult default 0.1\n}"
 
  vtund -s
 
  vtund -s
 
else
 
else
 
  # ok,skript laeuft auf einem Client, also passende Konfigs erzeugen
 
  # 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 ether; 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/16 brd $BC; ip link set %% mtu $MTU up\"; }; }"
  echo >>$OLSR -e "Interface \"tun0\"$(write_olsr)\n\nIp4Broadcast $VPN.$SRV\nLinkQualityMult $VPN.$SRV 0.1\n}"
+
  echo >>$OLSR -e "Interface \"tap0\"$(write_olsr)\n\nIp4Broadcast $BC\n}"
# Client starten
   
  vtund $(get_name $THIS) $SRVPUBLIC
 
  vtund $(get_name $THIS) $SRVPUBLIC
 
fi
 
fi
 
</pre>
 
</pre>

Navigationsmenü