Pourquoi n’ai-je pas de connexion Internet sur Ubuntu WSL lorsque je suis sur un VPN ?
Source : Super User [windows-10]).)
Pourquoi n’ai-je pas de connexion Internet sur Ubuntu WSL lorsque je suis sur un VPN ?
Source : Super User [windows-10]).)
Il existe un problème de transfert DNS dans WSL2 lors de l’utilisation d’un VPN (voir le ticket GitHub). De plus, il y a un problème avec Cisco AnyConnect. Voici donc une solution de contournement pour ces problèmes. Devrait fonctionner pour Ubuntu et Debian.
Solution de contournement (nouvelle - automatique)
Cette solution est automatique et a été créée par EdwardCooke (voir https://www.frakkingsweet.com/automatic-dns-configuration-with-wsl-and-anyconnect-client/). Ceci n’est que la première partie de sa solution : mettre à jour resolv.conf au démarrage de WSL.
Réactivez la génération automatique de resolv.conf (si désactivée)
en commentant la désactivation avec #
sudo nano /etc/wsl.conf
`#[network]
#generateResolvConf = false
-
**Créez le script**
`sudo nano /bin/vpn-dns.sh
`#!/bin/bash
echo “Getting current DNS servers, this takes a couple of seconds”
/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -Command ’
$ErrorActionPreference=“SilentlyContinue”
Get-NetAdapter -InterfaceDescription “Cisco AnyConnect*” | Get-DnsClientServerAddress | Select -ExpandProperty ServerAddresses
Get-NetAdapter | ?{-not ($_.InterfaceDescription -like “Cisco AnyConnect*”) } | Get-DnsClientServerAddress | Select -ExpandProperty ServerAddresses
’ |
awk ‘BEGIN { print “# Generated by vpn fix func on”, strftime(“%c”); print } { print “nameserver”, $1 }’ |
tr -d ‘\r’ > /etc/resolv.conf
clear
-
**Rendez-le exécutable/exécutez-le en tant que sudo**
`sudo chmod +x /bin/vpn-dns.sh
echo "$(whoami) ALL=(ALL) NOPASSWD: /bin/vpn-dns.sh" | sudo tee /etc/sudoers.d/010-$(whoami)-vpn-dns
Faites-le s’exécuter au démarrage de WSL
`echo “sudo /bin/vpn-dns.sh” | sudo tee /etc/profile.d/vpn-dns.sh
Vous pouvez aussi l'exécuter manuellement :
`sudo /bin/vpn-dns.sh`
Solution de contournement (ancienne - manuelle)
-
Trouvez le serveur de noms avec **Windows PowerShell** (pendant la session VPN)
`nslookup
Vous obtiendrez l’adresse IPv4 de
(Réponse tronquée)