127.0.0.1:49342: Guida all`indirizzo IP, alla porta e al debug di Localhost
Forse hai cliccato su qualcosa. Forse una finestra del terminale è passata scorrendo. Forse un file di log ha attirato la tua attenzione. Qualunque cosa sia successa, è apparsa questa stringa: `127.0.0.1:49342`. Il tuo browser è saltato a una pagina che non esiste da nessuna parte su Internet. Gli strumenti per sviluppatori l'hanno segnalata. Una finestra di accesso è apparsa e poi è scomparsa. Nulla si è rotto visibilmente. Eppure, qualcosa non quadrava.
Tranquillo, non si è rotto niente. Quella piccola stringa è in realtà una delle cose più comuni che vedrai mai mentre usi un computer, e nel momento in cui ne comprenderai le due parti, ogni futuro `127.0.0.1:` ti sembrerà una frase normale. L'indirizzo IP a sinistra è l'indirizzo di loopback universale, lo stesso su ogni macchina che utilizzi. La porta a destra è semplicemente una porta specifica che il sistema operativo ha assegnato a un servizio locale, un'applicazione web o un servizio di rete per una breve comunicazione tra programmi in esecuzione sul tuo hardware. Nessuna di queste informazioni entra in contatto con la rete esterna. Tutto rimane all'interno del computer che hai di fronte.
Ecco il piano. Una spiegazione e una guida alla risoluzione dei problemi, unite insieme. Da dove proviene storicamente l'indirizzo. Cosa rappresenta effettivamente un numero di porta. Perché la porta 49342, nello specifico, non ha nulla di speciale. Quando un utente Windows la vede rispetto a un utente Linux o macOS. Qual è il quadro della sicurezza nello specifico nel 2026. Come gli sviluppatori di criptovalute utilizzano lo stesso schema in un ambiente di sviluppo Web3 con Hardhat, Anvil, Ganache e Bitcoin Core. Leggilo dall'inizio alla fine, oppure passa direttamente alla sezione che corrisponde a ciò che hai cercato.
Cos'è 127.0.0.1: la spiegazione dell'indirizzo di loopback.
Consideriamo prima la parte relativa all'indirizzo IP. 127.0.0.1 è più vecchio della maggior parte degli indirizzi che utilizzi online oggigiorno. Nell'ottobre del 1989, ben prima che esistesse un web commerciale, l'IETF pubblicò la RFC 1122. All'interno della Sezione 3.2.1.3 si trovava una delle regole più esplicite mai messe per iscritto in ambito di reti: "Gli indirizzi di questo tipo NON DEVONO apparire al di fuori di un host". Il sistema operativo del tuo telefono la applica ancora oggi. Anche il tuo router di casa. Ogni sistema operativo rilasciato da allora ha continuato silenziosamente a rispettarla.
La scala crea problemi. Questa regola si applica a 16.777.216 indirizzi. Tutti quanti. Sedici milioni di indirizzi tenuti in riserva affinché uno di essi, 127.0.0.1, possa significare in modo affidabile "questa macchina, proprio qui" ovunque sulla Terra. Un po' uno spreco? Sì, le lamentele si susseguono da decenni. Il pool globale di IPv4 dell'IANA è arrivato a zero il 3 febbraio 2011. ARIN ha raggiunto lo zero il 24 settembre 2015. RIPE NCC ha distribuito il suo ultimo blocco /22 il 25 novembre 2019. Una bozza dell'IETF chiamata `draft-schoen-intarea-unicast-127` circola da tempo, suggerendo che la maggior parte dello spazio 127 potrebbe effettivamente tornare all'uso unicast. Nessuno vuole toccarlo. Troppi software esistenti presuppongono che 127 non cambierà mai.
Un aspetto che sorprende sempre i neofiti è che il pacchetto non raggiunge mai fisicamente la scheda di rete. Neanche lontanamente. Un pacchetto destinato a una qualsiasi destinazione 127.xxx viene intercettato dallo stack TCP/IP del sistema operativo al livello 3 e instradato attraverso un'interfaccia virtuale (Linux e macOS la chiamano `lo`). Il kernel continua a svolgere un lavoro effettivo: costruisce il segmento TCP, calcola il checksum e percorre il percorso di ricezione. Un overhead reale, non nullo. Ma nessuno switch della rete locale (LAN) vede mai quel traffico. Nessun router lo vede. Nessuna dorsale di Internet lo vede.
La parola "localhost" è semplicemente un alias di facile utilizzo mappato in un file di testo semplice che puoi aprire subito. Su Linux e macOS: `/etc/hosts`. Su Windows: `C:\Windows\System32\drivers\etc\hosts`. Il resolver accede a questo file prima di interrogare qualsiasi server DNS, motivo per cui `localhost` funziona correttamente anche in aereo con il Wi-Fi disattivato. IPv6 introduce la sua versione, `::1/128`, definita dalla RFC 4291 nel febbraio 2006. Un classico grattacapo del venerdì: un browser moderno risolve `localhost` prima come `::1`, ma l'applicazione Python è associata solo a 127.0.0.1. Socket diversi, nessuna intersezione, errore silenzioso. Interrompe il flusso di lavoro di qualcuno ogni singola settimana da qualche parte.

Perché vedi il porto 49342: porti effimeri e le gamme di misurazione IANA
Ora passiamo alla seconda parte. I numeri di porta confondono le persone più degli indirizzi IP, e a ragione. Il registro IANA dei nomi di servizio e dei protocolli di trasporto suddivide l'intero spazio a 16 bit (da 0 a 65535) in tre categorie, e la categoria in cui finisce l'indirizzo 49342 è fondamentale.
| Allineare | Numeri | Scopo |
|---|---|---|
| Sistema (ben noto) | 0–1023 | Servizi standard (HTTP 80, HTTPS 443, SSH 22, SMTP 25). Diritti di amministratore necessari per il collegamento. |
| Utente (registrato) | 1024–49151 | Servizi assegnati ai fornitori (PostgreSQL 5432, MySQL 3306, RDP 3389) |
| Dinamico / Privato / Effimero | 49152–65535 | Assegnazioni di breve durata; non sono consentite prenotazioni di servizio. |
La porta 49342 si trova all'interno dell'intervallo dinamico. Nulla è "registrato" su di essa, e nulla lo sarà mai, perché l'IANA si rifiuta di assegnare servizi in questo intervallo proprio per consentire ai sistemi operativi di distribuire liberamente numeri di porta per usi temporanei. Una porta effimera è una porta assegnata dinamicamente che un'applicazione non ha richiesto tramite un numero di porta specifico. L'applicazione ha comunicato al sistema operativo: "Dammi una porta libera qualsiasi, mi serve solo per questa sessione". Il sistema operativo ha restituito la 49342, l'applicazione ha associato un socket di ascolto e qualsiasi flusso che necessitasse di una combinazione di indirizzo e porta di breve durata l'ha ottenuta. La porta 49342 viene spesso utilizzata per server locali temporanei tramite questo tipo di binding ad hoc.
L'intervallo di memoria effimera predefinito varia a seconda del sistema operativo.
| Sistema operativo | Intervallo effimero predefinito | Fonte |
|---|---|---|
| Linux | 32768–60999 | `/proc/sys/net/ipv4/ip_local_port_range`, documentazione del kernel |
| Windows (Vista / Server 2008+) | 49152–65535 | Microsoft Learn |
| macOS (Darwin / BSD) | 49152–65535 | `sysctl net.inet.ip.portrange.first/hifirst` |
| FreeBSD | 49152–65535 | impostazioni predefinite di sysctl |
Su Windows o macOS, la porta 49342 rientra perfettamente nell'intervallo predefinito. È quasi certo che sia stata assegnata da un allocatore di sistema. Su Linux la situazione è diversa: la 49342 si trova al di sopra dell'intervallo predefinito da 32768 a 60999, quindi è stata scelta da un'applicazione che ha richiesto al kernel di eseguire `bind(('127.0.0.1', 0))` e ha ottenuto la porta libera disponibile. La RFC 6056, pubblicata dall'IETF nel gennaio 2011, impone agli stack di randomizzare la selezione delle porte effimere nell'intero intervallo da 1024 a 65535 per motivi di sicurezza. Le porte prevedibili rendono più facile intercettare i flussi di dati. Ecco perché lo stesso server di sviluppo potrebbe utilizzare la porta 49342 oggi, la 54871 domani e la 33200 dopodomani.
Dove appare 127.0.0.1:49342 sul tuo computer
Quindi, quando si presenta effettivamente questa situazione in una giornata normale? Un server locale in esecuzione sulla porta 49342 potrebbe essere praticamente qualsiasi cosa, appartenente a una lunga lista di strumenti per sviluppatori che testano le applicazioni tramite un socket di loopback locale. La tabella seguente illustra i casi più comuni in cui porte come la 49342 si presentano, con servizi in esecuzione che accettano connessioni sulla porta specificata.
| Software | Porta tipica | Ciò che vedi |
|---|---|---|
| Accesso tramite CLI OAuth (gh, aws, gcloud) | Effimero casuale | Il browser apre 127.0.0.1:, conferma, chiude |
| Jupyter Notebook | 8888, poi effimero | I socket del kernel utilizzano porte casuali nell'intervallo 49152 |
| Vite dev server | 5173 | ricaricamento a caldo del frontend |
| React / webpack-dev-server | 3000 | Stessa famiglia |
| Debug di VS Code / JetBrains | Effimero casuale | L'adattatore di debug si collega a un server locale |
| Applicazioni Electron (Slack, Discord, Spotify) | Effimero casuale | Bridge IPC interno |
| nodo del casco | 8545 | Ethereum JSON-RPC |
| Incudine (Fonderia) | 8545 | Ethereum JSON-RPC |
| GUI Ganache | 7545 | Catena di test di Ethereum |
| Test di registrazione di Bitcoin Core | 18443 | RPC dalla versione 0.16 |
L'unico caso in cui `127.0.0.1:49342` viene letteralmente inserito nella barra degli indirizzi del browser? Quasi sempre si tratta di OAuth. La RFC 8252 dell'IETF, intitolata "OAuth 2.0 for Native Apps", è stata pubblicata nell'ottobre del 2017 e impone alle app native di utilizzare il flusso di reindirizzamento loopback, con una regola ferrea: il server di autorizzazione "DEVE consentire qualsiasi numero di porta". Eseguite `gh auth login` o `gcloud auth login`. La CLI avvia un piccolo server HTTP su una porta effimera casuale, apre un browser presso il provider di identità, intercetta la callback su quell'indirizzo loopback e si arresta. Vedrete uno degli indirizzi localhost, come 127.0.0.1:49342, lampeggiare per un paio di secondi prima di scomparire. Non è un bug. Non è un tracker. Non è una truffa. Solo un brevissimo handshake, interamente locale, che non raggiunge mai la rete esterna.
Risoluzione dei problemi relativi agli errori e ai conflitti di porta dell'indirizzo 127.0.0.1:49342
Nella mia esperienza, i problemi con localhost si presentano in cinque forme. Praticamente qualsiasi cosa ti costringa a cercare qualcosa alle 23:00 rientra in qualche modo in una di queste categorie.
Porta già in uso. Node urla `EADDRINUSE`. Python ti restituisce `OSError: [Errno 98] Indirizzo già in uso`, bello e brutto. Windows lampeggia con `WinSock 10048` e se ne va. La realtà di fondo è sempre la stessa: un altro processo sulla tua macchina ha occupato prima la porta 49342. Il tuo compito è trovarlo, terminarlo e riappropriartene.
- Su Linux: `ss -tulpn | grep :49342`, oppure rispolvera il vecchio metodo `sudo lsof -i :49342`
- Su Mac: `lsof -nP -iTCP:49342 -sTCP:LISTEN`
- Su Windows in PowerShell: `netstat -ano | findstr :49342`, quindi `tasklist /fi "PID eq "` per convertire quel PID in un nome di programma
Server in esecuzione, nessuna connessione possibile. Ti è capitato più spesso di quanto immagini. IPv4 e IPv6 si sono incrociati silenziosamente. Il tuo server si è associato a 127.0.0.1. Il tuo browser ha risolto `localhost` come `::1` senza alcun motivo. Si tratta di due socket diversi, quindi ovviamente non si connette nulla. Risolvi il problema associando entrambe le famiglie contemporaneamente (l'ascolto su `::` tende a intercettare anche gli indirizzi mappati IPv4 sulla maggior parte degli stack) oppure scrivi direttamente 127.0.0.1 nell'URL.
Le VPN stanno consumando la banda di loopback. Cloudflare WARP è di gran lunga la principale responsabile. Cloudflare stessa lo ammette nella pagina di documentazione relativa alle limitazioni note: su macOS in particolare, la disconnessione di WARP può eliminare direttamente la rotta 127.0.0.1. Se il tuo localhost è diventato inaccessibile subito dopo aver attivato e disattivato una VPN, questo è quasi certamente il motivo. Riconnetti WARP o ripristina manualmente la rotta con `sudo ifconfig lo0 127.0.0.1 alias`. Proton VPN, Mullvad e NordVPN praticamente non causano mai questo problema, per quel che può valere. I prodotti antivirus e EDR aziendali sono un discorso a parte; alcuni di essi intercettano e instradano il traffico di loopback in modi che possono diventare rapidamente anomali.
HSTS ricorda i test HTTPS che avevi dimenticato. Mesi fa, hai testato un certificato autofirmato su `localhost`. Chrome ha fatto quello che fa di solito e ha memorizzato nella cache l'intestazione HSTS. Ora ogni richiesta `http://localhost` viene silenziosamente riscritta in HTTPS. Un vero spasso da debuggare. Soluzione rapida: apri `chrome://net-internals/#hsts` ed elimina la voce.
Regole del firewall. Il loopback passa attraverso la maggior parte dei firewall per impostazione predefinita. La maggior parte. Alcune immagini di laptop aziendali filtrano deliberatamente localhost come parte della loro strategia di contenimento del malware, e lo scopri solo alla fine di un lungo giovedì. Le regole avanzate in entrata del firewall di Windows Defender sono il posto giusto da controllare. Su Linux, usa `sudo ufw status verbose`. Se è davvero necessario aprire qualcosa, consenti solo la porta specifica in questione; non disattivare l'intero firewall.
C'è però un'abitudine che mi salva sempre. Prima di modificare qualsiasi regola o rotta del firewall, eseguo `lsof` o `netstat`. Nella metà dei casi si tratta di un processo zombie che occupa ostinatamente la porta da un ambiente di sviluppo che si è bloccato in precedenza. Elimino il PID con `kill -9`. Il problema si risolve in pochi secondi.
Configurazione di Localhost e del server per l'utilizzo in ambiente di sviluppo.
Costruire invece di fare il debug? Acquisite qualche abitudine di configurazione del server e vi risparmierete un sacco di pomeriggi. Niente di complicato. Stiamo cercando qualcosa di banale: testare e fare il debug in modo affidabile su più servizi di rete e diversi servizi su un unico portatile, tutto qui.
Regola numero uno, quella noiosa: associa il server a `127.0.0.1`, non a `0.0.0.0`. Se ti connetti a `0.0.0.0`, il tuo piccolo server web di sviluppo si pubblicizzerà improvvisamente su ogni interfaccia di rete di tua proprietà. In altre parole: anche il tizio a caso al tavolo accanto, collegato al Wi-Fi del bar, lo troverà. Associa il server a 127.0.0.1 e solo i servizi già presenti sul tuo computer potranno accedervi. `http.server` di Python, `express.listen()` di Node, `http.ListenAndServe` di Go: tutti accettano l'indirizzo IP letterale. Basta digitarlo.
Regola numero due: quando non ti interessa quale porta, non sceglierne nessuna. Passa la porta 0 al listener (`server.listen(0)` su Node, `bind(('127.0.0.1', 0))` su Python) e il kernel restituirà la porta libera disponibile in quel preciso istante. Chiama `getsockname()` in seguito per scoprire quale porta hai effettivamente ricevuto e passala al componente che necessita dell'URL. In pratica, ogni interfaccia a riga di comando OAuth e ogni adattatore di debug che tu abbia mai utilizzato fa esattamente questo.
Regola numero tre: variabili d'ambiente, non porte hardcoded. Recupera `PORT` dalle variabili d'ambiente e, se mancante, usa un valore predefinito sensato. Lo stesso eseguibile funziona in ambiente di sviluppo su 127.0.0.1:5173 e in produzione dietro un reverse proxy sulla porta 443. Applica lo stesso schema alle stringhe del database, alle chiavi API e a tutto il resto. La documentazione sulle applicazioni a dodici fattori è più vecchia di alcuni tuoi colleghi, ma rimane il modo più economico per evitare interruzioni del servizio.
Regola numero quattro: HTTPS su localhost non è più un problema. Chrome e Firefox ora concedono lo stato di Secure Context sia a `localhost` che a `127.0.0.1` per la maggior parte delle funzionalità, anche senza un certificato valido. Una libreria pignola si rifiuta ancora di accettare un certificato autofirmato? Usa `mkcert`, che rimane la CA locale meno problematica in circolazione. Strumenti integrati come `http.server` di Python e il modulo `net` di Node consentono di configurare un server locale in circa cinque righe durante lo sviluppo in locale, permettendo agli sviluppatori di testare un'applicazione web con un carico realistico riutilizzando gli stessi script per i test di integrazione, dove è sufficiente che i servizi comunichino tramite loopback.
Ultima regola, e in realtà la più importante. La produzione non è locale. Punto e basta. La tua macchina locale è un confine di fiducia; un container di produzione non lo è. Non lasciare mai endpoint di debug in esecuzione su 127.0.0.1 all'interno di un container di produzione, perché altri processi nello stesso container li raggiungono fin dal primo giorno, e un bug di runtime dopo un attacco permette a un malintenzionato di entrare. Usa il traffico localhost solo dove è effettivamente necessario, ovvero negli ambienti di sviluppo e in nessun altro luogo, e il giorno in cui un'API interna che utilizza quella porta viene spostata in un ambiente condiviso o in produzione, implementa immediatamente un'autenticazione reale. Niente "lo sistemeremo dopo il lancio". Quella era la prassi dell'azienda precedente.

Utilizzo sicuro della porta 49342: Sicurezza sull'indirizzo di loopback
Localhost dà una sensazione di privacy. E lo è, per lo più. Finché, all'improvviso, non lo è più.
Ecco il problema che prima o poi tutti si trovano ad affrontare. Gli aggressori esterni non possono certo chiamare direttamente 127.0.0.1. Ma possono sicuramente ingannare il tuo browser , o qualche applicazione sul tuo computer di cui ti fidi, facendo in modo che effettui la chiamata per loro conto. Questa tipologia di attacco è chiamata DNS rebinding. È una tecnica che affligge i servizi di localhost da prima che la maggior parte di chi legge questo articolo iniziasse a scrivere codice.
L'esempio a cui gli appassionati di criptovalute fanno ancora riferimento è quello di MyEtherWallet del 24 aprile 2018. Gli hacker hanno effettuato un dirottamento BGP contro la Route 53 di Amazon, reindirizzando il DNS per myetherwallet.com e diffondendo un clone di phishing che è rimasto attivo giusto il tempo necessario per sottrarre circa 215 ETH (tra i 152.000 e i 160.000 dollari, a seconda della data e dell'ora, secondo quanto riportato da The Register e dall'Internet Society). Non si trattava propriamente di un attacco localhost, lo so. Ma è stato il punto di svolta in cui la comunità crypto ha smesso di fingere che il modello di origine del browser rappresentasse un vero confine di sicurezza. Ogni bridge di wallet locale in ascolto su una porta di loopback si è improvvisamente sentito vulnerabile.
La risposta di Chrome è arrivata con l'accesso alla rete privata, originariamente chiamato CORS-RFC1918 nelle bozze. Da marzo 2024, il browser invia una richiesta preflight CORS con `Access-Control-Request-Private-Network: true` prima che qualsiasi sito web pubblico possa raggiungere un indirizzo privato o di loopback. Il servizio locale deve rispondere con `Access-Control-Allow-Private-Network: true` per superare la verifica. L'implementazione completa è stata introdotta con le versioni di Chrome dalla 123 alla 130. Quindi, se distribuite un server di sviluppo su 127.0.0.1:49342 e prevedete che una pagina pubblica lo raggiunga durante i test di integrazione, impostate questa intestazione. Altrimenti la richiesta verrà semplicemente rifiutata silenziosamente.
Un paio di CVE di Electron del 2025 meritano di essere menzionate. La CVE-2025-10585 è un bug di confusione di tipo V8, aggiunto al catalogo delle vulnerabilità note sfruttate (Known Exploited Vulnerabilities) della CISA il 23 settembre 2025. La CVE-2025-55305 è una vulnerabilità di bypass dell'integrità del codice che manipola gli snapshot dell'heap di V8, divulgata nello stesso periodo. Electron è un wrapper di Chromium e sul vostro laptop sono installate numerose app Electron (Slack, VS Code, Discord, Notion, Teams e probabilmente altre). Molte di queste espongono servizi locali sull'interfaccia di loopback. Aggiornate subito. E per favore, non configurate mai un endpoint RPC su 127.0.0.1 senza un token di autenticazione se tale endpoint può leggere chiavi, firmare transazioni o gestire denaro di qualsiasi tipo.
Come gli sviluppatori di criptovalute usano Localhost in Hardhat, Anvil e Ganache
Lo sviluppo Web3 è fondamentalmente una sfilata infinita di riferimenti all'indirizzo di rete 127.0.0.1, che tu ti concentri sulla distribuzione di contratti, sul fuzzing di protocolli o semplicemente sullo sviluppo web quotidiano su una blockchain locale. C'è un piccolo cluster di nodi locali in esecuzione su localhost sul tuo laptop in questo preciso istante (anche se ti sei dimenticato della metà di essi). Ognuno ha le proprie regole server-on-port. Ognuno espone una combinazione distinta di indirizzo IP e porta a cui i client possono connettersi, in genere utilizzando una porta specifica che lo strumento ha impostato come predefinita.
Riepilogo rapido. Hardhat Network di Nomic Foundation sceglie `http://127.0.0.1:8545` con ID di catena 31337 come predefinito. Anvil di Foundry rivendica lo stesso indirizzo e porta, configurabili tramite `--port` per quei momenti in cui si hanno due suite di test aperte e in conflitto. Ganache GUI sceglie `127.0.0.1:7545` con ID di rete 5777, sebbene la sua controparte a riga di comando condivida la porta 8545 di Hardhat. La modalità regtest di Bitcoin Core, invece, esegue il suo JSON-RPC su `127.0.0.1:18443`, una modifica che in realtà è stata introdotta nella v0.16 tramite la pull request #10825, dopo che qualcuno aveva segnalato un conflitto con la porta 18332 della testnet.
MetaMask si connette letteralmente a ognuno di essi. Aggiungi una rete personalizzata con l'URL RPC locale e il gioco è fatto. L'indirizzo IP 127.0.0.1 funge semplicemente da ponte tra l'interfaccia utente del tuo wallet basato su browser e la blockchain simulata che sta funzionando sul tuo laptop in quel momento. Quando vedi `127.0.0.1:` in una traccia dello stack Web3, si tratta quasi sempre di una di queste due cose: l'adattatore di debug del tuo IDE che interagisce con il nodo, oppure il nodo stesso che avvia un endpoint WebSocket su una porta casuale proprio accanto al suo RPC fisso.
Le integrazioni di pagamento seguono questo schema. State creando un sistema di pagamento in criptovalute basato su Plisio? Finirete per eseguire l'SDK in locale con un piccolo listener Flask o Express su `127.0.0.1:3000/plisio/callback`. Il webhook del gateway non potrà mai raggiungere direttamente il vostro laptop da Internet, quindi i test locali utilizzano un tunnel (ngrok, Cloudflare Tunnel, Tailscale Funnel) per esporre la porta. Si tratta di una porta specifica su un numero di porta specifico che voi, in qualità di commercianti, scegliete e controllate. Gli SDK di Plisio per PHP, Python, Laravel e Node.js includono ciascuno una funzione di supporto `verifyCallbackData` che ricalcola un HMAC-SHA1 del payload rispetto alla chiave segreta del negozio. Il controllo viene eseguito su ogni callback quando arriva al listener locale. Stesso indirizzo di loopback, stesso job, firma reale allegata.
Allarghiamo un attimo lo sguardo. Lo schema è in realtà ovunque: pagamenti, OAuth, servizi di rete Web3 utilizzati nello sviluppo, dall'interno appaiono tutti uguali: un server sulla porta 49342 o su un'altra porta dinamica, connessioni reali sulla porta specificata e in esecuzione su localhost per tutto il tempo.
Verifiche rapide di localhost e porte per qualsiasi sistema operativo
Un breve promemoria. Tienilo aperto in una scheda del terminale. Lo consulterai più spesso di quanto immagini.
Immaginate un sistema Linux, una qualsiasi distribuzione. Il comando `sudo ss -tulpn | grep :49342` risponde alla domanda "chi sta usando la porta 49342?". Senza quel `grep`, otterrete tutte le porte di ascolto aperte sulla macchina. Curiosi di conoscere il limite dinamico delle porte del kernel? Eseguite il comando `cat /proc/sys/net/ipv4/ip_local_port_range`. Se volete solo la prova che la porta loopback è attiva, il comando `ip addr show lo` ve la mostrerà. Ehi, se `lo` non compare nell'output, avete trovato un problema ben più grave di una semplice porta.
Mac funziona in modo simile, solo con strumenti diversi perché si trova nell'ambiente BSD. `lsof -nP -iTCP:49342 -sTCP:LISTEN` visualizza il processo che occupa la porta. Rimuovendo i due punti e il numero, si elencano tutti i processi in ascolto. Aggiungere il prefisso `sudo` quando è necessario visualizzare i socket di altri utenti. L'intervallo di indirizzi IP effimeri si trova in `sysctl net.inet.ip.portrange.first net.inet.ip.portrange.hifirst`. L'interfaccia di loopback si chiama `lo0` (non `lo`), e questa piccola particolarità nella denominazione coglie di sorpresa gli utenti una sola volta prima che la memorizzino per sempre. Ispezionare con `ifconfig lo0`.
Windows inverte completamente il dialetto. Apri PowerShell come amministratore. `netstat -ano | findstr :49342` restituisce un PID. Inseriscilo in `tasklist /fi "PID eq "` per tradurre il numero in un nome di applicazione. L'intervallo dinamico? `netsh int ipv4 show dynamicport tcp`. Devi spostare l'intervallo verso il basso perché un'applicazione legacy ostinata richiede un valore basso? `netsh int ipv4 set dynamic tcp start=49152 num=16384` lo sposta.
Una volta che avrete memorizzato questi comandi, i vostri problemi con localhost si ridurranno a soluzioni da cinque minuti, forse anche meno. Provate questo: eseguite `lsof -nP -iTCP -sTCP:LISTEN | grep 127.0.0.1` sul vostro portatile di lavoro. L'elenco a scorrimento è sempre più lungo di quanto vi aspettiate. Le schede in background del browser. Una manciata di server di linguaggio dell'editor, spesso più di uno. Il DNS interno di Docker. I bridge IPC di Electron di Slack, Discord, Linear e qualsiasi altro programma utilizziate. Qualche demone di telemetria del sistema operativo di cui ignoravate l'esistenza. Oltre ai sei o sette server di sviluppo di stamattina che sicuramente vi siete dimenticati di spegnere. Questo rumore di fondo è normale. È semplicemente il suono di un ambiente di sviluppo funzionante.