OUTATIME
08-02-2023, 12:55
Il contenuto di questo post è rilasciato con licenza Creative Commons Attribution-Noncommercial-Share Alike 2.5
http://creativecommons.org/licenses/by-nc-sa/2.5/it/
Changelog:
1.0.0 Release Iniziale
Come tutti sappiamo, già da tempo gli operatori hanno smesso di fornire IP pubblici sulle sim dei telefoni cellulari. Questa guida ha il duplice scopo di ottenere un IP pubblico su linee 3G/4G da utilizzare per i dispositivi interni e/o accedere dall'esterno alla propria rete LAN. A differenza della mia precedente guida, mi è stato più volte chiesto di sviluppare una guida specifica per Wireguard, più performante rispetto a OpenVPN.
Cosa serve:
- Connessione 3G/4G correttamente configurata e funzionante.
- Dispositivo Linux (Raspberry o PC) correttamente installato con un'interfaccia avente IP statico e come default gateway la connessione 3G/4G.
- Dispositivo Linux correttamente installato con un'interfaccia avente IP pubblico (VPS o altra connessione con IP pubblico di cui si è legittimi fruitori. Ricordo che la condivisione di connessioni internet è illegale).
NOTE
- Ho saltato la parte di configurazione dei dispositivi Linux: partiamo dal presupposto che siano correttamente funzionanti. Se avete bisogno, in rete c'è ampia documentazione o potete chiedere a me, ma in ogni caso esula dallo scopo di questa guida.
- Per gestire il traffico uscente, nel caso si voglia tunnelizzare il traffico attrverso la VPN, serve implementare il routing sul Raspberry/PC in modo che faccia da gateway per tutta la propria rete. Ad oggi questa parte di configurazione non l'ho ancora implementata, quindi sulla release attuale non la troverete. Non escludo di inserirla, tempo permettendo, in futuro. L'alternativa per il momento è installare un client VPN su ogni dispositivo che necessiti di utilizzare l'IP pubblico.
Capitolo 1: Installazione Server
A differenza di OpenVPN ove esiste il concetto client/server, con Wireguard ci sono solo peer, quindi la configurazione è praticamente analoga su client e su server. Faremo comunque la distinzione, poi capirete perchè.
1) Installate Wireguard:
apt install wireguard
2) Generate le chiavi:
wg genkey > private
3) A questo punto leggete la chiave privata e la copio:
cat private
4) Fate la stessa cosa con la chiave pubblica:
wg pubkey < private
5) Editate il file di configurazione:
nano /etc/wireguard/wg0.conf
Come segue:
[Interface]
Address = 10.6.0.1/24
ListenPort = 40115
PrivateKey = ************************************
[Peer]
PublicKey = ***********************************
AllowedIPs = 10.6.0.10/32
Spiegazione: la sezione Interface è relativa all'interfaccia wg0 del server, l'indirizzo e la porta di connessione possono ovviamente essere cambiati a piacimento, la stringa PrivateKey va compliata con la chiave privata generata in precedenza. La sezione peer va compliata con la chiave pubblica e l'IP del client (una volta generati).
Capitolo 2: Installazione Client
Il client dev'essere installato come il server, a differenza della configurazione, quindi seguo gli stessi passi dall'1 al 4 del precedente capitolo, per il client procedo a configurarlo come segue:
[Interface]
Address = 10.6.0.10/24
PrivateKey = *************************************
DNS = 8.8.8.8, 8.8.4.4
[Peer]
PublicKey = *************************************
AllowedIPs = 10.6.0.1/0
Endpoint = ***.***.***.***:40115
PersistentKeepalive = 60
Avete notato che il client si differenzia dal server per la stringa Endpoint e Keepalive? Ma come? Non avevamo detto che Wireguard segue il concetto di peer e non di client/server? Vero, ma mettere la stringa Endpoint sul server è impossibile, perchè il client è dietro il NAT dell'operatore telefonico, quindi la connessione dovrà sempre e comunque essere iniziata dal client, e di conseguenza gli serve avere un keepalive (espresso in secondi) per mantenere attiva la connessione.
A questo punto potete andare (se non l'avete già fatto) a completare la configurazione del server con la chiave pubblica del client.
Avviate il servizio sul server:
systemctl start wg-quick@wg0
Abilitate l'avvio automatico:
systemctl enable wg-quick@wg0.service
E infine fate la stessa cosa sul client.
Se tutto è stato eseguito correttamente, lanciando il seguente comando:
wg show
Dovreste vedere il seguente risultato
interface: wg0
public key: ******************************
private key: (hidden)
listening port: 40115
peer: *************************
endpoint: ***.***.***.***:64014
allowed ips: 10.6.0.10/32
latest handshake: Now
transfer: 2.16 MiB received, 5.78 MiB sent
A questo punto la configurazione di Wireguard è completa. Integrerò ulteriormente la guida con iptables, ma è la stessa che ho pubblicato per OpenVPN, cambia solo il nome dell'interfaccia, quindi se non volete aspettare, vi rimando a quella già completata:
https://hwupgrade.it/forum/showthread.php?t=2880131
http://creativecommons.org/licenses/by-nc-sa/2.5/it/
Changelog:
1.0.0 Release Iniziale
Come tutti sappiamo, già da tempo gli operatori hanno smesso di fornire IP pubblici sulle sim dei telefoni cellulari. Questa guida ha il duplice scopo di ottenere un IP pubblico su linee 3G/4G da utilizzare per i dispositivi interni e/o accedere dall'esterno alla propria rete LAN. A differenza della mia precedente guida, mi è stato più volte chiesto di sviluppare una guida specifica per Wireguard, più performante rispetto a OpenVPN.
Cosa serve:
- Connessione 3G/4G correttamente configurata e funzionante.
- Dispositivo Linux (Raspberry o PC) correttamente installato con un'interfaccia avente IP statico e come default gateway la connessione 3G/4G.
- Dispositivo Linux correttamente installato con un'interfaccia avente IP pubblico (VPS o altra connessione con IP pubblico di cui si è legittimi fruitori. Ricordo che la condivisione di connessioni internet è illegale).
NOTE
- Ho saltato la parte di configurazione dei dispositivi Linux: partiamo dal presupposto che siano correttamente funzionanti. Se avete bisogno, in rete c'è ampia documentazione o potete chiedere a me, ma in ogni caso esula dallo scopo di questa guida.
- Per gestire il traffico uscente, nel caso si voglia tunnelizzare il traffico attrverso la VPN, serve implementare il routing sul Raspberry/PC in modo che faccia da gateway per tutta la propria rete. Ad oggi questa parte di configurazione non l'ho ancora implementata, quindi sulla release attuale non la troverete. Non escludo di inserirla, tempo permettendo, in futuro. L'alternativa per il momento è installare un client VPN su ogni dispositivo che necessiti di utilizzare l'IP pubblico.
Capitolo 1: Installazione Server
A differenza di OpenVPN ove esiste il concetto client/server, con Wireguard ci sono solo peer, quindi la configurazione è praticamente analoga su client e su server. Faremo comunque la distinzione, poi capirete perchè.
1) Installate Wireguard:
apt install wireguard
2) Generate le chiavi:
wg genkey > private
3) A questo punto leggete la chiave privata e la copio:
cat private
4) Fate la stessa cosa con la chiave pubblica:
wg pubkey < private
5) Editate il file di configurazione:
nano /etc/wireguard/wg0.conf
Come segue:
[Interface]
Address = 10.6.0.1/24
ListenPort = 40115
PrivateKey = ************************************
[Peer]
PublicKey = ***********************************
AllowedIPs = 10.6.0.10/32
Spiegazione: la sezione Interface è relativa all'interfaccia wg0 del server, l'indirizzo e la porta di connessione possono ovviamente essere cambiati a piacimento, la stringa PrivateKey va compliata con la chiave privata generata in precedenza. La sezione peer va compliata con la chiave pubblica e l'IP del client (una volta generati).
Capitolo 2: Installazione Client
Il client dev'essere installato come il server, a differenza della configurazione, quindi seguo gli stessi passi dall'1 al 4 del precedente capitolo, per il client procedo a configurarlo come segue:
[Interface]
Address = 10.6.0.10/24
PrivateKey = *************************************
DNS = 8.8.8.8, 8.8.4.4
[Peer]
PublicKey = *************************************
AllowedIPs = 10.6.0.1/0
Endpoint = ***.***.***.***:40115
PersistentKeepalive = 60
Avete notato che il client si differenzia dal server per la stringa Endpoint e Keepalive? Ma come? Non avevamo detto che Wireguard segue il concetto di peer e non di client/server? Vero, ma mettere la stringa Endpoint sul server è impossibile, perchè il client è dietro il NAT dell'operatore telefonico, quindi la connessione dovrà sempre e comunque essere iniziata dal client, e di conseguenza gli serve avere un keepalive (espresso in secondi) per mantenere attiva la connessione.
A questo punto potete andare (se non l'avete già fatto) a completare la configurazione del server con la chiave pubblica del client.
Avviate il servizio sul server:
systemctl start wg-quick@wg0
Abilitate l'avvio automatico:
systemctl enable wg-quick@wg0.service
E infine fate la stessa cosa sul client.
Se tutto è stato eseguito correttamente, lanciando il seguente comando:
wg show
Dovreste vedere il seguente risultato
interface: wg0
public key: ******************************
private key: (hidden)
listening port: 40115
peer: *************************
endpoint: ***.***.***.***:64014
allowed ips: 10.6.0.10/32
latest handshake: Now
transfer: 2.16 MiB received, 5.78 MiB sent
A questo punto la configurazione di Wireguard è completa. Integrerò ulteriormente la guida con iptables, ma è la stessa che ho pubblicato per OpenVPN, cambia solo il nome dell'interfaccia, quindi se non volete aspettare, vi rimando a quella già completata:
https://hwupgrade.it/forum/showthread.php?t=2880131