问题描述
我正在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
-
从WSL2中获取窗口主机的IP
cat /etc/resolv.conf | grep nameserver | cut -d ' ' -f 2
(例如:
172.20.112.1
) -
将其附加到
C:\Windows\System32\drivers\etc\hosts
172.20.112.1 alex
-
重新启动WSL2
wsl --shutdown
-
从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
-
从WSL2 bash提示符验证连接性
matthew@Matthew-PC:/mnt/c/Users/Matthew$ curl http://alex:5000/health Hello World