WSL 2 网络配置

服务器 0

文章目录

  • WSL 2 访问局域网内设备
    • WSL 2 访问本机 Windows
    • WSL 2 访问非本机 Windows 设备
  • 局域网内设备访问 WSL 2
    • 本机 Windows 访问 WSL 2
    • 非本机 Windows 设备访问 WSL 2
  • WSL 2 使用本机 Windows 中的代理
    • Windows 代理客户端配置
    • WSL 2 代理配置
      • 方法一:代理环境变量
      • 方法二:proxychains 代理工具
  • 问题记录
    • WSL 2 无法通过网络访问本机 Windows,ping 不通
    • 代理客户端已经开启了允许来自局域网的连接,但 WSL 2 中还是不能连接代理
  • 参考文档

WSL 2 访问局域网内设备

WSL 2 访问本机 Windows

由于 WSL 2 基于 Hyper-V,其与宿主 Windows 的关系可以看作是同一网络下的不同主机。要实现 WSL 2 到 Windows 的通信,首先要让 WSL 2 知道 Windows 的 IP 地址。

在 Windows 中,打开终端,执行 ipconfig,可以看到 WSL 相关的网络信息:


需要注意的是,在没有特殊配置的情况下,电脑的 IP 地址通常会随网络环境的变化而变化,此处及后文的 IP 地址仅供参考,具体 IP 地址需要以自己实际操作时的输出为准。

通过 ipconfig 的输出可以发现,在 Windows-WSL 2 这一体系中,Windows 的 IP 地址为 192.168.176.1

Linux 系统中,/etc/resolv.conf 为 DNS 配置文件,对于 WSL 2 也是如此。在 WSL 2 中,执行 cat /etc/resolv.conf,查看其中的内容:


可以发现,此处指向的 DNS 服务器 IP 为 192.168.176.1,正是 Windows 的 IP,说明 WSL 2 是借助 Windows 去寻找真正的 DNS 服务器的。

可以尝试在 WSL 2 中 ping Windows,即执行 ping `cat /etc/resolv.conf | grep nameserver | awk '{print $2}'`,能 ping 通即表示 WSL 2 能通过网络访问 Windows。

因为每次启动 WSL 2 都会重新分配虚拟网络,可以在 ~/.bashrc 中加入 Windows 网络相关环境变量,便于后续使用:

# Windows 宿主机 IPWINDOWS_IP=$(grep nameserver /etc/resolv.conf | awk '{print $2}' | head -1)# Windows 宿主机代理端口WINDOWS_PROXY_PORT=7890# 更新 Windows 网络信息function update_windows_net_info() {       WINDOWS_IP=$(grep nameserver /etc/resolv.conf | awk '{print $2}' | head -1)    WINDOWS_PROXY_PORT=7890}

如果有需要的话,还可以在 update_windows_net_info 中将 Windows 的 IP 地址写入 /etc/hosts

WSL 2 访问非

也许您对下面的内容还感兴趣: