1 12/05/2026 10 min

Installare GNS3 Server su Ubuntu 24.04 LTS: cosa serve davvero

GNS3 Server non è il software grafico che usi sul desktop: è il componente che esegue i nodi, gestisce le immagini e parla con il client GNS3. Su Ubuntu 24.04 LTS conviene trattarlo come un servizio di infrastruttura, non come una semplice app da installare e dimenticare. La differenza pratica è questa: se lo metti bene, il server diventa stabile, aggiornabile e riavviabile da systemd; se lo configuri in fretta, finisci con permessi sbagliati, porte chiuse e immagini che non partono.

La strada più pulita è usare un host dedicato o una VM con risorse coerenti con i laboratori che devi far girare. Per scenari piccoli basta poco, ma appena entrano in gioco più appliance, immagini QEMU, container o topologie con molte interfacce virtuali, la parte che cede per prima è quasi sempre RAM o I/O disco, non CPU.

Prerequisiti reali su Ubuntu 24.04

Prima di installare, verifica tre cose: accesso sudo, rete funzionante e spazio disco sufficiente. GNS3 Server scrive log, immagini e file di progetto; se lo installi su una macchina con storage stretto, il problema emerge dopo, quando i progetti iniziano a crescere.

Per un’installazione base considera almeno 2 vCPU, 4 GB di RAM e 20 GB liberi. Per uso serio, soprattutto con QEMU, alza il margine. Non è un valore “ufficiale” universale: dipende dalle immagini e dal numero di nodi, quindi la metrica vera da osservare è la saturazione di RAM e disco durante l’avvio dei lab.

Controlla subito release e kernel, così sai su cosa stai lavorando:

lsb_release -a
uname -r
free -h
df -h /

Se il filesystem di root è già vicino al limite, fermati e sposta dati e immagini su un volume dedicato prima di andare oltre.

Metodo consigliato: pacchetti ufficiali e servizio systemd

Su Ubuntu 24.04 la scelta più sensata è installare GNS3 Server da repository compatibili con la tua versione, oppure dal canale indicato dal progetto se il repository distro non basta. Qui il punto non è “fare prima”, ma avere dipendenze risolte in modo ripetibile e un servizio gestibile con systemd.

Prima aggiorna l’indice pacchetti e prepara i tool di base:

sudo apt update
sudo apt install -y software-properties-common curl ca-certificates gnupg

Se il repository che userai fornisce una chiave firmata, importala con il meccanismo previsto dal fornitore. Evita scorciatoie tipo chiavi globali in posizioni vecchie o script che aggiungono sorgenti senza verifica. Su un server esposto in rete, la pulizia del trust chain conta più della comodità.

In pratica, la sequenza tipica è: aggiunta repository, installazione pacchetto, verifica binario, avvio servizio. La sintassi esatta del repository dipende dal canale scelto, quindi qui il punto importante è il metodo, non una riga magica che rischia di diventare obsoleta. Se hai già una fonte ufficiale per la tua versione, segui quella e conserva il file `.list` o `.sources` sotto versionamento operativo.

Dipendenze che non devi saltare

GNS3 Server non vive da solo. A seconda di come lo usi, possono servire componenti per QEMU, Docker, dinamips, ubridge e librerie Python. Il punto operativo è semplice: installa solo ciò che ti serve davvero, ma verifica che il server riesca a trovare i backend necessari quando avvii un progetto.

Un controllo utile dopo l’installazione è questo:

gns3server --version
which gns3server
systemctl status gns3server

Se il binario non esiste, il pacchetto non è stato installato nel modo giusto o il repository non è quello previsto. Se il servizio non parte, vai subito nei log e non perdere tempo a riavviare a caso.

Per i log di systemd:

journalctl -u gns3server -b --no-pager

Le cause più frequenti in questa fase sono tre: dipendenze mancanti, porta già occupata oppure permessi insufficienti sulle directory usate dal servizio.

Creare l’utente di servizio e le directory corrette

Un server ben tenuto non gira come root se non è strettamente necessario. Crea un utente dedicato, assegna le directory di lavoro e limita i permessi al minimo. Questo riduce il danno potenziale se un’immagine o un progetto fa cose che non dovrebbe fare.

Esempio tipico:

sudo adduser --system --group --home /var/lib/gns3 gns3
sudo mkdir -p /var/lib/gns3 /var/log/gns3
sudo chown -R gns3:gns3 /var/lib/gns3 /var/log/gns3

Se i tuoi progetti stanno su un filesystem separato, monta lì le immagini e i file di lavoro. Il vantaggio non è solo organizzativo: quando il disco di sistema si riempie, hai più controllo su crescita e manutenzione.

Controlla anche la presenza delle porte che vuoi usare. GNS3 Server di solito ascolta su una porta TCP dedicata, e il client si connette lì. Verifica con:

ss -ltnp | grep -E '3080|gns3'

Se la porta è diversa per la tua installazione, annotala subito e usala sempre nello stesso modo nel client e nei test di rete.

Configurazione del server: file, porta e bind address

La configurazione di GNS3 Server va trattata come quella di qualunque altro demone: file chiaro, valori espliciti, nessuna ambiguità su indirizzo di bind e accesso remoto. Se il server deve essere raggiungibile da altri host, non lasciarlo legato solo a localhost.

Il file di configurazione può variare in base al pacchetto e al metodo di installazione, ma il concetto resta lo stesso: definisci interfaccia, porta e directory. Un esempio di logica corretta è questo, da adattare al percorso effettivo della tua installazione:

[server]
host = 0.0.0.0
port = 3080
project_directory = /var/lib/gns3/projects
images_directory = /var/lib/gns3/images

Non copiare questo blocco alla cieca se il tuo pacchetto usa un formato diverso. Prima individua il file effettivo con:

systemctl cat gns3server
find /etc -maxdepth 3 -iname '*gns3*' -o -iname '*.conf' | grep -i gns3

Il punto non è trovare “un file”, ma trovare quello realmente usato dal servizio. Su server Linux questa distinzione evita metà degli errori di troubleshooting.

Unità systemd: avvio automatico e logging pulito

Se il pacchetto non crea già l’unità systemd, puoi costruirla in modo minimale e leggibile. L’obiettivo è avere restart automatico, log nel journal e un avvio coerente dopo reboot.

[Unit]
Description=GNS3 Server
After=network-online.target
Wants=network-online.target

[Service]
User=gns3
Group=gns3
ExecStart=/usr/bin/gns3server
Restart=on-failure
RestartSec=3
WorkingDirectory=/var/lib/gns3

[Install]
WantedBy=multi-user.target

Dopo aver creato o modificato l’unità, ricarica systemd e abilita il servizio:

sudo systemctl daemon-reload
sudo systemctl enable --now gns3server
sudo systemctl status gns3server --no-pager

Se il servizio fallisce, il journal ti dice subito se il problema è un percorso sbagliato, un permesso negato o un argomento non riconosciuto dal binario. Non andare avanti senza leggere quelle righe.

Firewall e accesso remoto senza aprire troppo

Se il server deve essere raggiunto dal client GNS3 su un’altra macchina, apri solo la porta necessaria e solo verso le reti che ti servono. Su Ubuntu 24.04, se usi UFW, la regola minima è semplice.

sudo ufw allow 3080/tcp
sudo ufw status verbose

Se hai un firewall perimetrale o una security group nel cloud, la logica è identica: consenti il traffico verso la porta del server e lascia chiuso il resto. Non esporre servizi di laboratorio su Internet senza una ragione forte e senza un controllo di accesso serio.

Per verificare la raggiungibilità da un host client:

curl -I http://IP_DEL_SERVER:3080/

Se ottieni risposta HTTP, il layer rete è corretto. Se il timeout è immediato o la connessione viene rifiutata, il problema è prima dell’applicazione: firewall, bind address o servizio non in ascolto.

Integrazione con il client GNS3

Una volta che il server è su, il passo che spesso viene fatto male è l’associazione dal client. Sul client GNS3 devi aggiungere il server remoto indicando IP o hostname, porta corretta e credenziali se previste dalla tua configurazione. Qui gli errori classici sono banali: IP sbagliato, DNS non risolto, porta diversa da quella del servizio.

Se il client non vede il server, verifica prima dal lato server che il processo sia attivo e che ascolti sulla porta giusta, poi dal lato client fai una prova di connettività con `curl` o `nc`. Questo evita di inseguire problemi del desktop quando il guasto è sul server.

Quando aggiungi il server remoto, controlla anche il percorso delle immagini. Se il server usa directory diverse da quelle del client locale, i template e le appliance potrebbero comparire ma non avviarsi. In quel caso il problema non è la connessione, ma la disponibilità dei file richiesti sul server.

Test pratici dopo l’installazione

Un’installazione valida non si misura solo con “il servizio è up”. Devi provare almeno tre cose: apertura dell’API o della porta, avvio di un progetto semplice e scrittura dei log senza errori.

Comandi utili per il primo check:

curl http://127.0.0.1:3080/
journalctl -u gns3server -n 50 --no-pager
ls -ld /var/lib/gns3 /var/log/gns3

Se il server risponde ma il client non riesce ad avviare nodi, guarda il tipo di backend coinvolto. QEMU, Docker e altri emulatori hanno prerequisiti diversi; il server può essere sano e il nodo comunque fallire per mancanza di permessi o di virtualizzazione hardware.

Per verificare che la virtualizzazione sia disponibile sul nodo Ubuntu:

egrep -c '(vmx|svm)' /proc/cpuinfo

Un risultato pari a zero non blocca sempre GNS3, ma ti dice che alcune immagini o appliance saranno limitate o più lente. Se stai usando una VM, controlla anche che nested virtualization sia abilitata lato hypervisor.

Problemi tipici e come leggerli senza perdere tempo

Il primo errore frequente è il servizio che parte e poi si ferma subito. Quasi sempre trovi un path errato, un permesso negato o una porta occupata. Il secondo è il server raggiungibile in locale ma non da remoto: lì il sospetto cade su bind address e firewall. Il terzo è il nodo che non sale: in quel caso devi scendere di livello e guardare il backend specifico, non GNS3 in astratto.

Per vedere se la porta è occupata da altro:

sudo lsof -iTCP:3080 -sTCP:LISTEN -n -P

Per controllare se il processo è stato ucciso per memoria insufficiente, cerca nel kernel log eventi OOM:

journalctl -k -b | grep -i oom

Se trovi OOM, il fix non è riavviare il servizio e sperare. Devi aumentare RAM, ridurre la topologia o introdurre swap con criterio, sapendo che la swap non sostituisce la memoria per carichi pesanti di emulazione.

Manutenzione minima dopo il go-live

Una volta operativo, il server va tenuto sotto controllo come qualsiasi altro servizio di laboratorio. Monitora spazio disco, uso RAM, stato del servizio e crescita dei log. Se hai più utenti, definisci una convenzione per i progetti e una politica di retention per i file vecchi, altrimenti il filesystem si riempie di materiale abbandonato.

Un controllo periodico essenziale può essere questo:

systemctl is-active gns3server
journalctl -u gns3server --since today --no-pager | tail -n 100
df -h /var/lib/gns3

Se usi backup, includi configurazione, unità systemd personalizzate e directory dei progetti. Non includere segreti in chiaro; se nel tempo hai aggiunto credenziali o token in file di configurazione, vanno redatti o ruotati prima di archiviarli.

Quando conviene fermarsi e cambiare approccio

Se hai bisogno di alta affidabilità, più utenti concorrenti e topologie pesanti, il nodo singolo su Ubuntu 24.04 può diventare presto un collo di bottiglia. In quel caso ha senso separare storage, pianificare backup, mettere monitoraggio serio e valutare se distribuire il carico su più server GNS3 o su host dedicati per team diversi.

La regola pratica è semplice: se il server è usato per studio o test controllati, una singola macchina ben configurata basta; se diventa piattaforma condivisa, la parte importante non è solo installarlo, ma governarlo. E lì entrano in gioco capacity planning, permessi, rete e osservabilità.

Assunzione: i comandi e i percorsi indicati vanno adattati al pacchetto GNS3 effettivamente installato e al metodo di distribuzione scelto sul tuo host Ubuntu 24.04.