Un PC appena acceso, con nessuna finestra aperta, parla già con Internet. Il sistema operativo controlla gli aggiornamenti, il client di posta interroga il server, l’app di note sincronizza, e insieme a queste connessioni legittime ne partono altre meno ovvie, tra cui telemetria, servizi di analisi integrati dentro programmi desktop e sistemi di segnalazione degli errori.
Il firewall incluso in Windows blocca soprattutto le connessioni in ingresso e, per quelle in uscita, ragiona in termini di programmi e porte: non sa dirti quale dominio stia contattando un eseguibile in questo momento. Su Linux la situazione è simile, con nftables o ufw che lavorano su indirizzi IP e non su nomi.
Portmaster parte esattamente da questo punto cieco. È un firewall applicativo gratuito e open source sviluppato da Safing, azienda austriaca che dalla fine del 2024 fa parte del gruppo IVPN, e gira su Windows e Linux. Si inserisce nello stack di rete del sistema, associa ogni connessione al processo che l’ha generata e mostra in tempo reale dominio di destinazione, indirizzo IP, paese e organizzazione proprietaria di quell’indirizzo.
Da lì puoi decidere di bloccare la singola connessione, l’intera app o una categoria di destinazioni, con regole che valgono per tutto il sistema e non solo per il browser. La versione 2.2.1, pubblicata il 16 giugno 2026, ha aggiunto lo split tunneling e vari correttivi al driver Windows. Il filtro, il DNS cifrato e il monitor di rete restano gratuiti; a pagamento ci sono cronologia, statistiche sulla banda e la rete SPN.
Come fa Portmaster a sapere quale programma sta contattando l’esterno
L’idea alla base è semplice da spiegare e complicata da realizzare, ovvero intercettare i pacchetti prima che lascino la macchina e collegarli al processo che li ha prodotti. Su Windows, Portmaster installa un driver in kernel space che si aggancia al Windows Filtering Platform, la stessa infrastruttura usata dal firewall di sistema e dagli antivirus.
Su Linux la strada passa da iptables con code nfqueue e da alcuni programmi eBPF caricati nel kernel per l’attribuzione dei processi. In entrambi i casi il servizio (PortmasterCore su Windows, l’unità portmaster.service su Linux) lavora in background anche a interfaccia grafica chiusa.
Il secondo pilastro è il resolver DNS interno. Portmaster avvia un proprio server DNS locale e vi dirotta le richieste del sistema, poi le inoltra ai server configurati usando DNS-over-TLS. Questo passaggio non serve solo a cifrare le query, ma soprattutto a sapere quale nome di dominio corrisponde all’indirizzo IP che l’applicazione sta per contattare. Senza quella corrispondenza, la lista delle connessioni sarebbe un elenco di numeri privo di significato pratico.
Vale la pena sapere che il modulo DNS non si può disattivare, proprio perché è la fonte principale di informazioni del filtro. Se preferisci non usare i resolver preimpostati puoi svuotare l’elenco: le richieste continueranno a passare da Portmaster ma finiranno ai server DNS già configurati nel sistema o forniti dal router.
C’è poi un dettaglio che spiega perché il programma “vede” cose che altri strumenti si perdono. Portmaster lavora al livello 3 del modello di rete, quindi gestisce IPv4 e IPv6 con TCP, UDP e ICMP, e attribuisce al processo tutto ciò che è attribuibile. Alcune connessioni vengono sempre lasciate passare per non rompere il funzionamento della rete, tra cui DHCP, i messaggi di errore ICMP e le connessioni interne di Portmaster stesso. Nell’interfaccia semplificata queste voci non compaiono, mentre nella modalità avanzata sì.
Portmaster: installazione su Windows e su Linux
Su Windows il percorso è quello classico, cioè si scarica l’installer offline dal sito e si esegue. Il supporto è limitato all’architettura x86-64, quindi i portatili con processore ARM per ora restano fuori. I binari finiscono in C:\Program Files\Portmaster, i dati in C:\ProgramData\Portmaster, e viene registrato il servizio di sistema PortmasterCore con avvio automatico al boot.
# Download dell'installer 2.2.1 (PowerShell)
Invoke-WebRequest -Uri "https://updates.safing.io/latest/windows_amd64/packages/Portmaster_2.2.1_x64-setup.exe" `
-OutFile "$env:USERPROFILE\Downloads\Portmaster_2.2.1_x64-setup.exe"
# Verifica che il servizio sia attivo dopo l'installazione
Get-Service PortmasterCore
Attenzione: al termine dell’installazione Portmaster non si avvia da solo. Serve un riavvio, oppure l’avvio manuale del servizio. Da quel momento in poi si aggiorna per conto suo.
Su Linux servono kernel 5.7 o superiore e i pacchetti sono disponibili in tre formati. Debian, Ubuntu e derivate usano il .deb, Fedora e RHEL il .rpm, mentre su Arch Linux e derivate c’è il pacchetto portmaster-bin nell’AUR.
# Debian / Ubuntu
wget https://updates.safing.io/latest/linux_amd64/packages/Portmaster_2.2.1_amd64.deb
sudo apt install ./Portmaster_2.2.1_amd64.deb
# Fedora
sudo dnf install https://updates.safing.io/latest/linux_amd64/packages/Portmaster-2.2.1-1.x86_64.rpm
# Arch Linux (via AUR helper)
paru -S portmaster-bin
# Avvio del servizio e abilitazione al boot
sudo systemctl enable --now portmaster
systemctl status portmaster
L’interfaccia grafica ha due dipendenze che su installazioni minimali possono mancare, ovvero WebKitGTK 4.1 per il rendering della finestra e libayatana-appindicator per l’icona nell’area di notifica. Se la finestra non parte, il modo più rapido per capire il motivo è lanciarla da terminale con /usr/lib/portmaster/portmaster e leggere l’errore.
# Debian / Ubuntu / openSUSE
sudo apt install libayatana-appindicator3-1 libwebkit2gtk-4.1-0
# Fedora / RHEL
sudo dnf install libayatana-appindicator-gtk3 webkit2gtk4.1
Chi usa una distribuzione immutabile o vuole capire cosa viene toccato può seguire lo script di installazione manuale pubblicato nel wiki, che scarica i binari con l’utility updatemgr, li piazza in /usr/lib/portmaster, mette i dati in /var/lib/portmaster e registra l’unità systemd. È anche il modo migliore per vedere quali capability vengono richieste al servizio, da cap_net_admin a cap_bpf.
I primi dieci minuti, tra interfaccia avanzata, DNS e liste di blocco
Appena installato, il programma è volutamente prudente, perché blocca le connessioni in ingresso, applica alcune liste di filtri contro tracker e domini malevoli e instrada le query DNS su TLS. La prima cosa da fare è passare all’interfaccia avanzata dal selettore in alto a destra, dato che in modalità semplice metà delle impostazioni interessanti resta nascosta.
Il resolver preimpostato è Cloudflare nella variante con protezione malware (1.1.1.2). Se preferisci un fornitore diverso, l’impostazione DNS Servers accetta un elenco di URL con una sintassi propria, dove il primo server della lista è quello effettivamente usato e gli altri intervengono solo in caso di errore.
Il parametro verify indica il nome da controllare nel certificato TLS, mentre blockedif dice a Portmaster come riconoscere una risposta di blocco, dato che ogni provider la formula a modo suo.
# Quad9, gestito da una fondazione non profit, con filtro anti-malware
dot://9.9.9.9:853?verify=dns.quad9.net&name=Quad9&blockedif=empty
# dns0.eu, resolver europeo
dot://193.110.81.0:853?verify=dns0.eu&name=dns0&blockedif=empty
# Mullvad, senza registrazione né profilazione
dot://194.242.2.2:853?verify=dns.mullvad.net&name=Mullvad&blockedif=empty
In fondo all’elenco c’è sempre, invisibile, il server DNS del sistema o della rete locale. È il comportamento giusto in ufficio o in una rete domestica con nomi interni da risolvere, ma se vuoi che tutte le query passino solo dai server che hai scelto devi attivare Ignore System/Network Servers. Considera che così i nomi delle stampanti, del NAS o dei dispositivi smart della tua rete potrebbero smettere di risolversi.
Due impostazioni meritano attenzione più di altre.
- Block Secure DNS Bypassing. Impedisce ai programmi di aggirare il resolver interno, comunicando a Firefox di non usare il proprio DNS-over-HTTPS e bloccando l’accesso diretto ai resolver pubblici noti.
- Block Domain Aliases. Blocca un dominio se il CNAME a cui punta è già in una lista, ed è la misura contro i tracker “di prima parte” che si nascondono dietro un sottodominio del sito che stai visitando.
Chi vuole spingersi oltre può cambiare l’azione di rete predefinita da Allow a Prompt, ottenendo il comportamento in stile Little Snitch, con una richiesta di conferma a ogni connessione non coperta da una regola. È istruttivo e per qualche giorno anche divertente, ma il consiglio pratico è di attivarlo su una sola applicazione alla volta invece che globalmente, altrimenti la prima ora di utilizzo diventa una raffica ininterrotta di notifiche.
Portmaster: le regole per singola app
La parte più utile di Portmaster è il set di regole per applicazione. Ogni app ha un suo profilo con interruttori rapidi per bloccare Internet, la rete locale, le connessioni in ingresso e il traffico peer-to-peer, più due elenchi di regole testuali, uno per il traffico in uscita e uno per quello in entrata. Le regole vengono valutate dall’alto verso il basso e la prima che corrisponde vince, quindi l’ordine conta quanto il contenuto.
Ogni riga inizia con + per consentire o - per bloccare, seguita da un criterio. Puoi indicare un indirizzo, una rete in notazione CIDR, un ambito (Localhost, LAN, Internet), un dominio esatto o con sottodomini, un codice paese di due lettere, un numero di sistema autonomo o l’identificatore di una lista di filtri. Facoltativo si aggiungono protocollo e porta.
| Regola | Effetto |
|---|---|
- .doubleclick.net | blocca il dominio e tutti i suoi sottodomini |
+ .github.com */HTTPS | consente GitHub e sottodomini, solo su HTTPS |
- CN | blocca le destinazioni con IP assegnati alla Cina |
+ LAN UDP/50000-55000 | consente un intervallo di porte UDP verso la rete locale |
- AS15169 | blocca l’intero sistema autonomo di Google |
- L:MAL | blocca quanto elencato nella lista malware |
- * | blocca tutto il resto |
Facciamo un esempio: un editor di testo o un lettore multimediale che deve solo scaricare aggiornamenti si configura con tre righe, cioè consenti il dominio degli aggiornamenti su HTTPS, consenti la rete locale se serve, blocca tutto il resto. Il risultato è un’applicazione che continua a funzionare ma non può più contattare piattaforme di analisi o servizi di terze parti.
+ .updates.esempio.com */HTTPS # server degli aggiornamenti
+ LAN # accesso a NAS e stampanti
- * # tutto il resto è chiuso
Accanto alle regole c’è la lista di filtri personalizzata, un semplice file .txt che Portmaster ricontrolla ogni pochi minuti e ricarica quando cambia. Ogni riga può contenere un dominio, un indirizzo IP, un codice paese o un numero di AS, con # per i commenti.
È il posto giusto dove raccogliere i domini che ti sei annotato guardando il monitor di rete, senza dover ricompilare nulla e senza toccare le liste ufficiali. Attenzione però alla dimensione, dato che il file viene caricato interamente in memoria e importare una blocklist da centinaia di migliaia di righe si paga in RAM.
Split tunneling e controllo da riga di comando
La novità della 2.2.1 è lo split tunneling. Serve a mandare il traffico di una singola applicazione su un’interfaccia di rete diversa da quella predefinita del sistema. Il caso tipico è la VPN, quindi tunnel attivo per tutto ma client di streaming che esce dalla connessione di casa, perché il servizio blocca gli indirizzi stranieri. Lo stesso meccanismo funziona anche senza VPN, per esempio per mandare i backup su una seconda scheda di rete e lasciare libera la principale.
La configurazione minima richiede tre passaggi, ovvero attivare il modulo nelle impostazioni globali, aprire il profilo dell’app e accendere Use Split Tunnel, lasciando vuoto il campo dell’interfaccia in modo che Portmaster individui da solo quella fisica. Per fare tutto questo la connessione viene passata a un proxy interno che la ristabilisce usando l’interfaccia scelta, e l’applicazione non si accorge di nulla.
Funzionano solo TCP e UDP, il traffico in ingresso non viene toccato, le query DNS restano fuori dal meccanismo e continuano a passare dal resolver interno.
Soprattutto, se l’interfaccia configurata sparisce, per esempio perché la Wi-Fi cade o la VPN si disconnette, le nuove connessioni vengono fatte fallire invece di tornare silenziosamente sul percorso predefinito. È una scelta di progetto fastidiosa ma sensata, perché il ripiego automatico rischierebbe di far uscire dalla VPN traffico che ti aspettavi protetto.
Un aspetto poco conosciuto è che Portmaster espone un’API HTTP locale su 127.0.0.1:817, la stessa che usa l’interfaccia grafica. Alcuni endpoint sono liberi, altri richiedono una chiave da creare nell’impostazione API Keys con il formato <chiave>?read=user&write=user, da passare poi come header di autorizzazione.
# Genera una chiave da incollare nelle impostazioni (Linux)
echo "$(tr -dc A-Za-z0-9 </dev/urandom | head -c 50)?read=user&write=user"
# Il servizio risponde?
curl http://127.0.0.1:817/api/v1/ping
# Stato dei resolver DNS configurati
curl -H "Authorization: Bearer LA_TUA_CHIAVE" \
http://127.0.0.1:817/api/v1/dns/resolvers
# Report leggibile delle connessioni in corso
curl -H "Authorization: Bearer LA_TUA_CHIAVE" \
"http://127.0.0.1:817/api/v1/debug/network?style=github" > connessioni.md
# Esporta tutte le impostazioni in un formato riutilizzabile
curl -H "Authorization: Bearer LA_TUA_CHIAVE" \
http://127.0.0.1:817/api/v1/sync/settings/export > portmaster-settings.json
Quest’ultimo comando risolve un problema pratico, cioè replicare la stessa configurazione su più macchine. Esistono endpoint gemelli per esportare e importare i singoli profili delle applicazioni, così le regole che hai messo a punto con pazienza su un PC non vanno riscritte a mano sull’altro.
Conflitti con le VPN, limiti di piattaforma e prezzo
Il problema più frequente riguarda proprio le VPN. Portmaster si integra nello stack di rete in modo profondo e, su Linux, usa i marcatori di pacchetto e connessione per ricordare le decisioni prese: se un altro software fa la stessa cosa, uno dei due smette di funzionare.
Su Windows il punto di attrito è invece il driver agganciato al Windows Filtering Platform, dove alcune combinazioni con antivirus o client VPN generano collisioni difficili da aggirare. Il wiki mantiene un elenco di software compatibili e, dove serve, la procedura per disattivare l’integrazione DNS automatica e puntare manualmente il sistema al resolver interno (127.0.0.1 su Windows, 127.0.0.17 su Linux).
Sul fronte piattaforme sono supportati solo Windows e Linux, e solo x86-64. macOS, Android e le architetture ARM compaiono nella roadmap ma non hanno una data. Chi lavora su un Mac o su un mini PC ARM dovrà aspettare fiducioso.
Chi cerca alternative a Portmaster ne ha poche e tutte parziali. Su Linux OpenSnitch propone lo stesso approccio interattivo ed è arrivato alla versione 1.8, ma non ha il DNS cifrato integrato né le liste di filtri gestite. Su Windows simplewall è leggerissimo e affidabile, però ragiona per programmi e non mostra i domini. Pi-hole blocca a livello di rete per tutti i dispositivi ed è complementare più che concorrente, dato che non sa quale processo sul tuo PC abbia generato la richiesta.
Un discorso a parte merita Sniffnet, di cui abbiamo parlato in un articolo dedicato, che dalla versione 1.5 associa anch’esso ogni connessione all’applicazione responsabile e accetta blacklist di indirizzi IP personalizzate. C’è una differenza però: Sniffnet osserva e avvisa, Portmaster osserva, opzionalmente avvisa e nega.
Se ti serve solo capire cosa passa in rete senza intervenire, il monitor puro resta più leggero, non tocca lo stack di rete del sistema e gira anche su macOS, dove Portmaster non arriva. Se invece vuoi che una certa connessione smetta proprio di partire, serve qualcosa che si metta in mezzo al traffico, e a quel punto il driver in kernel space di Portmaster diventa il prezzo da pagare.
Portmaster è per chi vuole capire il proprio PC
Portmaster ti mostra che l’app di fotoritocco parla con quattro domini estranei al fotoritocco, che l’utility del produttore del portatile chiama casa ogni cinque minuti e che programmi installati anni fa contattano server di cui non ricordavi l’esistenza. Da lì in poi, decidere cosa bloccare diventa un fatto tuo.
Installalo, lascialo in sola osservazione per qualche giorno con l’azione predefinita su Allow e limitati a guardare. Poi scegli due o tre applicazioni che sai di non voler far uscire su Internet e chiudile con una regola secca.
I difetti non sono trascurabili, tra cui la difficile convivenza con alcune VPN, il supporto fermo a due sistemi operativi su tre e la funzione per l’analisi a posteriori riservata ai piani a pagamento. Ma è software libero, con codice pubblico e una direzione di sviluppo dichiarata, che fa una cosa che nessun altro strumento gratuito fa altrettanto bene su Windows: dare un nome, un volto e un paese a ogni connessione che esce dalla tua macchina.












