Debian Wireguard Server – Mikrotik Full-Tunnel

5
(2)

In questo articolo affronteremo la configurazione di Wireguard Server su un VPS Debian 11 e la configurazione full-tunnel di un peer Mikrotik.

Obbiettivo

Tutto il traffico verso Internet generato dai client attestati dietro la LAN del Mikrotik verrà reindirizzato verso il VPS, pertanto l’IP di navigazione risulterà quello del server Debian e non quello della WAN del Mikrotik.

Requisiti

  • Un VPS con Debian 11 ed IP Pubblico statico (ti consiglio il provider Synthohosting)
  • Un router Mikrotik con RouterOS v.7

Diagramma di rete

Installare Wireguard Server su Debian 11

Colleghiamoci al nostro VPS tramite terminale e con utente root diamo i comandi

apt update
apt install wireguard

Generazione chiavi Server Wireguard

Generiamo una coppia di chiavi pubblica e privata per il nostro server Wireguard.

Il comando sotto genererà la chiave privata che salveremo nel file chiamato server_private.key e la chiave pubblica nel file chiamato server_public.key

wg genkey | tee /etc/wireguard/server_private.key | wg pubkey | tee /etc/wireguard/server_public.key

Generazione chiavi peer (Mikrotik)

Generiamo ora una coppia di chiavi pubblica e privata per il nostro peer Mikrotik.

La chiave privata sarà salvata nel file chiamato mikrotik_private.key e la chiave pubblica nel file chiamato mikrotik_public.key

wg genkey | tee /etc/wireguard/mikrotik_private.key | wg pubkey | tee /etc/wireguard/mikrotik_public.key

Configurazione Debian Wireguard Server

Configuriamo ora l’interfaccia Wireguard sul server Debian.

Copiamoci la chiave privata del server(server_private.key ), consultabile con in comando:

cat /etc/wireguard/server_private.key

Ripetiamo l’operazione per la Public Key del peer(mikrotik_public.key):

cat /etc/wireguard/mikrotik_public.key

Tramite il comando sotto creiamo il file wg0.conf. wg0 sarà anche il nome dell’interfaccia Wireguard che verrà creata sul server Debian

nano /etc/wireguard/wg0.conf

Copiamo il seguente testo nel file sostituendo il testo “MY_server_private.key” e MY_mikrotik_public.key” con le chiavi che abbiamo recuperato al passaggio precedente

[Interface]
Address = 172.18.18.1/24
ListenPort = 51828
PrivateKey = MY_server_private.key

[Peer]
PublicKey = MY_mikrotik_public.key
AllowedIPs = 172.18.18.2/32

Spiegazione:

  • Address: Indirizzo IP dell’interfaccia Wireguard del Server. Tale classe di rete non deve essere già utilizzata
  • PrivateKey: Chiave privata del server, che si trova nel file /etc/wireguard/server_private.key
  • ListenPort: Porta (UDP) sulla quale il Server Wireguard sarà in ascolto
  • PublicKey: Chiave pubblica del peer(Mikrotik), che si trova nel file /etc/wireguard/mikrotik_public.key
  • AllowedIPs: è l’indirizzo IP del client all’interno della rete VPN

Cambiamo i permessi dei file in modo tale da concedere solamente all’utente root la lettura del contenuto

chmod 600 /etc/wireguard/ -R

Abilitiamo l’IP Forwarding nel Server Wireguard

Apriamo il file /etc/default/ufw e impostiamo la policy di default relativa al Forward in ACCEPT.

nano /etc/default/ufw 

Trovare la voce DEFAULT_FORWARD_POLICY="DROP" e modificarla in DEFAULT_FORWARD_POLICY="ACCEPT"

Salviamo e chiudiamo il file

Modifichiamo il file /etc/sysctl.conf

nano /etc/sysctl.conf

Alla fine del file inseriamo

net.ipv4.ip_forward = 1

Salviamo il file e diamo il comando sotto per rendere effettive le modifiche

sysctl -p

Configuriamo il NAT sul Server

Abbiamo ora bisogno di impostare il NAT sul firewall del nostro Server per effettuare il masquerade del traffico proveniente dalla subnet assegnata all’interfaccia Wireguard.

Useremo UFW, un front end di iptables firewall. (se vuoi approfondire iptables, leggi questa guida by foisfabio.it)

Installiamo UFW con il comando

apt install ufw

permettiamo il traffico SSH

sudo ufw allow 22/tcp

Verifichiamo ora il nome della nostra scheda di rete

ip addr

Nel mio caso la scheda di rete si chiama eth0.

Per configurare il masquerade del traffico proveniente dai peer Wireguard, dobbiamo aggiungere delle regole iptables nel file di configurazione di UFW.

Apriamo il file con

nano /etc/ufw/before.rules

dentro ci saranno già delle regole di default, rechiamoci alla fine del file dopo la voce COMMIT, ed aggiungiamo le righe sotto sostituendo eth0 con in nome della propria interfaccia di rete

# # NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o eth0 -j MASQUERADE

# End each table with the 'COMMIT' line or these rules won't be processed
COMMIT

Di default, UFW blocca il forward dei pacchetti, occorre quindi abilitarlo per il traffico proveniente dalla subnet 172.18.18.0/24 che abbiamo assegnato al tunnel Wireguard.

Cerca la catena ufw-before-forward ed aggiungi le tre linee sotto

# allow forwarding for trusted network
-A ufw-before-forward -s 172.18.18.0/24 -j ACCEPT
-A ufw-before-forward -d 172.18.18.0/24 -j ACCEPT

Salviamo e chiudiamo il file.

Abilitiamo UFW

Attenzione

Prima di abilitare UFW, inserite le eccezioni per i servizi che devono essere raggiunti sul server, es. Webserver(porta 443), OpenVPN(1194), Telnet(23)

ufw enable

Apriamo la porta di WireGuard Server sul Firewall

Diamo il comando sotto per per aprire la porta di Wireguard Server 51828 sul Firewall

ufw allow 51828/udp

Avviamo WireGuard

Abilitiamo l’avvio automatico del server Wireguard all’avvio del sistema

systemctl enable wg-quick@wg0.service

Avviamo ora il servzio

systemctl start wg-quick@wg0.service

Comandi utili

Per fermare il server usare il comando

wg-quick down /etc/wireguard/wg0.conf

Per avviare il server

wg-quick up /etc/wireguard/wg0.conf

Configurazione peer Mikrotik in full-tunnel

Configurazione interfaccia Wireguard

Configuriamo ora il router Mikrotik come peer Wireguard. Creiamo per prima l’interfaccia Wireguard.

Andiamo sul menù Wireguard –> Wireguard e poi clicchiamo su “+”

Configuriamo l’interfaccia in questo modo:

  • Name: wg-debian
  • Listen Port: 51828 (la porta di ascolto può essere diversa da quella impostata sul server)
  • Private Key: Chiave privata del peer Mikrotik, generata precedentemente sul server. Per vedere la chiave, digitare nel terminale del server Wireguard cat /etc/wireguard/mikrotik_private.key
  • cliccare su Apply e poi su OK

Aggiunta peer Wireguard Mikrotik

Andiamo sul menù Wireguard –> Peers e poi clicchiamo su “+”

Configuriamo il peer in questo modo:

  • Interface: wg-debian
  • Public Key: Chiave pubblica del server Wireguard, generata precedentemente. Per vedere la chiave digitare nel terminale del server Wireguard cat /etc/wireguard/server_public.key
  • Endpoint: IP Pubblico del nostro VPS
  • Endpoint Port: 51828 (la porta di ascolto del servzio Wireguard sul server Debian)
  • Allowed Address: 0.0.0.0/0 per consentire di far passare tutto il traffico dal tunnel Wireguard
  • Persistent Keepalive: 00:00:25
  • cliccare su Apply e poi su OK

Assegnazione IP all’interfaccia Wireguard

Andiamo in IP –> Addresses e clicchiamo su “+”

Compiliamo come segue:

  • Address: 172.18.18.2/24
  • Network: 172.18.18.0
  • Interface: wg-debian
  • cliccare su Apply e poi su OK

Creazione tabella di routing

Creiamo ora una tabella di routing. Andiamo in Routing –> Tables e clicchiamo su “+”

Popoliamo i campi come segue:

  • Name: to_wg_debian
  • spuntare la check box FIB
  • cliccare su Apply e poi su OK

Regola di routing

Creiamo ora una routing rule per instradare tutto il traffico sorgente della LAN del Mikrotik sulla tabella di routing apposita

Andiamo in Routing–>Rules e clicchiamo su “+”

Inseriamo i paramentri:

  • Src. Address: 192.168.150.0/24
  • Dst. Address: 0.0.0.0/0
  • Action: lookup only in table
  • Table: to_wg_debian
  • cliccare su Apply e poi su OK

Creazione rotta statica

Aggiungiamo ora una rotta statica per instradare il traffico verso la nuova tabella di routing .

Andiamo in IP –> Routes e clicchiamo su “+”

Impostiamo la nuova rotta come segue:

  • General
    • Dst. Address: 0.0.0.0/0
    • Gateway: 172.18.18.1
    • Routing Table: to_wg_debian
  • cliccare su Apply e poi su OK

Creazione regola di NAT

Dobbiamo adesso creare una regola di NAT per permettere al traffico generato dalla LAN di uscire tramite l’interfaccia Wireguard.

Andiamo in IP –> Firewall –> NAT e clicchiamo su “+”

Aggiungiamo una regola con questi paramentri:

  • General
    • Chain: srcnat
    • Out.Interface: wg-debian
  • Action
    • Action: masquerade
  • cliccare su Apply e poi su OK

Una volta creata la regola di masquerade, assicurarsi che questa sia posizionata in cima, sopra ad altre eventuali regole di NAT

Verifica tunnel Wireguard Server

Se la configurazione è stata eseguita correttamente dovremmo riuscire a

  1. raggiungere il server Wireguard sull’IP 172.18.18.1
  2. raggiungere il server Wireguard sull’IP 172.18.18.1 da sorgente la LAN del Mikrotik 192.168.150.1
  3. navigare su Internet facendo passare il traffico tramite il nostro VPS e quindi presentarci su Internet con l’IP Pubblico del nostro Server Wireguard

Se l’articolo Debian Wireguard Server – Mikrotik full-tunnel è stato di tuo gradimento esprimi il tuo voto

Per non perderti i nuovi post entra nel canale Telegram e WhatsApp

Se riscontri errori nell’articolo segnalalo tramite il modulo Contatti

Ti è stato utile questo post?

Clicca sulla stella per votare!

Voto medio 5 / 5. Numero voti: 2

Nessun voto finora! Sii il primo a valutare questo post.

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *