
Mi tocca precisare prima di continuare che il dispositivo che sto andando ad esporvi per la creazione, è in una qualche forma già esistente col nome di gl.inet – troverete altre informazioni qui –
Partiamo dal WireGuard (WikiPedia):
WireGuard è un programmaopen-source e un protocollo che implementa la tecnica della virtual private network (VPN) per creare connessioni sicure punto-punto in configurazione routed o bridged. Viene eseguito come modulo nel kernel linux e punta ad avere prestazioni migliori rispetto ad IPsec e OpenVPN.

Da test effettuati che vi riporto effettivamente il WireGuard è nettamente più veloce, sia in termini di latenza di linea che per quanto riguarda le linee di codice utilizzate per implementarlo. Vi mostro un esempio. Oltre che è facilmente controllabile per via di un codice molto snello.

Associazione punto punto alla rete:

Ma il bello qual’è? che questa nuova VPN veloce e riutilizzabile è usufruibile attraverso qualsiasi dispositivo: per me invece sarà un passettino un pò più complesso; verrà utilizzato su un dispositivo portatile così da avere una connessione protetta ovunque io voglia.

Siamo quasi pronti:
Entrati nella piccola RaspBerry aggiornamo il software.
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:wireguard/wireguard
sudo apt-get install wireguard-dkms wireguard-tools
Adesso dobbiamo creare le chiavi Privata e Pubblica per la connessione
Umask 077
wg genkey | tee server_private_key | wg pubkey > server_public_key
wg genkey | tee client_private_key | wg pubkey > client_public_key
Dopo aver ottenuto la nostra chiave modifichiamo sudo nano /etc/wireguard/wg0.conf
ed aggiungiamo:
[Interface]
Address = 10.0.0.1/24
SaveConfig = true
PrivateKey = <insert server_private_key>
ListenPort = 51820
[Peer]
PublicKey = <insert client_public_key>
AllowedIPs = 10.0.0.2/32
Usciamo con ctrl+x e diamogli un yes. Avviamo il nostro servizio al boot:
wg-quick up wg0
systemctl enable [email protected]
Controlliamo se tutto è andato a buon fine:
wg show
ifconfig wg0
E dovrebbe apparire una cosa simile:
[email protected]:~# sudo wg
interface: wg0
public key: mia chiave pubblica
private key: (hidden)
listening port: 51820
[email protected]:~#
Facciamo le configurazioni del firewall necessarie su /etc/sysctl.conf:
Togliamo il cancelletto da:
net.ipv4.ip_forward=1
Poi…
sysctl -p
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 51820 -m conntrack --ctstate NEW -j ACCEPT
iptables -A INPUT -s 10.0.0.0/24 -p tcp -m tcp --dport 53 -m conntrack --ctstate NEW -j ACCEPT
iptables -A INPUT -s 10.0.0.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -i wg0 -o wg0 -m conntrack --ctstate NEW -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
apt-get install iptables-persistent
systemctl enable netfilter-persistent
netfilter-persistent save
Bene non ci resta che configurare la parte client:
Il tutto sta nel configurare un .conf con le informazioni necessarie per lo scambio di dati.
Esistono diversi tool per effettuare la connessione su tutti i sistemi operativi vi mostro qualche esempio:
Android: Wireguard | Windows – Apple – Linux: TunSafe |
Andiamo a modificare il file /etc/wireguard/wg0.conf dove all’interno inseriremo:
[Interface]
Address = 10.0.0.2/32
PrivateKey = <insert client_private_key>
DNS = 10.0.0.1
[Peer]
PublicKey = <insert server_public_key>
Endpoint = <insert vpn_server_address>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 21
Abilitiamo sul nostro client il wireguard con il conf appena creato.
wg-quick up wg0
systemctl enable [email protected]
Collegiamoci adesso alla nostra rete e testiamo la connessione e il relativo indirizzo IP.
Così facendo abbiamo ottenuto una bella VPN su wireguard, ma se questa non è installata su server remoto ben poco abbiamo concluso.
Pertanto vi consiglio di utilizzare questa VPN server su RaspBerry su una connessione pubblica tanto da avere una VPN (veloce e con IP stealth) sempre anonima.
Vi ricordo che per navigare completamente anonimi bisogna anche modificare il Webrct su Firefox seguendo questo piccolo accorgimento:
Apri una nuova finestra e digita:
about:config
nel browser cerca:
media.peerconnection.enabled
e da true passa il valore in false con doppio click
Non dimenicate di fare un test per il leak.
http://dnsleak.com/.
Bene adesso abbiamo completamente terminato, se tutto è andato a buon fine sarete al sicuro dal disseminare i vostri dati online durante la navigazione.
nice very good news ,thanks
Ciao sai per caso come progettare un server VPN per poter connettere una rete di dispositivi IoT tramite Wireguard? Quello che mi preoccupa è il load balancing e high availability soprattutto.
Grazie
Ciao ale, mai fatto ma non dovrebbe essere molto difficoltoso, per quanto riguarda il carico rispetto ad un openvpn è molto più veloce e performante, vai tranquillo. Fammi sapere se fai dei test cosa ne pensi..