如何将Windows主机文件条目与WSL上运行的进程相关联

问题描述

我正在Windows 10上运行WSL2(ubuntu)。 WSL正在运行一个进程,该进程正在侦听特定IP地址-192.168.3.1(如果我不正确地措辞,我深表歉意)

在Windows浏览器中,我想输入一些名称并将其解析为WSL中的IP地址。

我已经编辑了Windows主机文件,并说了类似的话:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

<div class="container">
  <div class="input-group example">
    <input type="text" class="form-control">
    <div class="input-group-btn">
      <button tabindex="-1" class="btn btn-default add" type="button">Add</button>
      <button tabindex="-1" data-toggle="dropdown"
          class="btn btn-default dropdown-toggle" type="button">
        <span class="caret"></span>
        <span class="sr-only">Toggle Dropdown</span>
      </button>
      <ul class="dropdown-menu pull-right">
        <li><a href="#">Action<span class=rem></span></a></li>
        <li><a href="#">Another action<span class=rem></span></a></li>
        <li><a href="#">Separated link<span class=rem></span></a></li>
      </ul>
    </div>
  </div>
</div>

现在,在浏览器中,当我在URL中输入“ alex”时,我不希望它搜索互联网-我希望它在WSL中解析为192.168.3.1。

谢谢

解决方法

问题在于Windows和WSL2位于不同的网络上,并且它们使用不同的系统进行DNS解析。

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

大体取自lpedrosa的以下github注释: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上的Web-app)

    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