Назад | Перейти на главную страницу

Как заставить Ubuntu в WSL 2 разговаривать с HTTP-сервером на том же хосте Windows?

Я запускаю консольное приложение в Windows 10, у которого есть собственный HTTPS-сервер, прослушивающий порт 44340. Это веб-сайт ASP.NET Core (Kestrel), который отлично просматривается на стороне Windows.

Я не могу получить доступ к этому порту из консоли Windows Subsystem for Linux 2 (WSL2) под управлением Ubuntu 18.04, тестирование с curl.

Я пробовал добавить правило брандмауэра Windows для этого порта, но оно не работает.

Я пробовал через localhost, а также два IP-адреса, которые я вижу для своей машины. Один - это настоящая сетевая карта, использующая DHCP, а другой - адаптер vEthernet для WSL с 172.31 адрес.

Вот что я сделал.

  • Отключил брандмауэр Windows (затем, когда он оказался работоспособным, снова включил и добавил правило).
  • Добавьте запись файла hosts на стороне Windows для хоста xyz указывая на мой физический IP-адрес сетевой карты.
  • Создал самоподписанный сертификат для xyz.
  • Настроен Kestrel для прослушивания IP-адреса физического сетевого адаптера и загрузки сертификата для xyz
  • Проверил, что сторона Windows работает с Chrome.
  • Запустил WSL и пингуется xyz.
  • Ран curl https://xyz:44340 и заметил, что мой самозаверяющий сертификат не прошел проверку.

Это подтверждает, что TCP работает, поэтому я иду спать. По сути, блокираторами были:

  • Брандмауэр.
  • Kestrel не слушает правильный IP.