web-dev-qa-db-fra.com

Windows10 WSL2 Ubuntu / Debian # APT-GET Update a échoué # Pas de réseau

Après la mise à niveau de WSL à WSL2

Sudo apt-get update

ne fonctionne plus plus longtemps après

wSL --Se-Version Ubuntu-18.04 2

Production:

> Sudo apt-get update
Err:1 http://security.ubuntu.com/ubuntu bionic-security InRelease
  Temporary failure resolving 'security.ubuntu.com'
Err:2 http://archive.ubuntu.com/ubuntu bionic InRelease
  Temporary failure resolving 'archive.ubuntu.com'
Err:3 http://archive.ubuntu.com/ubuntu bionic-updates InRelease
  Temporary failure resolving 'archive.ubuntu.com'
Err:4 http://archive.ubuntu.com/ubuntu bionic-backports InRelease
  Temporary failure resolving 'archive.ubuntu.com'
Reading package lists... Done
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/bionic/InRelease  Temporary failure resolving 'archive.ubuntu.com'
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/bionic-updates/InRelease  Temporary failure resolving 'archive.ubuntu.com'
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/bionic-backports/InRelease  Temporary failure resolving 'archive.ubuntu.com'
W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/bionic-security/InRelease  Temporary failure resolving 'security.ubuntu.com'
W: Some index files failed to download. They have been ignored, or old ones used instead.

Après avoir revenu à WSL1, le problème disparaît à nouveau. Idem sur Debian et analogue à Centos .. SO WSL2 DOIT avoir un bogue.

La version de Build Windows10 est 19041 et a été installée aujourd'hui.

Tout travail autour de WSL2? Salutations

13
Jundl

Très probablement, la distribution obtient son propre adaptateur virtuel, d'abord quelques étapes que vous pourriez essayer:

  1. Besoin de vérifier si les paquets traversent réellement le pare-feu Windows enter image description hereenter image description here Ensuite, vérifiez %systemroot%\system32\LogFiles\Firewall\pfirewall.log

  2. Si les paquets ne traversent pas le pare-feu le plus probable, la distribution obtient son propre adaptateur virtuel, vérifiez quelle adresse IP obtient la distribution de l'intérieur debian avec:

    ifconfig

ou si vous n'avez pas sifonfig:

Perl -MSocket -le 'socket(S, PF_INET, SOCK_DGRAM, getprotobyname("udp"));
connect(S, sockaddr_in(1, inet_aton("8.8.8.8")));
print inet_ntoa((sockaddr_in(getsockname(S)))[1]);'

ou ipconfig sur la machine hôte WSL2 Windows WSL2 et regardez ce qu'IP IP prend la machine de la machine Adaptateur WSL

  1. Si vous avez besoin d'accès à Internet via Windows IP, vérifiez ce problème: https://github.com/microsoft/wsl/issues/415

Le travail autour est d'utiliser un script qui fait:

une. Obtenez l'adresse IP de WSL 2 Machine b. Supprimer les règles de transfert de port précédentes c. Ajouter des règles de transfert de port D. Supprimer les règles de pare-feu précédemment ajoutées e. Ajouter de nouvelles règles de pare-feu

$remoteport = bash.exe -c "ifconfig eth0 | grep 'inet '"
$found = $remoteport -match '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}';

if( $found ){
  $remoteport = $matches[0];
} else{
  echo "The Script Exited, the ip address of WSL 2 cannot be found";
  exit;
}

#[Ports]

#All the ports you want to forward separated by coma
$ports=@(80,443,10000,3000,5000);


#[Static ip]
#You can change the addr to your ip config to listen to a specific address
$addr='0.0.0.0';
$ports_a = $ports -join ",";


#Remove Firewall Exception Rules
iex "Remove-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' ";

#adding Exception Rules for inbound and outbound Rules
iex "New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Outbound -LocalPort $ports_a -Action Allow -Protocol TCP";
iex "New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Inbound -LocalPort $ports_a -Action Allow -Protocol TCP";

for( $i = 0; $i -lt $ports.length; $i++ ){
  $port = $ports[$i];
  iex "netsh interface portproxy delete v4tov4 listenport=$port listenaddress=$addr";
  iex "netsh interface portproxy add v4tov4 listenport=$port listenaddress=$addr connectpor t=$port connectaddress=$remoteport";
  }

Une solution alternative consiste à aller sur Hyper-V Manager et à modifier le commutateur virtuel qui est lié au physique NIC enter image description here

1
Eduard Florinescu

Le fichier généré /etc/resolv.conf est:

nameerver 172.24.0.1

..had pour le changer à

nameerver 8.8.8.8

qui résout le problème

10
Jundl

Pour moi, j'ai eu une nouvelle instance WSL Ubuntu 20.04, après avoir installé Apache et permet au profil Apache à l'aide de cette commande.

Sudo ufw allow in "Apache"

Puis,

Sudo service ufw start && Sudo ufw enable

J'ai remarqué que cette question ait déclenché et après avoir désactivé le pare-feu à nouveau en utilisant

Sudo ufw disable && Sudo service ufw stop

tout a bien fonctionné bien.

1
Mouhammed Elshaaer

cela a fonctionné pour moi, j'utilise CiscoanyConnect pour VPN

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

Get-netipinterface -interfacealias "Véthernet (WSL)" | Set-netipinterface -interfaceMétrique 1

Crédits: Cisco anyconnect

0
Gabriel