我可以为 WSL 2 设置静态 IP 地址吗?

Jep*_*zen 3 mysql ruby-on-rails wsl-2

我正在 WSL 2 上进行一些 Ruby on Rails 开发。rails 应用程序连接到在我的 Windows 主机上运行的 MySQL 服务器。当我使用 WSL 1 时,将主机设置为 127.0.0.1 很容易,但在 WSL 2 上我必须使用编写的名称服务器/etc/resolv.conf

但我发现 resolv.conf 中写入的 IP 地址在重新启动时会发生变化。

有没有办法为 WSL 2 设置静态 IP 地址?

Von*_*onC 7

2023 年 9 月更新:WSL 问题 4210Craig Loewen(Microsoft 项目经理)指出“适用于 Linux 的 Windows 子系统 2023 年 9 月更新

\n
\n

在您的.wslconfig文件中,您可以设置experimental.networkingMode=mirrored,以及一些其他可以提高网络兼容性的关键设置!\n此功能应该允许您设置静态 IP,因为您将获得 Windows 主机的 IP 地址。请尝试一下并告诉我们您的想法。

\n

请注意:您需要使用 Windows Insiders 版本才能使用新的网络设置(任何 Windows Insiders 频道​​都可以,包括发布预览版)。如果您看到“这些不受支持”消息,则意味着您当前的 Windows 版本不支持,您需要升级。这些功能最终将出现在 Windows 11 22H2 中。

\n
\n
\n

您可以考虑ocroz/wsl2-boot请参阅INSTALL安装说明):

\n
\n

运行命令后wsl-boot

\n
    \n
  • WSL 网络始终按照其预定义定义进行配置(Windows 端),
  • \n
  • 所有 WSL 主机始终配置有预定义的静态 IP(Linux 端),
  • \n
  • 所有 WSL 主机和连接的 Hyper-V VM 始终可以相互通信,
  • \n
  • 无论您连接到互联网还是 VPN,DNS 解析都可以工作,
  • \n
  • 您可以立即通过 SSH 连接到 WSL 主机。
  • \n
\n
\n
\n

2022 年 12 月,microsoft/WSL第 4210 期还添加了:

\n
\n

在最新的 Windows 11 (22621+) 中,您已经可以在以下位置指定要用于 WSL2 的网络适配器.wslconfig

\n
[wsl2]\nnetworkingMode=bridged\nvmSwitch=my-switch\nipv6=true\n
Run Code Online (Sandbox Code Playgroud)\n

因此,现在您可以为 WSL2 创建 Hyper-V 外部虚拟交换机并修复 IP 地址,无需其他脚本。它开箱即用。

\n
\n

同一线程添加

\n
\n
    \n
  1. 在 Hyper-V\xef\xbc\x8c 中创建 vSwitch 我使用 Hyper-V Gui 来执行此操作。Hyper-V 具有三种类型的虚拟交换机:外部、内部和专用。
    \n我选择“ external”类型,即bridge类型,与VMWare工作站相同。

    \n
  2. \n
  3. 在 .wslconfig 中设置此配置

    \n
  4. \n
  5. 我发现我的家庭路由器\xef\xbc\x8c的网络IP发生了变化,它取代了旧的eth0。
    \n您可以在家庭路由器中设置 DHCP,然后修复网桥的 IP。

    \n
  6. \n
\n

综上所述,在bridge的情况下,本质上就是DHCP,固定与否取决于DHCP服务器。

\n
\n

2023 年5,来自Azure Zeng

\n
\n

我在最新版本的 WSL2 中发现了一些有趣的东西。

\n

可以在以下注册表项中找到并更改 WSL 网络 IP 范围和网关 IP:

\n
    \n
  • Computer\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Lxss\\NatGatewayIpAddress
  • \n
  • Computer\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Lxss\\NatNetwork
  • \n
\n

您可以在此注册表项中找到并更改您的 WSL 实例 IP:

\n

Computer\\HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Lxss

\n

寄存器1
\n正则2

\n

如果您不修改这些注册表项,即使您重新启动计算机,WSL 实例 IP 和相对于 WSL 实例的主机 IP 也不会更改。

\n

如果要更改 WSL IP,只需编辑这些注册表项,然后重新启动计算机,打开 WSL 时将应用新的 WSL IP 设置。
\n也就是说,现在为WSL设置静态IP确实可以了。

\n

我的操作系统是 Windows 11 Enterprise(Build 22621.1702),WSL 版本是 1.2.5.0。
\n另外,还有一件事要提,我的 VMware NAT/HostOnly Network 和 WSL 实例现在可以通过 IP 地址相互访问。

\n
\n