Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Quando si lavora con le app di rete e WSL, è necessario tenere presenti alcune considerazioni. Per impostazione predefinita, WSL usa un'architettura basata su NAT ed è consigliabile provare la nuova modalità di rete con mirroring per ottenere le funzionalità e i miglioramenti più recenti.
Identificare l'indirizzo IP
Esistono due scenari da considerare quando si identifica l'indirizzo IP usato per una distribuzione Linux in esecuzione tramite WSL:
scenario uno: Dal punto di vista dell'host Windows, si vuole eseguire una query sull'indirizzo IP di una distribuzione Linux in esecuzione tramite WSL2, in modo che un programma nell'host Windows possa connettersi a un programma server in esecuzione all'interno della distribuzione (istanza).
L'host Di Windows può usare il comando :
wsl.exe --distribution <DistroName> hostname -i
Se si esegue una query sulla distribuzione predefinita, questa parte del comando che designa la distribuzione può essere omessa: -d <DistroName>. Assicurarsi di usare un "flag" minuscolo -i.
Sotto le quinte, il comando host wsl.exe avvia l'istanza di destinazione ed esegue il comando hostname --ip-addressesLinux . Questo comando stampa quindi l'indirizzo IP dell'istanza WSL in STDOUT. Il contenuto di testo STDOUT viene quindi inoltrato di nuovo a wsl.exe. Infine, wsl.exe visualizza l'output nella riga di comando.
Un output tipico potrebbe essere:
172.30.98.229
scenario due: un programma in esecuzione all'interno di una distribuzione Linux tramite WSL2 (istanza) vuole conoscere l'indirizzo IP dell'host Windows, in modo che un programma Linux possa connettersi a un programma server host Windows.
L'utente di WSL2 Linux può usare il comando :
ip route show | grep -i default | awk '{ print $3}'
Un output tipico potrebbe essere:
172.30.96.1
Il 172.30.96.1 è quindi l'indirizzo IP host per Windows, in questo esempio.
Nota
Queste azioni di query degli indirizzi IP precedenti sono in genere necessarie quando WSL2 è in esecuzione con la modalità di rete NAT predefinita .
Con WSL2 in esecuzione con la nuova modalità di mirroring , l'host Windows e la macchina virtuale WSL2 possono connettersi tra loro utilizzando localhost (127.0.0.1) come indirizzo di destinazione, quindi non è necessario utilizzare l'indirizzo IP di un peer di interrogazione.
Modalità di rete predefinita: NAT
Per impostazione predefinita, WSL usa un'architettura basata su NAT (Network Address Translation) per la rete. Quando si lavora con un'architettura di rete basata su NAT, tenere presenti le considerazioni seguenti:
Accesso alle app di rete Linux da Windows (localhost)
Se si sta creando un'app di rete (ad esempio un'app in esecuzione in un NodeJS o SQL Server) nella distribuzione Linux, è possibile accedervi da un'app di Windows (ad esempio il browser Internet Edge o Chrome) usando localhost (proprio come normalmente si farebbe).
Accesso alle app di rete di Windows da Linux (IP host)
Se si vuole accedere a un'app di rete in esecuzione in Windows (ad esempio un'app in esecuzione in un NodeJS o SQL Server) dalla distribuzione Linux (ie Ubuntu), è necessario usare l'indirizzo IP del computer host. Anche se questo non è uno scenario comune, è possibile seguire questi passaggi per renderlo funzionante.
Ottenere l'indirizzo IP del computer host eseguendo questo comando dalla distribuzione Linux:
ip route show | grep -i default | awk '{ print $3}'Connettersi a qualsiasi server Windows usando l'indirizzo IP copiato.
L'immagine seguente mostra un esempio di questo tipo connettendosi a un server Node.js in esecuzione in Windows tramite curl.
Connessione tramite indirizzi IP remoti
Quando si usano indirizzi IP remoti per connettersi alle applicazioni, questi verranno considerati come connessioni dalla rete locale (LAN). Ciò significa che è necessario assicurarsi che l'applicazione possa accettare connessioni LAN.
Ad esempio, potrebbe essere necessario associare l'applicazione a 0.0.0.0 anziché 127.0.0.1. Nell'esempio di un'app Python con Flask, questa operazione può essere eseguita con il comando : app.run(host='0.0.0.0'). Tenere presente la sicurezza quando si apportano queste modifiche, in quanto ciò consentirà le connessioni dalla lan.
Accesso a una distribuzione WSL 2 dalla rete locale (LAN)
Quando si usa una distribuzione WSL 1, se il computer è stato configurato per l'accesso tramite LAN, è possibile accedere anche alle applicazioni eseguite in WSL nella LAN.
Questo non è il caso predefinito in WSL 2. WSL 2 dispone di una scheda Ethernet virtualizzata con il proprio indirizzo IP univoco. Attualmente, per abilitare questo flusso di lavoro è necessario eseguire gli stessi passaggi di una normale macchina virtuale. Stiamo esaminando i modi per migliorare questa esperienza.
Di seguito è riportato un esempio dell'uso del comando Netsh dell'interfaccia portproxy di Windows per aggiungere un proxy di porta che ascolta sulla porta dell'host e connettere tale proxy di porta all'indirizzo IP per la VM WSL 2.
netsh interface portproxy add v4tov4 listenport=<yourPortToForward> listenaddress=0.0.0.0 connectport=<yourPortToConnectToInWSL> connectaddress=(wsl hostname -I)
In questo esempio è necessario aggiornare <yourPortToForward> a un numero di porta, ad esempio listenport=4000.
listenaddress=0.0.0.0 significa che le richieste in ingresso verranno accettate da QUALSIASI indirizzo IP. L'indirizzo di ascolto specifica l'indirizzo IPv4 su cui ascoltare e può essere modificato con valori come: indirizzo IP, nome NetBIOS del computer o nome DNS del computer. Se non viene specificato un indirizzo, il valore predefinito è il computer locale. È necessario aggiornare il valore <yourPortToConnectToInWSL> a un numero di porta in cui si vuole connettere WSL, ad esempio connectport=4000. Infine, il valore connectaddress deve essere l'indirizzo IP della distribuzione Linux installata tramite WSL 2 (l'indirizzo della macchina virtuale WSL 2), che può essere trovato immettendo il comando: wsl.exe hostname -I.
Di conseguenza, questo comando potrebbe essere simile al seguente:
netsh interface portproxy add v4tov4 listenport=4000 listenaddress=0.0.0.0 connectport=4000 connectaddress=192.168.101.100
Per ottenere l'indirizzo IP, usare:
-
wsl hostname -Iper l'indirizzo IP della distribuzione Linux installata tramite WSL 2 (l'indirizzo della macchina virtuale WSL 2) -
cat /etc/resolv.confper l'indirizzo IP del computer Windows, come illustrato da WSL 2 (macchina virtuale WSL 2)
L'uso di listenaddress=0.0.0.0 sarà in ascolto su tutte le porte IPv4 .
Nota
L'uso di un "i" minuscolo con il comando nome host genererà un risultato diverso rispetto all'uso di un carattere "I" maiuscolo.
wsl hostname -i è il computer locale (127.0.1.1 è un indirizzo di diagnostica segnaposto), mentre wsl hostname -I fornirà l'indirizzo IP del computer locale come visto da altri computer e deve essere utilizzato per individuare il connectaddress della distribuzione Linux in esecuzione tramite WSL 2.
Accesso IPv6
-
wsl hostname -iper l'indirizzo IP della distribuzione Linux installata tramite WSL 2 (l'indirizzo della macchina virtuale WSL 2) -
ip route show | grep -i default | awk '{ print $3}'per l'indirizzo IP del computer Windows, come illustrato da WSL 2 (macchina virtuale WSL 2)
L'uso di listenaddress=0.0.0.0 sarà in ascolto su tutte le porte IPv4 .
Rete in modalità specchio
Nei computer che eseguono Windows 11 22H2 e versioni successive, è possibile impostare su networkingMode=mirrored sotto [wsl2] nel file .wslconfig per abilitare la modalità di rete con mirroring. Abilitando questa funzione, WSL passa a una nuova architettura di rete con l'obiettivo di replicare le interfacce di rete disponibili su Windows in Linux, per aggiungere nuove funzionalità di rete e migliorare la compatibilità.
Ecco i vantaggi correnti per abilitare questa modalità:
- Supporto IPv6
- Connettersi ai server Windows da Linux usando l'indirizzo localhost
127.0.0.1. L'indirizzo localhost IPv6::1non è supportato - Miglioramento della compatibilità di rete per vpn
- Supporto multicast
- Connettersi a WSL direttamente dalla rete locale (LAN)
Nota
Eseguire il comando seguente nella finestra di PowerShell con privilegi di amministratore per configurare le impostazioni del firewall Hyper-V per consentire le connessioni in ingresso:
Set-NetFirewallHyperVVMSetting -Name '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -DefaultInboundAction Allow
o
New-NetFirewallHyperVRule -Name "MyWebServer" -DisplayName "My Web Server" -Direction Inbound -VMCreatorId '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -Protocol TCP -LocalPorts 80
Questa nuova modalità risolve i problemi di rete riscontrati con l'uso di un'architettura basata su NAT (Network Address Translation). Trovare problemi noti o inviare commenti e suggerimenti su eventuali bug identificati nel repository del prodotto WSL su GitHub.
DNS Tunneling
Nei computer che eseguono Windows 11 22H2 e versioni successive la dnsTunneling funzionalità è attivata per impostazione predefinita (disponibile [wsl2] nel .wslconfig file) e usa una funzionalità di virtualizzazione per rispondere alle richieste DNS dall'interno di WSL, anziché richiederle tramite un pacchetto di rete. Questa funzionalità è finalizzata a migliorare la compatibilità con vpn e altre set up di rete complesse.
Proxy automatico
Nei computer che eseguono Windows 11 22H2 e versioni successive, l'impostazione autoProxy=true in [wsl2] nel file .wslconfig impone a WSL di usare le informazioni sul proxy HTTP di Windows. Se è già stato configurato un proxy in Windows, l'abilitazione di questa funzionalità renderà il proxy impostato automaticamente anche in WSL.
WSL e firewall
Nei computer che eseguono Windows 11 22H2 e versioni successive, con WSL 2.0.9 e versioni successive, la funzionalità firewall Hyper-V verrà attivata per impostazione predefinita. Ciò garantisce che:
- Vedi Windows Defender Firewall con sicurezza avanzata per altre informazioni sulle funzionalità di sicurezza di Windows che verranno applicate automaticamente a WSL.
- Vedere Configurare Hyper-V firewall per altre informazioni sull'applicazione di queste regole e impostazioni sia in locale che tramite strumenti online come Intune.
Windows Subsystem for Linux