как связать запись файла хоста Windows с процессом, запущенным на WSL

Я использую WSL2 (ubuntu) в Windows 10. WSL запускает процесс, который прослушивает определенный IP-адрес - 192.168.3.1 (приношу свои извинения, если я неправильно сформулировал)

Когда я нахожусь в браузере Windows, я хочу ввести какое-нибудь имя и разрешить его в IP-адрес внутри WSL.

Я отредактировал файл хостов Windows и сказал что-то вроде:

192.168.3.1    alex

Итак, теперь в браузере, когда я ввожу alex в URL-адрес, я не хочу, чтобы он выполнял поиск в Интернете - я хочу, чтобы он разрешился до 192.168.3.1 внутри WSL.

Спасибо


person alernerdev    schedule 14.09.2020    source источник
comment
Возможно, глупый вопрос, но что ping alex дает в качестве IP?   -  person Matthew    schedule 14.09.2020
comment
поэтому внутри Widows он правильно разрешает правильный IP-адрес - но я только что прочитал, что в WSL2 сеть виртуализирована. Таким образом, 192.168.3.1 внутри WSL - это не то же самое 192.168.3.1, что и в Windows. По крайней мере, так я это понимаю   -  person alernerdev    schedule 14.09.2020


Ответы (1)


Проблема в том, что Windows и WSL2 находятся в разных сетях И используют разные системы для разрешения DNS.

Windows: C:\Windows\System32\drivers\etc\hosts
Linux / WSL2: /etc/hosts

В основном взято из следующего комментария github от lpedrosa: https://github.com/Microsoft/WSL/issues/1032#issuecomment-677727024

  1. Из WSL2 получите IP-адрес хоста окна

    cat /etc/resolv.conf | grep nameserver | cut -d ' ' -f 2
    

    (например: 172.20.112.1)

  2. Добавьте это в C:\Windows\System32\drivers\etc\hosts

    172.20.112.1 alex
    
  3. Перезапустите WSL2

    wsl --shutdown
    
  4. Проверьте подключение из командной строки Powershell (например, веб-приложение на хосте Windows на порту 5000)

    C:\Users\Matthew> (Invoke-WebRequest http://alex:5000/health).Content
    Hello World
    
    C:\Users\Matthew> wsl curl http://alex:5000/health
    Hello World
    
  5. Проверьте подключение из командной строки WSL2 bash

    matthew@Matthew-PC:/mnt/c/Users/Matthew$ curl http://alex:5000/health
    Hello World
    
person Matthew    schedule 14.09.2020
comment
IP WSL2 меняется при загрузке? - person MoMo; 13.01.2021
comment
Это плохой ответ. Как указано в @MoMo, WSL будет генерировать новый адрес при каждом перезапуске. - person Julian Knight; 01.05.2021
comment
Это не сработает, так как ip изменится после перезапуска wsl. - person Miki Pavlov; 03.05.2021