ProtonVPN - Configurazione su server linux openvpn

 

Hai ottenuto il servizio ProtonVPN, l'hai testato e ora vuoi configurarlo anche su linux per un eventuale proxy casalingo? Ecco come fare.

Premessa

Questa guida riguarda la configurazione di un server linux che esula dalla tipologia di macchina (fisica, vm, container...) e dalla versione linux, quindi parlerò in maniera generale. I comandi delle guida potrebbero differire, ma la sostanza rimane quella.

Altra cosa ovvia, l'installazione in sè su una macchina server non ha granchè significato se la macchina in questione non fornisce un servizio di connettività verso l'esterno, vedi un proxy o un qualcosa che faccia da ponte verso Internet.

Un fatto che non viene quasi mai specificato all'utente ma viene invece esaltato senza dare delle dovute spiegazioni è la cosiddetta "anonimità". Non mi dilungherò nello specifico perchè prevede una serie di know how approfonditi, però ad esempio basti pensare che se navigo con un browser in cui mi sono loggato a google con il mio utente e sfrutto un routing attraverso protonvpn, il mio ip risulta quello della rete proton, va bene, ma tutta la profilazione che riguarda le mie ricerche viene comunque associata al mio utente! 

ProtonVPN offre il vantaggio di poterla testare con una licenza free, il che ci può almeno darci un aiuto per un primo step di come funziona, ovviamente con tutte le limitazioni del caso, per le varie info vi rimando al link ufficiale Link protonvpn

Configurazione

Andiamo sul sito di protonvpn e scarichiamoci il file di configurazione per linux, dalla sezione Downloads-Openvpn Configuration Files, facciamo un check su GNU/Linux, protocol lasciamo UDP e nella sezione config files selezioniamo quello che ci interessa in base al nostro abbonamento. Con il base io scelgo "Country config". Scegliamo poi il paese dove la connessione vpn dovrà avvenire (es italy), questo in base alle necessità di velocità o per avere accesso a siti che filtrano per geolocalizzazione. Clicchiamo su download e salviamoci il file .ovpn.

Copiamoci il file nella directory delle conf del server linux (/etc/openvpn/).

Per comodità lo ho rinominato in client.ovpn ma se vogliamo usare piu connessioni lasciamolo nominato di default (tipo it.protonvpn.com.udp.ovpn) .

Con Vi posso modificare il file a mio piacimento, nella prima sezione troviamo quello che ci serve:


....
client
dev tun0
proto udp

remote it.protonvpn.com 80
remote it.protonvpn.com 1194
remote it.protonvpn.com 4569
remote it.protonvpn.com 5060
....

Ciò sta a significare che openvpn una volta avviato creerà un device di rete tun0 che si connetterà a it.protonvpn.com su una delle porte specificate. Volessi fare connessioni multiple a paesi diversi non devo far altro che copiare lo stesso file di conf e modificare i parametri dev con tunX e remote con Y.protonvpn.com PORT.

Creiamo un'altro file dove andremo a salvare le credenziali, io per comodità l'ho fatto sempre sotto la directory di configurazione openvpn numinandolo con login.conf. Aprendolo con Vi copiamo al suo interno le credneziali che troviamo sul sito di protonVPN (Sezione Account-OpenVPN / IKEv2 username). Il file alla fine dovrà contenere questo:


cat login.conf
XXXXXXXXXUSERNAMEXXXXXXXXXXXXXXX
XXXXXXXXXPASSWORDXXXXXXXXXXXXXXX

Il file ovpn invece dovrà contenere la voce auth-user-pass con il file di login di cui sopra:


....
remote-cert-tls server
auth-user-pass login.conf
pull
fast-io
....

Prima di lanciare openvpn vediamo lo stato delle schede di rete con il comando


ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 inet 127.0.0.1/8 scope host lo
 valid_lft forever preferred_lft forever
 inet6 ::1/128 scope host
 valid_lft forever preferred_lft forever
2: eth0@if159: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
 link/ether X:X:X:X:X:X brd ff:ff:ff:ff:ff:ff link-netnsid 0
 inet 192.168.0.130/24 brd 192.168.0.255 scope global dynamic eth0
 valid_lft 75779sec preferred_lft 75779sec
 inet6 XXXX::XXXX:XXXX:XXXX:XXXX/64 scope link
 valid_lft forever preferred_lft forever

Bene ora verifichiamo che avvenga una prima connessione lanciando manualmente openvpn: 


cd /etc/openvpn/
openvpn --config /etc/openvpn/client.conf

Se tutto va per il verso giusto avremo alla fine del comando:


....
Thu Apr 22 11:37:18 2021 /sbin/ip route add 5.8.16.147/32 via 192.168.0.1
Thu Apr 22 11:37:18 2021 /sbin/ip route add 0.0.0.0/1 via 10.19.0.1
Thu Apr 22 11:37:18 2021 /sbin/ip route add 128.0.0.0/1 via 10.19.0.1
Thu Apr 22 11:37:18 2021 Initialization Sequence Completed
....

Aprendo un'altra shell controlliamo se il device è stato creato correttamente:


ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 inet 127.0.0.1/8 scope host lo
 valid_lft forever preferred_lft forever
 inet6 ::1/128 scope host
 valid_lft forever preferred_lft forever
2: eth0@if159: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
 link/ether X:X:X:X:X:X brd ff:ff:ff:ff:ff:ff link-netnsid 0
 inet 192.168.0.130/24 brd 192.168.0.255 scope global dynamic eth0
 valid_lft 75779sec preferred_lft 75779sec
 inet6 XXXX::XXXX:XXXX:XXXX:XXXX/64 scope link
 valid_lft forever preferred_lft forever
3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
 link/none
 inet 10.19.0.9/16 brd 10.19.255.255 scope global tun0
 valid_lft forever preferred_lft forever
 inet6 XXXX::XXXX:XXXX:XXXX:XXXX/64 scope link stable-privacy
 valid_lft forever preferred_lft forever

Perfetto, non ci resta altro che abilitare il servizio openvpn in modo che possiamo controllare con start e stop e che al boot si connetta in automatico.

es comandi vari servizi ubuntu:


service openvpn@client enable
service openvpn@client start
service openvpn@client stop
service openvpn@client restart
service openvpn@client status

Per effettuare il check del mio indirizzo ip in Internet lanciare da command line:


dig +short myip.opendns.com @resolver1.opendns.com

Nel caso fosse andato tutto bene ci restituirà l'indirizzo della rete protonVPN.