PiVPN + klienckie skrypty bash
Jak w kilku krokach postawić na RaspberryPI serwer OpenVPN, do którego łączyć się będzie mogła nawet nasza mama...

Wizard PiVPN

PiVPN to świetny wizard do ustawiania serwera OpenVPN na mikrokomputerach RaspberryPI, który oprócz instalacji serwera VPN oferuje .sh-cli do monitorowania połączeń, dodawania nowych klientów , itd...
Błyskawicznie się go instaluje:curl -L https://install.pivpn.io | bash
I po chwili nasze nawet RaspberryPI I ver. B, jest wydajne aby streamować nawet Telewizję dla kilku klientów na raz.
Kliencie skrypty OpenVPN bash dla laików
Po kilku godzinach poszukiwań, prób i błędów i zebrania kilku rozwiazań w jedno - wypracowałem swoje trzy skrypty bash, które umiesczone na pulpicie w łatwy sposób (kliknięciem w nie) pozwalają w łatwy sposób łączyć się, rozłączać i testować zestawione połączenie, wykonując zadany program (np. otwierać URL w przeglądarce)
- Skrypt zestawiający połączenie:
!/bin/bash
xterm -e 'echo "your-sudo-password" | sudo -S openvpn --askpass /home/your-user/Pulpit/pass.txt --config /home/your-user/Pulpit/pivpn-connection-file.ovpn'
do pliku /home/your-user/Pulpit/pass.txt wpisujemy czystym tekstem hasło do sudo
2. Skrypt sprawdzający połączenie i otwierający URL w przeglądarce Firefox:
#!/bin/bash
xterm -e 'TVOK=`wget checkmyip.com -q -O - | grep Your-IP-OF-OpenVPN-Server | wc -l`; if [ "$TVOK" -gt 0 ]; then echo -e "TV: DOBRZE\n\notwieranie: https://Some-Site/"; exec firefox -new-tab "https://Some-Site/""; else echo "TV: ZLE"; fi; read ans;'
3. Skrypt rozłączający połączenie VPN:
#!/bin/bash
xterm -e 'echo "your-sudo-password" | sudo -S pkill openvpn'
4. Na końcu warto ustawić odwowiednie prawa do plików, aby nikt oprócz danego usera (naszego) nie rozpoznał haseł oraz wykonywalność do plików
chmod 700 pliki.sh
chmod 600 pass.txt
Ktoś zapyta po co trzymać hasła na dysku zamiast wpisać sobie komendy ręcznie. I po co ustanawiąc hasło to pliku konfiguracyjnego .ovpn aby potem go odhasłować bashem. To drugie dla bezpieczeństwa, bo może gdzieś zapodzieje się nam ten plik na dysku, czy serwerze.... A pierwsze...? Przyznam się, że robiłem to pokrętne rozwiazanie dla mojej mamy, która po prostu musi kliknąć w ikonę na pulpicie i tyle... :-)
UWAGA:
Jeżeli obawiamy się o bezpieczeństwo (i słusznie) możemy zamiast podawać hasła do sudo, zapisać uprawnienia do wykonywania openvpn w pliku /etc/sudoers bez hasła dla naszego usera, wtedy hasło sudo nie będzie w historii basha ani w ps aux
Aby to zrobic należy wykonać:
sudo visudo
i wpisać w odpowiednim miejscu:
your-user ALL=(ALL) NOPASSWD: openvpn
i zapisać zmiany, wtedy nasze skrypty wyglądać będą jak poniżej:
- Skrypt 1-wszy
!/bin/bash
xterm -e openvpn --askpass /home/your-user/Pulpit/pass.txt --config /home/your-user/Pulpit/pivpn-connection-file.ovpn
2. Skrypt 3-ci
#!/bin/bash
xterm -e pkill openvpn