Published on

Come ho creato una rete privata sicura con WireGuard e Proxmox

Authors
  • avatar
    Name
    Alessandro Iannacone
    Twitter

Una delle cose più importanti in un'infrastruttura self-hosted è la sicurezza del traffico interno. Per proteggere i miei container, VM e servizi come Jenkins, Portainer, Grafana o backend API, ho configurato una rete privata VPN usando WireGuard.

WireGuard è leggero, moderno, facile da configurare e perfetto per reti interne su Proxmox.


🎯 Obiettivo

Creare una VPN che:

  • Isoli tutto il traffico interno tra i nodi
  • Consenta solo accessi autenticati tramite chiavi
  • Possa essere estesa ad altri dispositivi o server
  • Non esponga porte sensibili su internet

🏗️ Ambiente

  • Proxmox VE 8.x
  • 1 nodo principale + più container/VM
  • OS: Debian 12 su ogni nodo/container
  • VPN interna gestita via WireGuard

🔧 Installazione di WireGuard

Su ogni nodo (VM o container) installo WireGuard:

sudo apt update
sudo apt install wireguard

Creo la directory:

mkdir -p /etc/wireguard
cd /etc/wireguard

Genero le chiavi:

wg genkey | tee privatekey | wg pubkey > publickey

🔐 Configurazione del server (es. 10.10.0.1)

Creo /etc/wireguard/wg0.conf:

[Interface]
Address = 10.10.0.1/24
PrivateKey = <CHIAVE_PRIVATA_SERVER>
ListenPort = 51820

# Abilita IP forwarding
PostUp = sysctl -w net.ipv4.ip_forward=1
PostDown = sysctl -w net.ipv4.ip_forward=0

🔗 Configurazione di un peer (es. container Jenkins 10.10.0.2)

[Interface]
Address = 10.10.0.2/24
PrivateKey = <CHIAVE_PRIVATA_CLIENT>

[Peer]
PublicKey = <CHIAVE_PUBBLICA_SERVER>
Endpoint = <IP_SERVER>:51820
AllowedIPs = 10.10.0.1/32
PersistentKeepalive = 25

🚀 Avvio del tunnel

Su ogni nodo:

wg-quick up wg0

Per rendere persistente al boot:

systemctl enable wg-quick@wg0

📦 Esempi d’uso in ambienti DevOps

Una volta connessi:

  • Jenkins può fare deploy via SSH solo su IP interni (es. 10.10.0.3)
  • Il monitoring Prometheus/Grafana può raccogliere metriche in rete privata
  • I container Docker possono essere raggiunti tramite 10.10.x.x via Nginx Proxy Manager (anch’esso interno)

🔒 Sicurezza

  • Le chiavi sono asimmetriche e uniche per ogni nodo
  • Nessuna porta è esposta direttamente su WAN
  • Il traffico è cifrato con Curve25519
  • Uso regole firewall per permettere solo il traffico wg0

Esempio (iptables):

iptables -A INPUT -i wg0 -j ACCEPT
iptables -A FORWARD -i wg0 -j ACCEPT

🧪 Debug utile

Controllo lo stato del tunnel:

wg show

Log di sistema:

journalctl -u wg-quick@wg0

✅ Conclusione

WireGuard mi ha permesso di collegare in modo sicuro tutti i miei servizi Proxmox-based senza esporre nulla su internet. È veloce, stabile e facilmente estendibile a nuovi peer o server remoti.

Se lavori con Jenkins, backup, automazione o hosting privato, una VPN interna è il punto di partenza per un’infrastruttura sicura.


💬 Vuoi replicare la mia configurazione?

Scrivimi via email o apri una discussione su GitHub per esempi reali e script avanzati!