• Benvenuti su RaspberryItaly!
Benvenuto ospite! Login Login con Facebook Registrati Login with Facebook


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
Tags
installare wireguard ultime sempre avere sui raspberry nostri e versioni

Installare e avere sempre ultime versioni Wireguard sui nostri Raspberry
#1
La procedura ufficiale per avere le ultime versioni di wireguard sui nostri lamponi a partire da p0 fino a pi4 è la seguente:

[Abilitiamo l'IP Forwarding e riavviamo Pi:]

Codice:
1) sudo perl -pi -e 's/#{1,}?net.ipv4.ip_forward ?= ?(0|1)/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf

2) sudo reboot

Dopo il riavvio, verificare che l'IP Forwarding sia stato abilitato prima di passare alla parte successiva. Per fare ciò inserisci quanto segue, il tuo output sarà 1:

Codice:
sysctl net.ipv4.ip_forward

GENERIAMO ORA LE CHIAVI PRIVATE E PUBBLICHE PER WIREGUARD SERVER E CLIENT

Codice:
sudo su

cd /etc/wireguard

umask 077

wg genkey | tee peer1_privatekey | wg pubkey > peer1_publickey

wg genkey | tee server_privatekey | wg pubkey > server_publickey

ls 

# ↑ Verifichiamo che i file contenente le key siano stati generati con ls

Citazione:peer1_privatekey
peer1_publickey 
server_privatekey 
server_publickey

Puoi visualizzare le tue chiavi usando il comando nano in questo modo:

nano server_publickey
nano server_privatekey
nano peer1_publickey
nano peer1_privatekey

CONFIGURIAMO WIREGUARD SERVER

Andiamo a creare il file wg0.conf in ‘/etc/wireguard/’ :

Codice:
3) sudo nano /etc/wireguard/wg0.conf

Copia e incolla il seguente modello dentro al file apportando le modifiche necessarie.
Assicurati di inserire la chiave giusta nella riga giusta.

Codice:
[Interface]

Address = 10.9.0.1/24

ListenPort = xxxxx  

DNS = 192.168.x.xx 

PrivateKey = server_privatekey 

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]

#Peer-1

PublicKey = peer1_publickey

AllowedIPs = 10.9.0.2/32 
#PersistentkeepAlive = 60

CONFIGURIAMO WIREGUARD LATO CLIENT

Creaimo il File peer1.conf sempre in ‘/etc/wireguard/’ :

Codice:
4) sudo nano /etc/wireguard/peer1.conf

Copia e incolla il seguente modello dentro al file apportando le modifiche necessarie.

Assicurati di inserire la chiave giusta nella riga giusta.

Codice:
[Interface]
Address = 10.9.0.2/32

DNS = 192.168.x.x 

PrivateKey = peer1_privatekey 

[Peer]

PublicKey = server_publickey 

Endpoint = YOUR-PUBLIC-IP/DDNS:ListenPort

AllowedIPs = 0.0.0.0/0, ::/0
#PersistentkeepAlive = 60


Apportiamo le dovute modifiche al file in base alla nostra rete:

DNS: Quello del nostro isp, o Pihole o quello che ogliamo

PrivateKey: il contenuto del file peer1_privatekey

PublicKey: il contenuto del file server_publickey'

Endpoint: il nostro ip pubblico o ddns 

AllowedIPs: 0.0.0.0/0, ::/0 (consente a tutto il traffico di attraversare interfaccia wg )

(Oppure)

AllowedIPs: 192.168.1.0/24 (consente il tunnel dividendo accesso LAN e solo DNS, con la sottorete del router)

ESPORTA LA CONFIGURAZIONE DEL CLIENT SUL TELEFONO MEDIANTE IL CODICE QR

Codice:
5) sudo apt install qrencode

6) sudo qrencode -t ansiutf8 < /etc/wireguard/peer1.conf

Verrà generato un codice QR, dovrai scansionare questo codice e importarlo nell'app WireGuard sul tuo telefono. Installa l'app android e/o IOS se vuoi fallo ora.

Fine Installazione

Dopo che il tuo profilo client è stato importato sul tuo telefono, esegui i seguenti comandi per completare l'installazione su Pi:
Codice:
7) sudo systemctl enable wg-quick@wg0

8) sudo chown -R root:root /etc/wireguard/

9)  sudo chmod -R og-rwx /etc/wireguard/*

Spero di essere stato di aiuto a molti di voi e a presto Ti@er
Risposta
#2
Ciao Tiger,

se posso mi permetto di scrivere la mia versione, differisce dalla tua perché uso un "user management script" che funziona alla grande e risparmia un sacco di passaggi (se bisogna fare molti user) ed anche se si vuole avere sempre l'ultimo kernel aggiornato. 
Cosa voglio dire con l'ultimo kernel aggiornato? -> intendo non quello che ti scarica con apt upgrade, dist upgrade etc ma quello che si ottiene facendo un bel rpi-update (5.4.X) dove ovviamente non essendoci i kernel-headers non si può installare il *.ko di wireguard.

Incominciamo con lo script che provvederà a scaricare e compilare gli "headers" 

Installiamo prima questi pacchetti, e facciamo tutti i passaggi come root (sudo -i) :

Per installare i kernel in "devolopment" :
Codice:
apt update && rpi-update
e poi un bel reboot 

Adesso andiamo compilare ed installare i linux-headers specifici per il nosto kernel appena installato, prima installiamo i pacchetti necessari :

Codice:
apt install build-essential autoconf automake libtool gawk dkms libblkid-dev uuid-dev libudev-dev libssl-dev zlib1g-dev libaio-dev libattr1-dev libelf-dev python3 python3-dev python3-setuptools python3-cffi libffi-dev flex bison bc

Ed ora finalmente, utilizziamo questo comodo script (farà tutto da solo)
Codice:
wget https://gist.githubusercontent.com/satmandu/a507c59d84737f6d29ff353395819d51/raw/e615526fa2f59db53b1bf43a20fd929bfec6bf4d/make_deb.sh
chmod +x make_deb.sh
./make_deb.sh

Aspettiamo una 30ina di minuti e quando sarà finito :


Codice:
cd workdir/build
dpkg -i linux-headers-5.4.45-v8+.deb

WIREGUARD con installazione automaitca :

Codice:
echo "deb http://deb.debian.org/debian/ unstable main" | sudo tee --append /etc/apt/sources.list
sudo apt-key adv --keyserver   keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC
sudo apt-key adv --keyserver   keyserver.ubuntu.com --recv-keys 648ACFD622F3D138
sudo sh -c 'printf "Package: *\nPin: release a=unstable\nPin-Priority: 90\n" > /etc/apt/preferences.d/limit-unstable'

abilitiamo i Packet forwarding :


Codice:
nano /etc/sysctl.conf

e decommentiamo la riga 

Codice:
net.ipv4.ip_forward=1

e ancora una volta facciamo un bel reboot.


Codice:
Ora installamo WireGuard :

apt update
apt install wireguard-dkms
chown -R root:root /etc/wireguard/



Install the Adrian Mihalko User Management Script

Codice:
apt-get install git qrencode -y
git clone https://github.com/adrianmihalko/wg_config.git

creiamo le chiavi private e pubbliche :

Codice:
cd wg_config
wg genkey | tee server_private.key | wg pubkey > server_public.key

Prendiamo nota delle chiavi perchè ci serviranno tra poco :

cat server_public.key
Codice:
EcWkiyg764rfjiuhkngfde6YKNTAZlON3gNMyMylpiw=

cat server_private.key
Codice:
uOY0ObRrXbc3Voi87ujhtygf65rdesfgnCFqblPEKHY=

copiamo il file di configurazione e mettiamoci dentro le chiavi ricavate poco prima :

Codice:
cp wg.def.sample wg.def

nano wg.def e compilare :

- SERVER_PORT -> è la porta di ascolto del vpn server (dovete abilitare l'inoltro delle porte dal router all'ip della macchina server)
- SERVER_LISTEN -> se avete ip statico oppure mette dns 
- SERVER_PUBLIC_KEY  -> qui copiate la chiave pubblica di prima
- SERVER_PRIVATE_KEY -> qui copiate la chiave privata di prima

tutte le altre voci lasciatele così, dovreste ottenere un file tipo questo :

Codice:
_INTERFACE=wg0
_VPN_NET=192.168.99.0/24
_SERVER_PORT=1000
_SERVER_LISTEN=home.dyndns.net:$_SERVER_PORT
_SERVER_PUBLIC_KEY=EcWkiyg764rfjiuhkngfde6YKNTAZlON3gNMyMylpiw
_SERVER_PRIVATE_KEY=uOY0ObRrXbc3Voi87ujhtygf65rdesfgnCFqblPEKHY

Creiamo il file "temporaneo" (poi verrà sovrasctitto dallo scrip) e tiriamo su il vpn:

Codice:
touch /etc/wireguard/wg0.conf

Codice:
systemctl enable wg-quick@wg0
wg-quick up wg


E finalmente creiamo il nostro user con il quale accederemo :

Codice:
./user.sh -a NomeUtente

Ora riavviate il raspberry e testate il tunnel!

Poi dall'app WireGuard (iOS o Android) basterà inquadrare il QR code ed il gioco è fatto.
Potete salvarvi anche i QR creati, sono dentro alla cartella users.


Ripeto, lo scopo di questa guida è di avere il kernel sempre aggiornato (in development) che potete consultare qui :

https://github.com/Hexxeh/rpi-firmware/commits/master

e gli linux-headers necessari per installare WireGuard (altrimenti il .ko non si compila)

root@dev:~# uname -ar
Linux dev 5.4.45-v8+ #1321 SMP PREEMPT Wed Jun 10 17:46:14 BST 2020 aarch64 GNU/Linux
Risposta
#3
Smile 
ok per tua versione, anche se la mia guida si applica a tutti i kernel sia quelli stable che beta ottenibile con 

rpi-update.

tieni presente che rpi-update ti installa kernel ancora in beta a volte e questo nel corso degli anni mi ha dato non qualche problema, ottimo lo script sebbene dipende da altri reposity pure ma è una seconda alternativa.

personalmente una volta installato wireguard la creazione user si riduce a 2 comandi come anche per te, 
la mia guida si basa su reposity ufficiali wireguard.

Ben Venga ogni contributo sempre comunque e a presto.

inoltre trascrivo qui implementazione della presharekey in wireguard visto che lo prevede, 
sarebbe introduzione di un secondo fattore di sicurezza.

la PresharedKey in pratica previene possibilità un domani di una rottura vpn post-quantistica nel di decifrare connessione vpn salvate nel corso del tempo.

Possiamo generare una presharekey per ogni peer (utente) generato. 
Ma possiamo anche usare una presharekey per tutti i peer.

Per generare la presharedkey si usa comando

Codice:
wg genpsk > presharedkey

Al posto  della voce presharedkey possiamo dare un nome qualunque volendo

Fatti ciò in /etc/wireguard con comando sudo nano /etc/wireguard/presharekey

Preleviamo la presharedkey appena creata e la andiamo a mettere sia dentro ai vari peer creati che nel file wg0.conf

la dicitura sarà simile a questa: dove il valore della presharekey va preso dal file creato.


PresharedKey = XXXXxxxxxXXjyuQfYAcy3Ofu7KX5/K+iXyM3L7Cc=

questo permetterà di criptare il segnale vpn wireguard con un ulteriore chiave che in un domani in cui i computer quantistici la faranno da padrona non potranno decriptare vecchi salvataggi di connessioni fatte grazie al fatto che ogni sessione viene criptata con una chiave diversa generata dalla stessa presharekey

see you

PS. io sono un purista ecco perchè non mi affido a script  mi piace gestire i comandi a mano. Ma ripeto questo per me. :-)


esempio wg0.conf

Codice:
[Interface]
Address = 10.9.0.1/24
ListenPort = 51830  
DNS = xxxxxxxx
PrivateKey = exxxxxxxxxxxxxxxxxxxxxxxxxxJ3sInw=

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o wlan0 -j MASQUERADE

[Peer]
#Peer-1
PublicKey = xxxxxxxxxxxxxxxxdo/bTQECU=
PresharedKey = xxxxxxxxxxxxxxxxxxxxKX5/K+iXyM3L7Cc=
AllowedIPs = 10.9.0.2/32
#PersistentkeepAlive = 60

[Peer]
#Peer-2
PublicKey = xxxxxxxxxxxxxxxxxxx0Xf34GUzowSo=
PresharedKey = xxxxxxxxxxxxxxxxxxxxxxX5/K+iXyM3L7Cc=
AllowedIPs = 10.9.0.3/32
#PersistentkeepAlive = 60

[Peer]
#Peer-3
PublicKey = xxxxxxxxxxxxxxxxxxxWqlM1c=
PresharedKey = xxxxxxxxxxxxxxxxxxiXyM3L7Cc=
AllowedIPs = 10.9.0.4/32
#PersistentkeepAlive = 60


esempio lato client

Codice:
[Interface]
Address = 10.9.0.2/32
DNS = 192.168.6.79
PrivateKey = xxxxxxxxxxxxxxxxx8pVw=

[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxiF/359w4=
PresharedKey = xxxxxxxxxxxxxxxxxx5/K+iXyM3L7Cc=
Endpoint = xxxxxxxns.org:51830
AllowedIPs = 0.0.0.0/0, ::/0
#PersistentkeepAlive = 60

di solito metto la voce dopo PublicKey Ti@er
Risposta
#4
Ciao Tiger.
Ho provato a seguire la guida ma mi da questo errore al punto 5

root@raspberrypi:~# make -C wireguard-linux-compat/src -j$(nproc)
make: Entering directory '/root/wireguard-linux-compat/src'
make[1]: Entering directory '/root/wireguard-linux-compat/src'
make[1]: *** /lib/modules/5.4.49-v7l+/build: No such file or directory. Stop.
make[1]: Leaving directory '/root/wireguard-linux-compat/src'
make: *** [Makefile:25: module] Error 2
make: Leaving directory '/root/wireguard-linux-compat/src'
root@raspberrypi:~#

Mi sai dire cosa fare?

Grazie
Risposta
#5
Scusami ma ti ho letto solo ora
Devi posizionarti nella cartella precedente a wireguard-tool e wireguard-linux-compat

Esempio se le 2 cartelle scaricate con git clone si trovano in /home é da li che devi lanciare comando se sei root altrimenti dai sudo prima di comandi

Chiaro? 
Fammi sapere
altrimenti puoi fare la stessa cosa se vai in

wireguard-linux-compat/src e digiti
sudo make
Poi
sudo make install

Stessa cosa da fare poi per cartella wireguard-tool/src

Ok?

Inoltre hai installato ?

sudo apt install raspberrypi-kernel-headers libelf-dev libmnl-dev build-essential git

ad ogni modo se vuoi in assistenza remota facciamo insieme
Risposta
#6
Ciao Tiger

ho provato ma di dice che manca un file o directory

/lib/modules/5.4.49-v7l+/build: No such file or directory. Stop.

Comunque ho installato WireGuard

ma mi da quest'errore

root@RPi4main:/etc/wireguard# sudo systemctl restart wg-quick@wg0.service
Job for wg-quick@wg0.service failed because the control process exited with error code.
See "systemctl status wg-quick@wg0.service" and "journalctl -xe" for details.
root@RPi4main:/etc/wireguard# systemctl status wg-quick@wg0.service
● wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0
Loaded: loaded (/lib/systemd/system/wg-quick@.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sat 2020-06-27 17:31:28 CEST; 9s ago
Docs: man:wg-quick(8)
man:wg(8)
https://www.wireguard.com/
https://www.wireguard.com/quickstart/
https://git.zx2c4.com/wireguard-tools/ab...wg-quick.8
https://git.zx2c4.com/wireguard-tools/ab...c/man/wg.8
Process: 26677 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=1/FAILURE)
Main PID: 26677 (code=exited, status=1/FAILURE)

Jun 27 17:31:28 RPi4main systemd[1]: Starting WireGuard via wg-quick(8) for wg0...
Jun 27 17:31:28 RPi4main wg-quick[26677]: [#] ip link add wg0 type wireguard
Jun 27 17:31:28 RPi4main wg-quick[26677]: Error: Unknown device type.
Jun 27 17:31:28 RPi4main wg-quick[26677]: Unable to access interface: Protocol not supported
Jun 27 17:31:28 RPi4main wg-quick[26677]: [#] ip link delete dev wg0
Jun 27 17:31:28 RPi4main wg-quick[26677]: Cannot find device "wg0"
Jun 27 17:31:28 RPi4main systemd[1]: wg-quick@wg0.service: Main process exited, code=exited, status=1/FAILURE
Jun 27 17:31:28 RPi4main systemd[1]: wg-quick@wg0.service: Failed with result 'exit-code'.
Jun 27 17:31:28 RPi4main systemd[1]: Failed to start WireGuard via wg-quick(8) for wg0.
root@RPi4main:/etc/wireguard#

Ho disinstallato e reinstallato : wireguard-dkms
e questo è il risultato.
Le ultime righe mi dicono che non si installa il modulo build che è quello che non trova con la tua procedura.
Sto cercando ma sembra ci sia un problema con il kernel.
Può essere?

root@RPi4main:/etc/wireguard# apt install wireguard-dkms
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
wireguard
The following NEW packages will be installed:
wireguard wireguard-dkms
0 upgraded, 2 newly installed, 0 to remove and 1 not upgraded.
Need to get 262 kB of archives.
After this operation, 1,780 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://deb.debian.org/debian unstable/main armhf wireguard-dkms all 1.0.20200623-1 [254 kB]
Get:2 http://deb.debian.org/debian unstable/main armhf wireguard all 1.0.20200513-1 [8,052 B]
Fetched 262 kB in 1s (507 kB/s)
Selecting previously unselected package wireguard-dkms.
(Reading database ... 163643 files and directories currently installed.)
Preparing to unpack .../wireguard-dkms_1.0.20200623-1_all.deb ...
Unpacking wireguard-dkms (1.0.20200623-1) ...
Selecting previously unselected package wireguard.
Preparing to unpack .../wireguard_1.0.20200513-1_all.deb ...
Unpacking wireguard (1.0.20200513-1) ...
Setting up wireguard-dkms (1.0.20200623-1) ...
Loading new wireguard-1.0.20200623 DKMS files...
It is likely that 5.4.44-v7l+ belongs to a chroot's host
Building for 4.19.118+, 4.19.118-v7+, 4.19.118-v7l+, 4.19.118-v8+, 5.4.44+, 5.4.44-v7+, 5.4.44-v7l+ and 5.4.44-v8+
Building initial module for 4.19.118+
Done.

wireguard.ko:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/4.19.118+/kernel/net/

depmod...

DKMS: install completed.
Building initial module for 4.19.118-v7+
Done.

wireguard.ko:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/4.19.118-v7+/kernel/net/

depmod...

DKMS: install completed.
Building initial module for 4.19.118-v7l+
Done.

wireguard.ko:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/4.19.118-v7l+/kernel/net/

depmod...

DKMS: install completed.
Module build for kernel 4.19.118-v8+ was skipped since the
kernel headers for this kernel does not seem to be installed.
Module build for kernel 5.4.44+ was skipped since the
kernel headers for this kernel does not seem to be installed.
Module build for kernel 5.4.44-v7+ was skipped since the
kernel headers for this kernel does not seem to be installed.
Module build for kernel 5.4.44-v7l+ was skipped since the
kernel headers for this kernel does not seem to be installed.
Module build for kernel 5.4.44-v8+ was skipped since the
kernel headers for this kernel does not seem to be installed.
Setting up wireguard (1.0.20200513-1) ...
root@RPi4main:/etc/wireguard# reboot

Session terminated, killing shell... ...killed.
Terminated
Risposta
#7
hai usato rpi-update? Perché non hai tutti i moduli così, devi ritornare al kernel originario e testare.

Dai questo comando


Codice:
sudo apt install --reinstall libraspberrypi0 libraspberrypi-{bin,dev,doc} raspberrypi-bootloader raspberrypi-kernel
Riavvia il Raspberry e poi riprova.

Postami contenuto file wg0.conf inoltre
Risposta
#8
Grazie Tiger.

tutto fatto.
in pratica sono tornato al kernel 4.x.
Come mai questi problemi con il kernel 5.x e WireGuard?
Che differenze ci possono essere avendo il 4 al posto del 5?
Grazie di tutto
Risposta
#9
Sono due rami del kernel stable, per buster
ovvero per Raspberry Pi Os 32 il ramo è 4.19.x stable basato sui reposity raspbian.org.

Mentre Raspberry Pi Os 64 bit ha kernel 5.x basato sui reposity Debian arm64 questo kernel ha molteplici implementazioni legati al riconoscimento automatico della decodifica video 4k.

Non appena si riterrà stabile il kernel 5.4 per Raspberry Pi Os 32 bit basato ripeto sui reposity raspberry.org si userà.

Attualmente la situazione è questa:

Abbiamo Raspberry Pi Os a 32 bit basato su sorgenti Raspbian.org cui possiamo fare girare il kernel a (32 e 64 bit) parlo di solo kernel a 64 bit.
(attenzione molte app non partono se si impostano i 64bit al kernel perché si aspettano un kernel a 32bit)

Poi abbiamo adesso Raspberry Pi Os 64 bit basato su sorgenti Debian Arm64 (non più Raspbian.org) il cui kernel 5.x ha pacchetti che sono compilati a 64bit il che porta os a essere compatibile solo con pi3 e pi4.

Si nota un leggero miglioramento su questi raspberry rispetto a os a 32bit.

Non potrai però sfilare la scheda e metterla su un pi0 o pi1 o pi2 e sperare che os parti.

Se vuoi ciò resta a 32 bit al massimo metti kernel a 64bit basato su raspbian.org per pi2 anche.

Altra nota: a breve uscirà anche Raspberry Pi Os 64 bit lite,
sempre solo interfaccia a Riga di comando basati sempre su reposity Debian arm 64bit.

Spero di essere stato chiaro

Altra cosa importante ogni tanto vai nelle cartelle wireguard-linux-compat e wireguard-tool e digita

Codice:
sudo git pull

Se ti dice tutto aggiornato finisce lì, mentre se in una delle 2 cartelle o tutte e 2 ti fa degli aggiornamenti aggiungendo e/o eliminando delle modifiche vai poi nella relativa cartella src, (wireguard-linux-compat/src oppure wireguard-tool/src) e digitare:


Codice:
sudo make
sudo make install

Poi

Codice:
sudo reboot

Se con sudo git pull ti da errore di aggiornamento vari, rimuovi cartella e con

Codice:
sudo git clone https://git.zx2c4.com/wireguard-linux-compat

Oppure con

Codice:
sudo git clone https://git.zx2c4.com/wireguard-tools

ti ricrei cartella, vai poi in cartella src e dai sempre sudo make eppoi sudo make install ok?
Risposta
#10
le cartelle wireguard-linux-compat e wireguard-tools dove dovrebbero essere?
Risposta
  


Vai al forum:


Navigazione: 1 Ospite(i)
Forum con nuovi Post
Forum senza nuovi post
Forum bloccato
Forum Redirect