Guida Infrastruttura e Rete MDM per il Sistemista¶
Benvenuto. Questa cartella raccoglie tutte le informazioni tecniche relative all'infrastruttura sistemistica, alla topologia di rete, ai server, alle VPN e alle procedure di attivazione per il progetto MDM (sistema di gestione e televigilanza impianti di videosorveglianza e allarmi).
Il documento è pensato specificamente per il ruolo sistemista / DevOps: non contiene dettagli di programmazione applicativa, ma fornisce il quadro completo dei nodi, degli indirizzi IP, delle interconnessioni, delle procedure di provisioning hardware/rete e dell'analisi oggettiva delle criticità e fragilità attuali.
TL;DR — Visione d'Insieme (Primo Giorno)¶
- Unico Server Fisico (Netsons, Milano):
- Un server bare metal ("la 229", IP
185.31.66.229) ospita un hypervisor Proxmox VE 8.4. - Non ci sono cluster o server di failover: tutte le macchine virtuali (produzione, dev, centralino VoIP, firewall) risiedono su questo singolo host fisico.
- Firewall e Gateway Virtuale (pfSense):
- La VM 101 ospita pfSense 2.8.1, che fa da default gateway per tutta l'infrastruttura interna, gestisce il NAT per gli IP pubblici assegnati e termina due tunnel VPN WireGuard:
WG_VPN(172.16.16.0/24): collega circa 66 mini PC (box cliente installati presso negozi, abitazioni, aziende).WG_STS_CAVA(171.16.16.0/24): tunnel site-to-site con la sede operativa aziendale di Cava de' Tirreni.
- Macchina di Produzione Core (ServerIT - VM 500):
- Ospita lo stack applicativo di produzione in Docker Compose: il backend API del midserver, il broker MQTT Mosquitto, il database MySQL, il server di streaming video OME (OvenMediaEngine), Redis, Nginx Proxy Manager e l'integrazione domotica eWeLink.
- Comunica con i box clienti tramite l'IP interno VPN
172.16.16.253(NAT 1:1 verso l'IP LAN170.10.0.108). - Cloud AWS (eu-west-1):
- Usato a supporto per S3 (archiviazione registrazioni audio trombe, snapshot allarmi, log remoti dei box), Route 53 (DNS), ECR (container registry) e database centrale anagrafiche BSQ (RDS).
- Non ospita l'infrastruttura video/VPN per ragioni di costo legate alla banda massiva dei flussi video (decine di Terabyte mensili).
- Criticità Chiave da Conoscere Subito:
- SPOF (Single Point of Failure): Se il server fisico o la VM pfSense cadono, tutti i 66 impianti perdono istantaneamente connettività verso la centrale e verso il midserver.
- VPN senza segmentazione a livello firewall: Tutti i box remoti possono teoricamente interrogare le porte interne dei server di produzione (MySQL 3306, Redis 6379, ecc.) e l'interfaccia HTTP di pfSense.
- Backup e DR deboli: I backup sono solo snapshot completi settimanali delle VM verso un NAS remoto in ufficio a Cava. Nessun dump logico periodico di MySQL; Redis in produzione utilizza un volume anonimo Docker.
- Monitoraggio: Attualmente il monitoraggio di produzione non è gestito da una piattaforma enterprise (lo stack Prometheus/Grafana è presente solo in DEV), ma si appoggia a un Raspberry Pi fisico situato in ufficio a Cava.
Diagramma di Topologia Infrastrutturale e di Rete¶
Il seguente schema illustra l'architettura completa, evidenziando le interfacce di rete, gli indirizzi IP pubblici e privati, i tunnel VPN e i flussi di traffico.
flowchart TB
subgraph WAN_INTERNET["INTERNET (Accesso Pubblico)"]
PUB_NET["Rete Internet"]
end
subgraph NETSONS_HOST["SERVER FISICO NETSONS (Milano) - Host Proxmox VE 'la 229'"]
direction TB
PVE_NODE["Host Proxmox VE 8.4.19<br/>IP Pubblico Gestione: 185.31.66.229:8006 (Filtro a monte)<br/>CPU: 20 thread | RAM: 125 GB | Storage: local-lvm 758 GB"]
subgraph BRIDGES["Virtual Switches / Bridges"]
VMBR0["vmbr0 (Fisica: eno1)<br/>Rete Pubblica: 185.31.66.0/24<br/>Gateway Netsons: 185.31.66.1"]
VMBR1["vmbr1 (Isolata, solo VM)<br/>LAN Interna: 170.10.0.0/24"]
end
subgraph VM_101["VM 101: pfSense 2.8.1 (Core Firewall & VPN Gateway)"]
PFS_WAN["WAN: 185.31.66.187<br/>Alias IP: 185.31.66.185, 185.31.66.186"]
PFS_LAN["LAN: 170.10.0.1/24 (Gateway)"]
PFS_WG0["tun_wg0 (WG_VPN): 172.16.16.1/24<br/>Endpoint: :51420 su .186"]
PFS_WG1["tun_wg1 (WG_STS_CAVA): 171.16.16.1/24<br/>Endpoint: :51421"]
end
subgraph VMS_LAN["Macchine Virtuali su vmbr1 (170.10.0.0/24)"]
VM_500["VM 500: ServerIT (PROD Core)<br/>IP LAN: 170.10.0.108<br/>NAT da VPN: 172.16.16.253<br/>NAT da WAN (.185): 80, 443, 3333, 9999<br/>Servizi: Midserver API, MySQL, Redis, Mosquitto, OME, NPM"]
VM_200["VM 200: MidServerDEV (Coolify DEV)<br/>IP LAN: 170.10.0.107<br/>NAT da VPN: 172.16.16.252<br/>NAT da WAN (.187): 80, 443<br/>Servizi: Coolify, Traefik, Monitoring Dev"]
VM_102["VM 102: FreePBXnew (VoIP Trombe)<br/>IP LAN: 170.10.0.101<br/>NAT da WAN (.186): SIP 5060, RTP 10000-40000<br/>Servizi: Asterisk PBX, 106 interni trombe"]
VM_105["VM 105: OP4 (Windows Servizio)<br/>IP LAN: 170.10.0.204<br/>Postazione remota supporto e client terzi"]
VM_400["VM 400: Server Legacy (SPENTO/INUTILIZZATO)<br/>Allocati 32 GB RAM / 300 GB Disco<br/>(Candidata a rimozione per recupero risorse)"]
end
end
subgraph CLIENT_SITES["IMPIANTI CLIENTI (Edge Mini PC Ubuntu)"]
BOX1["Box Impianto 1<br/>IP VPN: 172.16.16.x<br/>Servizi: Detector (Frigate/Ganz),<br/>Nginx Stream (10101-10105),<br/>Port 2000 listener"]
BOXN["Box Impianto N (~66 impianti attivi)<br/>IP VPN: 172.16.16.x<br/>AllowedIPs: 172.16.16.1, .253, .254"]
CAM["Telecamere IP / NVR Locali<br/>RTSP su LAN cliente (554 / 8000)"]
HORN["Tromba Acustica / Speaker IP<br/>Client SIP verso FreePBX (.186)"]
BOX1 --- CAM
BOX1 -. "Audio" .- HORN
end
subgraph HQ_CAVA["SEDE AZIENDALE (Cava de' Tirreni)"]
FW_CAVA["Firewall Sede Cava<br/>IP VPN: 171.16.16.100<br/>(Uscita di tutta la rete aziendale)"]
CENTRAL["Centrale Operativa / Operatori<br/>Client WebRTC, Video NVR, Telefonia"]
PI_MON["Raspberry Pi Michele<br/>IP: 192.168.200.220<br/>Script monitoraggio ping/porte + Bot Telegram"]
NAS_QNAP["NAS QNAP Ufficio (10.8 TB)<br/>Target NFS vzdump Proxmox"]
end
subgraph AWS_CLOUD["AWS CLOUD (eu-west-1 Irlanda)"]
S3_STORAGE["S3 Buckets<br/>- videosorveglianzasync (Audio trombe)<br/>- bsq.protexia (Snapshot allarmi)<br/>- it.bsq.mdm.logs (Log box)"]
RDS_DB["RDS MySQL BSQ<br/>Database Gestionale / Clienti"]
ROUTE53["Route 53 / Cloudflare<br/>Gestione DNS e Domini"]
ECR_REG["ECR Docker Registry<br/>Immagini box e pannello"]
end
%% Collegamenti Fisici e di Rete
PUB_NET <== "IP Pubblici 185.31.66.0/24" ==> VMBR0
VMBR0 --> PVE_NODE
VMBR0 <== "WAN .187 + Alias .185, .186" ==> PFS_WAN
PFS_LAN <== "Gateway 170.10.0.1" ==> VMBR1
VMBR1 --- VM_500
VMBR1 --- VM_200
VMBR1 --- VM_102
VMBR1 --- VM_105
VMBR1 --- VM_400
%% Tunnel VPN
PFS_WG0 <== "Tunnel WG_VPN (UDP 51420 su .186)<br/>Subnet 172.16.16.0/24" ==> CLIENT_SITES
PFS_WG1 <== "Tunnel WG_STS_CAVA (UDP 51421)<br/>Subnet 171.16.16.0/24" ==> FW_CAVA
FW_CAVA --- CENTRAL
FW_CAVA --- PI_MON
FW_CAVA --- NAS_QNAP
%% Backup e Cloud
PVE_NODE -. "NFS via VPN / backup settimanale sab 01:00" .-> NAS_QNAP
VM_102 -. "Sync giornaliero registrazioni audio" .-> S3_STORAGE
VM_500 -. "Query anagrafiche" .-> RDS_DB
Mappa Indirizzi IP e Interconnessioni di Rete¶
1. IP Pubblici (Netsons WAN - 185.31.66.0/24)¶
| Indirizzo IP | Assegnazione | Porte Inoltrate (NAT) | Servizi e Utilizzo |
|---|---|---|---|
185.31.66.229 |
Host Fisico Proxmox | 8006 (HTTPS, chiusa da internet) | Interfaccia di amministrazione PVE. Raggiungibile solo via VPN o LAN. |
185.31.66.185 |
pfSense Alias → VM 500 ServerIT | 80, 443 (HTTP/S) 3333, 3334, 3478, 9999, 9000-10004 22 (SSH filtrato su 2 IP) |
Produzione: Nginx Proxy Manager, API Midserver, streaming WebRTC/SRT OvenMediaEngine (OME). |
185.31.66.186 |
pfSense Alias → VM 102 & WireGuard | UDP 51420 (WG_VPN) SIP 5060, 5160, 5161 RTP UDP 10000-40000 |
VoIP & VPN Impianti: Endpoint WireGuard per tutti i 66 box (receiver1.protexia24.com:51420) e centralino FreePBX trombe. Porte 80 e 443 libere. |
185.31.66.187 |
pfSense WAN principale → VM 200 | 80, 443 (HTTP/S) Porte OME Dev |
Ambiente DEV: Coolify Dashboard (coolify.dev.bsqdev.uk), Traefik proxy, servizi di collaudo. |
2. LAN Interna Virtuale (vmbr1 - Subnet 170.10.0.0/24)¶
| IP LAN | VMID | Nome Macchina | Ruolo | Caratteristiche / Note |
|---|---|---|---|---|
170.10.0.1 |
101 | pfSense | Firewall / Router Default Gateway | 4 vCPU, 8 GB RAM, 10 GB disco. Termina i tunnel VPN. |
170.10.0.108 |
500 | ServerIT | Midserver PRODUZIONE | 16 vCPU, 16 GB RAM, 200 GB disco. Docker Compose (MySQL, Redis, MQTT, OME). |
170.10.0.107 |
200 | MidServerDEV | Coolify DEV | 4 vCPU, 8 GB RAM, 100 GB disco. CI/CD dev e stack monitoring. |
170.10.0.101 |
102 | FreePBXnew | Centralino Asterisk | 4 vCPU, 8 GB RAM, 100 GB disco. Gestione flussi audio trombe. |
170.10.0.204 |
105 | OP4 | Windows Supporto | 8 vCPU, 8 GB RAM, 50 GB disco. Postazione di servizio client proprietari. |
170.10.0.100 |
400 | Server | Vecchia dev (SPENTA) | 16 vCPU, 32 GB RAM, 300 GB disco. Inutilizzata, da eliminare per recuperare 32GB RAM e 300GB disco. |
3. VPN WireGuard (tun_wg0 e tun_wg1)¶
| Tunnel | Subnet | Gateway / IP Locale | Endpoint Esterno | Peer Connessi | Destinazione e Uso |
|---|---|---|---|---|---|
WG_VPN (tun_wg0) |
172.16.16.0/24 |
172.16.16.1 |
185.31.66.186:51420 |
~66 peer (Mini PC clienti) | Rete Impianti. Connette i box remoti al midserver tramite il virtual IP 172.16.16.253 (ServerIT). |
WG_STS_CAVA (tun_wg1) |
171.16.16.0/24 |
171.16.16.1 |
UDP 51421 | 1 peer (171.16.16.100) |
Site-to-Site Sede Cava. Connette la centrale operativa, gli operatori video e il NAS NFS per i backup. |
Quadro Sinottico delle Fragilità e delle Esigenze Sistemistiche¶
Questa sezione riassume lo stato dell'arte infrastrutturale: i rischi operativi, le vulnerabilità architetturali e le aree di supporto in cui è richiesto il presidio sistemistico.
| Area | Stato Attuale & Fragilità | Impatto Operativo | Esigenza Sistemistica Correlata |
|---|---|---|---|
| Alta Affidabilità (HA) | Singolo server Proxmox presso Netsons. Nessun nodo di replica o failover. | Un guasto hardware all'host ferma contemporaneamente tutti i servizi e isola 66 impianti. | Valutazione sizing/costi per secondo host di replica o Disaster Recovery; gestione manutenzioni programmate Netsons. |
| Firewall & Gateway (SPOF) | pfSense virtualizzato (VM 101) privo di istanza HA (CARP). | Se la VM 101 si arresta o si corrompe, cadono internet, DNS, telefonia e tutti i tunnel VPN WireGuard. | Snapshot/export periodici e automatici della configurazione XML di pfSense; studio di ridondanza gateway. |
| Segmentazione VPN | La subnet impianti 172.16.16.0/24 raggiunge 172.16.16.253 su tutte le porte. Nessuna regola di isolamento L4 stringente su pfSense. |
Un box compromesso o un utente locale può scansionare e raggiungere MySQL (3306), Redis (6379), phpMyAdmin (7070) ed eWeLink (8080). | Definizione e applicazione di regole firewall su pfSense: limitare i box alle sole porte strettamente necessarie (5000 API, 1883 MQTT). |
| Backup & Data Protection | Solo backup settimanale completo Proxmox (vzdump via NFS su NAS remoto). Nessun dump logico periodico di MySQL. Redis su volume anonimo. | RPO fino a 7 giorni. Con docker compose down si perdono i dati volatili e lo stato degli impianti in Redis. |
Implementazione di cron job per dump logici di MySQL (giornalieri/orari), volume nominativo con persistenza AOF per Redis, backup config pfSense. |
| Monitoraggio & Allarmistica | Nessun NMS enterprise in produzione. Il controllo dipende da un Raspberry Pi fisico in ufficio a Cava (192.168.200.220) con script Telegram. |
Nessuna visibilità proattiva su CPU, RAM, dischi, saturazione porte e stato dei container critici. | Messa in produzione di un monitoraggio strutturato (attivazione di Uptime Kuma o promozione in prod dello stack Prometheus/Grafana già pronto in DEV). |
| Capacità Risorse (Host) | Storage local-lvm (758 GB) con thin provisioning; dischi allocati (~760 GB) vicini al limite fisico. VM 400 spenta occupa 32 GB RAM e 300 GB disco. |
Rischio saturazione disco host in caso di crescita rapida o snapshot multipli. | Rimozione/archiviazione della VM 400 per liberare 32 GB RAM e 300 GB di storage; allocazione pulita per nuove VM (es. Coolify PROD). |
| Identità & Sicurezza | Utenze amministrative generiche condivise (root su Proxmox, admin su pfSense, bsqsecurity sui server). |
Mancanza di tracciamento degli accessi individuali, rischio operativo elevato in caso di turnover del personale. | Creazione di account personali nominali con permessi dedicati (es. ruolo PVEAuditor per sola lettura); rotazione chiavi. |
Indice dei Documenti di Dettaglio¶
Per approfondire ciascun argomento, fare riferimento alle sezioni dedicate:
- 01. Architettura di Rete e Infrastruttura: Specifiche dell'host Proxmox, bridge virtuali, routing pfSense, dettagli dei tunnel WireGuard, subnet speciali e servizi cloud AWS collegati.
- 02. Inventario Macchine e Servizi: Scheda completa di ogni VM (risorse, porte in ascolto, progetti Docker Compose, container attivi, volumi e dipendenze esterne).
- 03. Procedura Nuova Installazione Impianto: Guida operativa end-to-end per il sistemista: configurazione del Mini PC Ubuntu, generazione chiavi e peer WireGuard, listener di raggiungibilità, proxy verso gli NVR locali e configurazione dell'interno telefonico per la tromba acustica.
- 04. Fragilità e Criticità Infrastrutturali: Analisi tecnica dettagliata di tutti i punti deboli correnti (SPOF, storage, sicurezza di rete, lacune nei backup e nel monitoraggio) e requisiti di potenziamento sistemistico.