Конфигурации Windows:
- Запуск примера веб-сервера с открытым портом 5000 (см. рисунок 1)
- Брандмауэр Windows полностью закрыт
WSL2:
- Может успешно получить доступ к Интернету и выполнить ping windows с IP-адресом хоста или
$(hostname).local
, но не можетcurl http://172.18.16.1:5000
sandowner@ENIGMATIC-MACHINE:~$ hostip=$(ip route | grep default | awk '{print $3}')
sandowner@ENIGMATIC-MACHINE:~$ echo $hostip
172.18.16.1
sandowner@ENIGMATIC-MACHINE:~$ ping 172.18.16.1
PING 172.18.16.1 (172.18.16.1) 56(84) bytes of data.
64 bytes from 172.18.16.1: icmp_seq=1 ttl=128 time=0.514 ms
64 bytes from 172.18.16.1: icmp_seq=2 ttl=128 time=0.690 ms
^C
sandowner@ENIGMATIC-MACHINE:~$ ping $(hostname).local
PING ENIGMATIC-MACHINE (172.18.16.1) 56(84) bytes of data.
64 bytes from ENIGMATIC-MACHINE (172.18.16.1): icmp_seq=1 ttl=128 time=0.355 ms
64 bytes from ENIGMATIC-MACHINE (172.18.16.1): icmp_seq=2 ttl=128 time=0.729 ms
^C
sandowner@ENIGMATIC-MACHINE:~$ curl http://172.18.16.1:5000
^C (will timeout)
- Порт 5000 хоста также не может быть доступен из браузера WSL2 и он будет заканчиваться на
ERR_CONNECTION_TIMED_OUT
(см. рисунок 2)
Любая помощь будет оценена по достоинству! Спасибо!
решение1
Когда вы хотите подключитьсяот WSL 2 к хосту, нет никаких специальных механизмов. WSL 2 работает в виртуальной машине и является удаленным хостом с точки зрения сетевого стека Windows. Это означает:
- Вы не можете получить доступ к приложениям, привязанным к
localhost
любому IP-адресу127.0.0.0/8
или::1
- Брандмауэр должен разрешать входящее соединение.
Виртуальная сеть WSL 2, к сожалению, имеет совершенно непредсказуемые динамические адреса, поэтому прослушивание только там означает, что вам придется постоянно обновлять конфигурацию сетевой службы. Вместо этого проще привязаться к 0.0.0.0
или ::
(«все интерфейсы»). Это означает, что каждый сможет подключиться, поэтому убедитесь, что вы осведомлены о последствиях, если вы находитесь в ненадежной сети.