1 03/05/2026 8 min

Su Amazon Linux 2023 la prima cosa da chiarire non è “come installo Netcat”, ma quale implementazione ti serve davvero. In pratica, nel mondo Linux trovi due famiglie d’uso: il classico netcat invocato come nc e la variante ncat che arriva spesso con Nmap. Su AL2023 il nome del pacchetto disponibile può cambiare rispetto alle guide vecchie, quindi partire a colpi di yum install netcat è il modo più rapido per perdere tempo.

La strada corretta è: aggiornare l’indice dei pacchetti, cercare cosa offre davvero il repository, installare il pacchetto disponibile e poi verificare il binario. Se ti serve solo testare porte, fare banner grabbing, aprire una listener o verificare connettività TCP/UDP, ncat è spesso sufficiente. Se invece hai script già scritti per nc, va controllato se il pacchetto installato fornisce anche quel comando oppure se serve un alias o un adattamento del comando.

Verifica iniziale: capire cosa offre Amazon Linux 2023

Prima di installare, controlla i repository abilitati e cerca i pacchetti con un nome plausibile. Su AL2023 il gestore è dnf, quindi i vecchi esempi con yum funzionano spesso come compatibilità, ma è meglio usare il tool nativo.

Esegui questi controlli di base:

sudo dnf clean all
sudo dnf makecache
sudo dnf search netcat
sudo dnf search nmap
sudo dnf list available '*nc*'
sudo dnf list available '*ncat*'

Se il repository è sano, dnf search ti restituisce almeno un pacchetto correlato a ncat o a strumenti di rete. Se non vedi nulla, il problema non è Netcat: è il set di repository, la connettività verso i mirror o la configurazione del sistema. In quel caso verifica prima /etc/dnf/dnf.conf, i file in /etc/yum.repos.d/ e la reachability verso il mirror AWS.

Installazione consigliata: usare il pacchetto disponibile nei repository

Su una installazione standard di Amazon Linux 2023 la soluzione più pulita è installare il pacchetto che fornisce ncat. Il nome esatto può variare in base ai repository abilitati, ma nella pratica il flusso resta questo: ricerca, installazione, verifica del binario.

sudo dnf install -y nmap-ncat

Se il pacchetto non esiste con quel nome nel tuo ambiente, non forzare a tentativi ciechi. Fai prima una ricerca più ampia:

sudo dnf provides '*/ncat'
sudo dnf provides '*/nc'
sudo dnf search 'ncat'

Il risultato atteso è che dnf ti indichi il pacchetto corretto da installare. Una volta installato, verifica subito i binari disponibili:

command -v ncat
command -v nc
rpm -qf "$(command -v ncat)"

Se ncat esiste ma nc no, non è un errore: significa solo che il sistema ha installato la variante con quel nome. In questo caso conviene adattare gli script oppure creare un wrapper locale solo se hai un motivo preciso e controllato.

Quando serve proprio il comando nc

Molte guide e molti script legacy chiamano il programma nc. Se il tuo ambiente installa solo ncat, hai tre opzioni sensate: aggiornare gli script, creare un alias temporaneo per l’utente corrente, oppure installare un pacchetto alternativo che fornisca il nome nc se disponibile nei repository.

La scelta migliore è quasi sempre la prima: modificare gli script per usare esplicitamente ncat o verificare con un controllo di compatibilità all’avvio. Un alias in shell è fragile, perché non vale nei job non interattivi, nei servizi systemd o nei cron.

if command -v ncat >/dev/null 2>&1; then
  NC_BIN=ncat
elif command -v nc >/dev/null 2>&1; then
  NC_BIN=nc
else
  echo "Netcat non installato" >&2
  exit 1
fi

Questo approccio è più robusto di un alias perché funziona anche in automazione. Se invece devi gestire manualmente un comando rapido da shell, puoi creare un alias per la sessione corrente:

alias nc='ncat'

Ricorda però che questo non è un fix strutturale: chiude il problema solo nella shell interattiva.

Uso pratico dopo l’installazione

Una volta installato Netcat, la verifica non deve fermarsi al fatto che il pacchetto sia presente. Il punto è controllare che il binario faccia davvero ciò che ti serve. Le prove minime sono tre: connessione TCP, listener locale e, se serve, UDP.

Test TCP verso una porta aperta:

ncat -vz example.com 443

Atteso: connessione riuscita o almeno tentativo con risposta chiara sullo stato della porta. Se ricevi Connection refused, il binario funziona ma il servizio remoto non ascolta su quella porta. Se ricevi timeout, il problema può essere rete, firewall, security group o routing.

Listener locale per un test rapido:

ncat -l 8080

Da un altro terminale sulla stessa macchina o da un host autorizzato:

printf 'hello\n' | ncat 127.0.0.1 8080

Se il listener riceve il testo, la catena locale è corretta. Questo è utile per capire se hai un problema di firewall o di routing esterno, non di installazione.

Test UDP, solo se davvero ti serve:

ncat -u -vz 127.0.0.1 53

Con UDP l’interpretazione è meno lineare rispetto a TCP: un esito “silenzioso” non significa automaticamente successo o fallimento assoluto. Va letto nel contesto del servizio in ascolto.

Se l’installazione fallisce: casi tipici su AL2023

Quando dnf install non va a buon fine, gli errori più comuni sono pochi e abbastanza leggibili. Il primo è repository non raggiungibile. Il secondo è nome pacchetto errato. Il terzo è un problema di DNS, proxy o certificati del sistema. Prima di cambiare configurazioni, conviene raccogliere un’evidenza minima.

Controlli rapidi:

sudo dnf repolist
sudo dnf info nmap-ncat
sudo dnf install -y nmap-ncat -v

Se repolist mostra repository disabilitati o vuoti, il problema è a monte. Se dnf info non trova il pacchetto, il nome è sbagliato oppure il repository non lo contiene. Se il comando va in timeout o fallisce su TLS, verifica ora e data del sistema, trust store e connettività verso internet o verso il mirror aziendale.

Per isolare un problema di rete, prova un accesso HTTP/HTTPS generico verso un endpoint affidabile, sempre nel perimetro consentito dal tuo ambiente:

curl -I https://amazonlinux-2023-repos-us-east-1.amazonaws.com/

Se il curl fallisce ma il DNS risolve, il problema è oltre la risoluzione nomi: routing, proxy, firewall o ispezione TLS. Se invece fallisce la risoluzione, vai su /etc/resolv.conf o sulla configurazione del resolver di sistema.

Installazione in ambienti minimi o container

In immagini minimal o container basati su Amazon Linux 2023 il pacchetto può non essere presente finché non abiliti i repository corretti o non aggiorni la cache. Qui la trappola classica è confondere il problema del container con quello del sistema host. Se il container parte con una base estremamente ridotta, i tool di rete potrebbero non esserci per design.

In quel caso il flusso è:

  • verifica che il container abbia rete e DNS funzionanti con un test minimo;
  • controlla che i repository siano disponibili nel layer dell’immagine;
  • installa il pacchetto richiesto durante il build o all’avvio, a seconda del tuo modello operativo.
  • Se stai costruendo una immagine per troubleshooting, è più pulito includere il pacchetto nel Dockerfile o nel processo di provisioning piuttosto che installarlo manualmente ogni volta. Un esempio minimale:

    FROM public.ecr.aws/amazonlinux/amazonlinux:2023
    RUN dnf -y update && dnf -y install nmap-ncat && dnf clean all

    Questo riduce la deriva tra ambienti e ti evita di ritrovarti in un container “di emergenza” senza gli strumenti che ti servono per diagnosticare.

    Permessi, sicurezza e uso responsabile

    Netcat è utile proprio perché è semplice, ma la semplicità non va confusa con innocuità. Aprire listener, inoltrare traffico o tenere porte in ascolto cambia la superficie esposta del sistema. Su una macchina di produzione, ogni porta aperta va trattata come un servizio vero, con controllo di accesso, firewall e logging minimi.

    Se usi ncat -l per un test, limita l’ascolto a 127.0.0.1 quando possibile oppure chiudi subito il listener dopo la verifica. Evita di lasciare processi di test in ascolto su interfacce pubbliche. Se il sistema usa firewalld o security group cloud, verifica che la porta di test non resti esposta oltre il necessario.

    Per una verifica rapida della porta in ascolto sul sistema locale:

    ss -ltnp | grep 8080

    Il risultato atteso è che il processo di test compaia solo mentre ti serve davvero. Appena finita la prova, termina il listener con Ctrl+C o chiudi il processo in modo esplicito.

    Versione installata e tracciabilità

    In ambienti amministrati conviene sapere esattamente cosa hai installato, non solo “che funziona”. Questo è utile per audit, ticket e troubleshooting successivo. Conserva il nome del pacchetto, la versione e il motivo dell’installazione.

    rpm -qa | grep -Ei 'ncat|nmap'
    rpm -qi nmap-ncat

    Se il pacchetto non si chiama esattamente nmap-ncat nel tuo repository, sostituisci il nome con quello effettivo restituito da dnf. Il punto non è memorizzare il nome “giusto” a priori, ma registrare quello realmente installato nel tuo ambiente.

    Per chi gestisce più host, ha senso standardizzare la procedura in un playbook o in uno script di bootstrap. In questo modo eviti differenze tra server, VM e container, e soprattutto non dipendi dalla memoria dell’operatore al momento del bisogno.

    Procedura sintetica consigliata

    Se vuoi una sequenza corta e operativa, questa è quella che userei io su un host AL2023 pulito:

  • aggiorna la cache di dnf;
  • cerca il pacchetto che fornisce ncat;
  • installa il pacchetto disponibile;
  • verifica command -v ncat e, se serve, command -v nc;
  • esegui un test TCP locale o verso un host noto;
  • documenta il nome del pacchetto installato e la versione.
  • sudo dnf makecache
    sudo dnf search ncat
    sudo dnf install -y nmap-ncat
    command -v ncat
    ncat -vz 127.0.0.1 22

    Se il sistema risponde come previsto, hai chiuso il cerchio: pacchetto presente, binario disponibile, test funzionale superato.

    Comando finale da ricordare

    Se ti serve la risposta più breve possibile, su Amazon Linux 2023 parti da qui:

    sudo dnf install -y nmap-ncat

    Poi verifica con command -v ncat. Se il tuo script pretende nc, non dare per scontato che il nome sia disponibile: controllalo e adatta il codice se necessario.