Pourquoi n'ai-je pas de connexion internet sur Ubuntu WSL lorsque je suis sur un VPN ?

ForumBot
Messages : 26117
Inscription : mer. avr. 22, 2026 5:33 pm

Pourquoi n'ai-je pas de connexion internet sur Ubuntu WSL lorsque je suis sur un VPN ?

Message par ForumBot »

J’ai un WSL Ubuntu 20.04 Version 2 qui fonctionne sur mon ordinateur portable Windows 10. Tout fonctionne bien, j’ai une connexion internet. Mais seulement tant que je ne suis pas connecté à un réseau VPN.


Si je me connecte au réseau de mon université via Cisco AnyConnect, je ne peux plus accéder à internet sur WSL, alors que tout fonctionne correctement en utilisant par exemple Firefox dans le système Windows. J’obtiens :


ping: google.de: Temporary failure in name resolution


J’ai déjà essayé ce qui suit :


Ouvrir l’invite de commandes Windows en mode administrateur et taper ces commandes :

`netsh winsock reset

netsh int ip reset all

netsh winhttp reset proxy

ipconfig /flushdns

reboot



Cela a fonctionné une fois, j'avais accès à internet. Mais dès que j'ai déconnecté la connexion VPN et me suis reconnecté, j'ai eu le même problème à nouveau. J'ai essayé d'exécuter les commandes à nouveau et de redémarrer, mais maintenant cela ne fonctionne plus.

Je ne sais vraiment plus quoi faire. J'ai vraiment besoin d'utiliser WSL tout en étant connecté via VPN.

---
*Source : [Super User](https://github.com/microsoft/WSL/issues/1350)).)*
ayi
Site Admin
Messages : 13176
Inscription : mer. avr. 22, 2026 5:21 pm

Re: Pourquoi n'ai-je pas de connexion internet sur Ubuntu WSL lorsque je suis sur un VPN ?

Message par ayi »

Il y a un problème avec le transfert DNS dans WSL2 lors de l’utilisation d’un VPN (voir le problème 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 mettant à jour resolv.conf au démarrage de WSL.





Réactiver 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éer 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



-

**Le rendre exécutable/exécuter 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





Le faire s’exécuter au démarrage de WSL

`echo “sudo /bin/vpn-dns.sh” | sudo tee /etc/profile.d/vpn-dns.sh



Vous pouvez également l'exécuter manuellement :
`sudo /bin/vpn-dns.sh`

## Solution de contournement (ancienne - manuelle)

-

Trouver le serveur de noms avec **Windows PowerShell** (pendant la session VPN)
`nslookup


Vous obtiendrez l’adresse IPv4 de votre serveur de noms d’entreprise.

Copiez cette adresse.





Désactiver la génération de resolv.conf dans WSL :

`sudo nano /etc/wsl.conf



Copiez ce texte dans le fichier (pour désactiver la génération de resolve.conf au démarrage de WSL)
`[network]
generateResolvConf = false





Dans WSL, ajoutez votre serveur de noms d’entreprise à resolv.conf

`sudo nano /etc/resolv.conf



Supprimez les autres entrées et ajoutez l'IP de votre serveur de noms d'entreprise (si vous avez un serveur de noms secondaire, ajoutez-le sur une ligne séparée)

- `nameserver X.X.X.X` (où X.X.X.X est l'adresse obtenue à l'étape 1)

-

Configurez votre adaptateur VPN (si vous utilisez *Cisco AnyConnect*) **ouvrez un PowerShell en tant qu'administrateur**

- Trouvez le nom de votre adaptateur VPN : `Get-NetIPInterface` (dans mon cas : `"Cisco AnyConnect"`)

- Définissez la métrique de l'adaptateur (remplacez -Match par votre nom), **dans mon cas, je dois exécuter ceci après chaque redémarrage ou reconnexion VPN** :

`Get-NetAdapter | Where-Object {$_.InterfaceDescription -Match "Cisco AnyConnect"} | Set-NetIPInterface -InterfaceMetric 6000


(Qu’est-ce que la métrique d’interface : utilisée pour déterminer la route, Windows utilise l’interface avec la métrique la plus basse)





Redémarrez WSL dans PowerShell : wsl.exe --shutdown





Testez dans WSL en exécutant : wget google.com — si cette commande fonctionne, c’est terminé.


Dans mon cas, j’ai des problèmes DNS quand j’essaie de me connecter à des ressources internes via le navigateur (sous Windows 10, par exemple : intranet), causés par la valeur de métrique élevée définie à l’étape 4 (ce qui désactive essentiellement la route VPN). Voici donc la solution de contournement de la solution de contournement :



  • Vérifiez votre métrique par défaut (de l’interface VPN) dans PowerShell (remplacez -Match par le nom de votre interface)


`Get-NetAdapter | Where-Object {$_.InterfaceDescription -Match “Cisco AnyConnect”} | Get-NetIPInterface



- En cas de problèmes sous Windows 10, restaurez cette valeur par défaut avec **PowerShell en tant qu'administrateur** (remplacez la valeur à la fin par votre valeur par défaut) :

`Get-NetAdapter | Where-Object {$_.InterfaceDescription -Match "Cisco AnyConnect"} | Set-NetIPInterface -InterfaceMetric 1

Répondre

Revenir à « Windows 10 »