VPN zentral

Aus Weimarnetz Wiki
Zur Navigation springen Zur Suche springen

Warum

  • Damit alle DSLer einen zusaetzlichen (virtuellen Funk-)Nachbarn bekommen, wird
  • ein VPN Router im Internet (=M18) aufgestellt.
  • Strecken ueber viele Hops werden dann durch den Tunnel geleitet.
  • der Ausdruck VPN - Virtuelles Privates Netzwerk - ist natuerlich etwas irrefuerend, weil der Tunnel nur ein bisschen "Privat" ist - ist schliesslich ein offenes Netzwerk

Wie

  • die Software der Wahl ist vtun
  • unten beschriebene Funktion wird in die Firmware eingebaut und kann per "Mausklick" angeschaltet werden

Authenifizierung, Verschluesselung, Kompression

  • es wird ein unauthentifizierter, unverschluesselter und unkomprimierter Tunnel gegraben
  • Argumente pro offener Tunnel:
    • das Netz ist sowieso unverschluesselt - wozu also Teilstrecken verschluesseln?
    • wer am Netz teilnehmen moechte, kann das ohne aufwendigen Schluessel/Zertifikats-Austausch
    • Prozessor-Kraft und Speichersparen. vtun braucht nur 60kb Platz.
  • Argumente contra offener Tunnel:
    • ?
    • ?
    • ?

Teilnehmer

  • ca. 10 Teilnehmer
  • Linksys in der M18 als Server und alle DSLer (ausser die Liszt18a) als Clients

Datenverkehr

  • alle Teilnehmer sprechen OLSR ueber den Tunnel
  • Datenmenge wird beobachtet. fries43 16:41, 30. Sep 2006 (CEST)

Installation

  • Installation mit: ipkg update; ipkg install vtund
  • KonfigDatei ist dann /etc/vtund.conf

Konfiguration (Server)

  • Server steht in der M18 und ist ein normaler Linksys mit oeffentlicher IP-Adresse
  • Freifunk-IP ist die 10.63.254.214 auf dem VPN-Interface
  • die Clients sind dann jeweils die 254.41 und 254.82
  • Aufruf mit: vtund -s
  • Konfigdatei /etc/vtund.conf
default {
 proto udp;
 type tun;
 compress no;
 encrypt no;
 keepalive yes;
 multi yes;
 stat no;
}
client0 {
 passwd bla;
 device tun0;
 up {
  program "ip addr add 10.63.254.214 peer 10.63.254.41 dev %%; ip link set %% mtu 1450 up";
 };
}
client1 {
 passwd bla;
 device tun1;
 up {
  program "ip addr add 10.63.254.214 peer 10.63.254.82 dev %%; ip link set %% mtu 1450 up";
 };
}
  • Konfigdatei /etc/local.olsrd.conf fuer das Interface tun0, die anderen werden entsprechend angehangen
Interface "tun0"
{
HelloInterval           5.0
HelloValidityTime       90.0
TcInterval              3.0
TcValidityTime          270.0
MidInterval             15.0
MidValidityTime         270.0
HnaInterval             15.0
HnaValidityTime         90.0

Ip4Broadcast 10.63.254.41
}

Konfiguration (Client)

  • Client ist jeder Internetuebergabepunkt (z.b. ein DSLer)
  • Aufruf mit: vtund vpn 141.54.160.25
client0 {
 passwd bla;
 device tun0;
 persist yes;
 up {
  program "ip addr add dev %% 10.63.254.41 peer 10.63.254.214; ip link set %% mtu 1450 up";
 };
}
  • Konfigdatei /etc/local.olsrd.conf
Interface "tun0"
{
HelloInterval           5.0
HelloValidityTime       90.0
TcInterval              3.0
TcValidityTime          270.0
MidInterval             15.0
MidValidityTime         270.0
HnaInterval             15.0
HnaValidityTime         90.0

Ip4Broadcast 10.63.254.214
LinkQualityMult 10.63.254.214 0.1
}

Skript bzw. fertiges Programm

  • nach /etc/init.d/S52.weimarnetz.vpn_starten kopieren...
#!/bin/sh

THIS="$(nvram get wifi_ipaddr|cut -d'.' -f3)"
OLSR="/etc/local.olsrd.conf"
CFG="/etc/vtund.conf"
VPN="10.63.254"
SRV="214"
LST="41 82 42 37 62 54 135 87 1"
#  0)  41 jens/rembrandt
#  1)  82 jakob2a
#  2)  42 kraska
#  3)  37 lennerhardt/wbode13
#  4)  62 trierer65
#  5)  54 kunstturm
#  6) 135 saxman/schwansee
#  7)  87 alfi/weimarwest
#  8)   1 liszt18a
#  9)  ?????
CNT="-1"

rm $OLSR
rm $CFG
killall vtund

if [ "$THIS" = "214" ]
 then
 echo  >$CFG "default {"
 echo >>$CFG " proto udp;"
 echo >>$CFG " type tun;"
 echo >>$CFG " compress no;"
 echo >>$CFG " encrypt no;"
 echo >>$CFG " keepalive yes;"
 echo >>$CFG " multi yes;"
 echo >>$CFG " stat no;"
 echo >>$CFG "}"
 for CLIENT in $LST
  do let CNT+=1
  echo >>$CFG "client$CNT {"
  echo >>$CFG " passwd bla;"
  echo >>$CFG " device tun$CNT;"
  echo >>$CFG " up {"
  echo >>$CFG "  program \"ip addr add $VPN.$THIS peer $VPN.$CLIENT dev %%; ip link set %% mtu 1450 up\";"
  echo >>$CFG " };"
  echo >>$CFG "}"
  echo >>$OLSR "Interface \"tun$CNT\""
  echo >>$OLSR "{"
  echo >>$OLSR "HelloInterval           5.0"
  echo >>$OLSR "HelloValidityTime       90.0"
  echo >>$OLSR "TcInterval              3.0"
  echo >>$OLSR "TcValidityTime          270.0"
  echo >>$OLSR "MidInterval             15.0"
  echo >>$OLSR "MidValidityTime         270.0"
  echo >>$OLSR "HnaInterval             15.0"
  echo >>$OLSR "HnaValidityTime         90.0"
  echo >>$OLSR " "
  echo >>$OLSR "Ip4Broadcast $VPN.$CLIENT"
  echo >>$OLSR "}"
  #iptables -I POSTROUTING -t nat -o tun$CNT -j MASQUERADE
 done
 vtund -s
else
 CNT=0;for IP in $LST;do if [ "$IP" = "$THIS" ];then NUMMER=$CNT;fi;let CNT+=1;done
 echo  >$CFG "client$NUMMER {"
 echo >>$CFG " passwd bla;"
 echo >>$CFG " device tun$NUMMER;"
 echo >>$CFG " persist yes;"
 echo >>$CFG " up {"
 echo >>$CFG "  program \"ip addr add dev %% $VPN.$THIS peer $VPN.$SRV; ip link set %% mtu 1450 up\";"
 echo >>$CFG " };"
 echo >>$CFG "}"
 echo >>$OLSR "Interface \"tun$NUMMER\""
 echo >>$OLSR "{"
 echo >>$OLSR "HelloInterval           5.0"
 echo >>$OLSR "HelloValidityTime       90.0"
 echo >>$OLSR "TcInterval              3.0"
 echo >>$OLSR "TcValidityTime          270.0"
 echo >>$OLSR "MidInterval             15.0"
 echo >>$OLSR "MidValidityTime         270.0"
 echo >>$OLSR "HnaInterval             15.0"
 echo >>$OLSR "HnaValidityTime         90.0"
 echo >>$OLSR " "
 echo >>$OLSR "Ip4Broadcast $VPN.214"
 echo >>$OLSR "LinkQualityMult $VPN.214 0.1"
 echo >>$OLSR "}"
 vtund client$NUMMER 141.54.160.25
fi

sleep 120