Скорее всего, у дистрибутива есть собственный виртуальный адаптер. Сначала нужно выполнить несколько шагов:
Необходимо проверить, действительно ли пакеты go через Windows firewall Затем отметьте %systemroot%\system32\LogFiles\Firewall\pfirewall.log
Если пакеты не проходят через брандмауэр, скорее всего, дистрибутив получает свой собственный Виртуальный адаптер, проверьте, какой IP получает распространение из Debian с помощью:
ifconfig
или если у вас нет ifconfig:
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]);'
или ipconfig
на хост-компьютере Windows WSL2 и посмотрите, какой IP-адрес занимает машина в зависимости от адаптера WSL
Если вам нужен доступ к inte rnet через Windows IP, проверьте эту проблему:
https://github.com/microsoft/WSL/issues/4150 Обходной путь - использовать скрипт, который делает:
a. Получить IP-адрес машины WSL 2 b. Удалить предыдущие правила переадресации портов c. Добавить правила переадресации портов d. Удалить ранее добавленные правила брандмауэра e. Добавьте новые правила брандмауэра
$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";
}
Альтернативным решением является go для Hyper-V Manager и изменение виртуального коммутатора, привязанного к физическому NIC