| Zeile 122: |
Zeile 122: |
| | <pre> | | <pre> |
| | #!/bin/sh | | #!/bin/sh |
| | + | # /etc/init.d/S52.weimarnetz.vpn $VER 0.1 - 2006okt1 - Bastian Bittorf |
| | + | |
| | + | # Verbinden von funkmaessig getrennten Wireless-Mesh-Wolken ueber ein VPN: |
| | + | # Dies ist ein speziell angepasstes Skript zum erstellen einer vtund-Konfiguration |
| | + | # und zum erstellen einer OLSR-Konfiguration mit passenden Interfacenamen. |
| | + | # Das Skript ist exakt das selbe auf Client und Server, es ist also kein manueller |
| | + | # Eingriff noetig. Es wird eine SternTopologie erzeugt mit einem Server mit |
| | + | # oeffentlicher IP-Adresse und den Clients hinter NAT-Gateways. |
| | + | # Es werden unauthentifizierten, unkomprimierte und unverschluesselte Tunnel erzeugt. |
| | + | |
| | + | # Variablendefinitionen |
| | + | THIS="$(nvram get wifi_ipaddr|cut -d'.' -f3)" |
| | + | OLSR="/etc/local.olsrd.conf"; VTUN="/etc/vtund.conf" |
| | + | VPN="10.63.254"; SRV="214"; CNT="-1"; SRVPUBLIC="141.54.160.25" |
| | + | # Liste aller teilnehmenden Clients (Netzknotennummern) |
| | + | LST="41 82 42 37 62 54 135 87 1" |
| | + | |
| | + | # Funktion um Netzknotennummer einem Ort zuzuweisen,fuer lesbare Konfig |
| | + | get_name() { |
| | + | case $1 in |
| | + | 135) echo "m18---schwansee69";; |
| | + | 42) echo "m18---frauentor3";; |
| | + | 41) echo "m18---rembrandtweg";; |
| | + | 82) echo "m18---jakob2a";; |
| | + | 37) echo "m18---wbode13";; |
| | + | 62) echo "m18---trierer65";; |
| | + | 54) echo "m18---kunstturm";; |
| | + | 87) echo "m18---weimarwest";; |
| | + | 1) echo "m18---liszt18a";; |
| | + | *) echo "m18---unbekannt";; |
| | + | esac |
| | + | } |
| | + | |
| | + | # Funktion zum schreiben der OLSR-Konfigdaten |
| | + | write_olsr() { root@M18linksys:~# cat /etc/init.d/S52.weimarnetz.vpn_starten |
| | + | #!/bin/sh |
| | + | # /etc/init.d/S52.weimarnetz.vpn $VER 0.1 - 2006okt1 - Bastian Bittorf |
| | | | |
| | # Verbinden von funkmaessig getrennten Wireless-Mesh-Wolken ueber ein VPN: | | # Verbinden von funkmaessig getrennten Wireless-Mesh-Wolken ueber ein VPN: |
| Zeile 168: |
Zeile 205: |
| | then | | then |
| | # ok,skript laeuft auf dem server, also passende Konfigs machen, und fuer jeden client eine extra OLSR-interface-config | | # 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; }" | + | 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 | | 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 "# $(get_name $CLIENT)\nInterface \"tun$CNT\"$(write_olsr)\n\nIp4Broadcast $VPN.$CLIENT\n}" | + | 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. | | # gleich noch ein NAT, damit man ohne Probleme auf beide Tunnelseiten kommt. |
| | iptables -I POSTROUTING -t nat -o tun$CNT -j MASQUERADE | | iptables -I POSTROUTING -t nat -o tun$CNT -j MASQUERADE |