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...

PiVPN + klienckie skrypty bash

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)

  1. 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:

  1. 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