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 |