WSL2 访问VPN配置

Created on: February 25, 2025

Answered using GPT-4o by Chat01

Question

在wsl2的settings中,网络模式选择什么,才可以允许wsl2访问windows的vpn流量

Answer

在WSL2(Windows Subsystem for Linux 2)中,要使其能够访问 Windows VPN 流量,需要调整 WSL2 的网络模式,以确保流量能够正确地从 WSL2 传递到 Windows 并共享 VPN 连接。

步骤 1:启用 mirrored 网络模式

Windows 11 23H2 及更高版本支持新的 WSL2 网络模式 mirrored,它允许 WSL2 直接使用 Windows 的网络适配器,包括 VPN。

  1. 打开 Windows PowerShell(以管理员身份运行)。
  2. 运行以下命令以启用 mirrored 网络模式:
    powershell
    wsl --set-default-version 2 wsl --networking-mode mirrored
  3. 重新启动 WSL:
    powershell
    wsl --shutdown wsl

步骤 2:检查 VPN 流量是否共享

启用 mirrored 模式后,WSL2 应该可以自动访问 Windows VPN 的网络。如果仍然无法访问,请尝试以下方法:

  • 在 Windows 端检查 VPN 是否启用了“允许其他网络用户连接”(共享 VPN 连接)。
  • 在 WSL2 内部使用 ping 测试是否能够访问 VPN 目标:
    sh
    ping <VPN内网IP>
  • 确保防火墙未阻止 WSL2 的流量。

步骤 3:如果 mirrored 模式不可用

如果你使用的是 Windows 10 或 Windows 11 旧版本,没有 mirrored 模式,可以使用 NAT 模式并手动配置流量转发:

  1. 获取 VPN 的网关地址 在 Windows 命令行(cmd)中运行:

    cmd
    ipconfig /all

    记下 VPN 适配器的网关地址(通常是 192.168.x.110.x.x.1)。

  2. 在 WSL2 内部手动设置默认路由 在 WSL2 中运行:

    sh
    sudo ip route add default via <VPN网关IP> dev eth0

    例如,如果 VPN 网关是 192.168.1.1

    sh
    sudo ip route add default via 192.168.1.1 dev eth0
  3. 启用 Windows 端口转发(仅适用于 NAT 模式) 运行 PowerShell(管理员模式):

    powershell
    netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=<WSL2_IP>

总结

  • Windows 11(23H2 及以上):使用 mirrored 网络模式(推荐)。
  • Windows 10 或较旧的 Windows 11 版本:使用 NAT + 手动路由。

你可以尝试 mirrored 模式,并在 WSL2 内部 ping VPN 内部地址测试是否能访问。如果仍然无法连接,可以尝试手动路由的方式。

Question

wsl2的settings网络设置如何设置,才能让wsl2使用vpn的流量呢

Answer

要让 WSL2 使用 Windows 上的 VPN 流量,可以通过调整 WSL2 的网络设置来实现。这里有几种方法,根据你的 Windows 版本选择合适的方法。


方法 1:使用 mirrored 网络模式(推荐)

适用版本: Windows 11 23H2 及以上

mirrored 网络模式允许 WSL2 直接使用 Windows 的网络配置,包括 VPN 流量。

步骤:

  1. 启用 mirrored 模式:PowerShell(以管理员身份运行) 中执行:

    powershell
    wsl --shutdown wsl --networking-mode mirrored
  2. 重启 WSL2:

    powershell
    wsl
  3. 验证网络连接: 在 WSL2 内部执行:

    sh
    ping google.com curl ifconfig.me

    检查输出的 IP 地址是否为 VPN 的出口 IP 地址。


方法 2:手动配置 NAT 路由

适用版本: Windows 10、Windows 11 较旧版本(不支持 mirrored 模式)

  1. 获取 VPN 网关地址:命令提示符(cmd) 中输入:

    cmd
    ipconfig

    找到 VPN 网络适配器,记下 默认网关(通常是 192.168.x.110.x.x.1)。

  2. 在 WSL2 中配置默认路由: 打开 WSL2,执行以下命令:

    sh
    ip route | grep default sudo ip route del default sudo ip route add default via <VPN网关IP> dev eth0

    示例: 如果 VPN 网关是 192.168.1.1

    sh
    sudo ip route add default via 192.168.1.1 dev eth0
  3. 验证连接:

    • 在 WSL2 内部:
      sh
      ping google.com curl ifconfig.me
    • 确认出口 IP 是 VPN 的出口 IP。

方法 3:通过 Windows 网络共享(适用于所有版本)

  1. 启用 VPN 网络共享:

    • 打开 控制面板 > 网络和共享中心 > 更改适配器设置
    • 右键点击 VPN 连接,选择 属性
    • 切换到 共享 标签,勾选 允许其他网络用户通过此计算机的 Internet 连接来连接
    • 家庭网络连接 中选择 vEthernet (WSL)
  2. 重启 WSL2:

    powershell
    wsl --shutdown wsl
  3. 验证连接:

    • 在 WSL2 内部:
      sh
      ping google.com curl ifconfig.me

方法 4:修改 WSL 配置文件(.wslconfig

适用版本: Windows 11、Windows 10(WSL 版本较新)

  1. 编辑 .wslconfig 文件:

    • 打开记事本编辑:
      notepad %UserProfile%\.wslconfig
      
    • 添加以下内容:
      ini
      [wsl2] networkingMode = mirrored
  2. 重启 WSL2:

    powershell
    wsl --shutdown wsl
  3. 验证连接: 在 WSL2 内部:

    sh
    curl ifconfig.me

    确认 IP 地址为 VPN 出口 IP。


总结与建议:

  • 优先使用 mirrored 模式: 最稳定且无需额外配置,适用于 Windows 11 23H2 及以上版本。
  • NAT 手动配置路由: 适用于不支持 mirrored 模式的版本,但需要手动设置路由。
  • 网络共享方式: 适用于所有版本,但可能影响本地网络性能。

注意:

  • 如果 WSL2 无法访问互联网,请确认 Windows 防火墙未阻止 WSL2 的流量。
  • 如果修改 .wslconfig 文件后仍然无法连接,请检查 WSL2 和 Windows 的网络适配器配置。

根据你的 Windows 版本和网络环境,选择最合适的方法进行配置。

Question

将pip下载配置,默认设置为国内某些下载速度较快的镜像资源

Answer

要将 pip 的默认下载源设置为国内镜像源,以提高下载速度,可以通过修改配置文件来实现。这样每次使用 pip 时,就会自动使用配置好的国内镜像,而不需要每次手动指定。


步骤 1:确定配置文件路径

pip 的配置文件路径根据操作系统不同而不同:

  • Windows: %APPDATA%\pip\pip.ini
  • Linux/macOS/WSL: ~/.pip/pip.conf

步骤 2:修改配置文件

  1. 创建或编辑配置文件

    Windows:

    • 打开命令行(cmd)并运行:
      cmd
      notepad %APPDATA%\pip\pip.ini
      如果文件不存在,会自动创建。

    Linux/macOS/WSL:

    • 在终端运行:
      bash
      mkdir -p ~/.pip nano ~/.pip/pip.conf
  2. 添加镜像源配置

    将以下内容粘贴到配置文件中。你可以根据需要选择合适的镜像源。

    推荐国内镜像源列表:

    • 阿里云: https://mirrors.aliyun.com/pypi/simple/
    • 清华大学: https://pypi.tuna.tsinghua.edu.cn/simple/ (推荐)
    • 中国科技大学: https://pypi.mirrors.ustc.edu.cn/simple/
    • 豆瓣 (现在为阿里提供): https://pypi.doubanio.com/simple/

    配置文件示例 (推荐使用清华源):

    ini
    [global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple trusted-host = pypi.tuna.tsinghua.edu.cn timeout = 600

步骤 3:验证配置

配置完成后,在终端运行以下命令以验证是否生效:

bash
pip config list

输出中应该能看到类似:

bash
global.index-url='https://pypi.tuna.tsinghua.edu.cn/simple'

然后测试安装包速度:

bash
pip install requests

如果下载速度显著提升,则说明配置成功。


其他命令行临时使用方法(可选)

如果你不想更改默认配置,也可以在安装时临时指定镜像源:

bash
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests

常见问题排查

  1. SSL 报错问题:

    • 确保 trusted-host 被正确配置,或使用 --trusted-host 参数。
    • 示例:
      bash
      pip install requests --trusted-host pypi.tuna.tsinghua.edu.cn
  2. 网络仍然很慢:

    • 检查防火墙或 VPN 是否影响了网络。
    • 尝试切换其他国内镜像源。

建议使用清华镜像源,因为它更新频率高且稳定。
✅ 完成后重新打开终端,pip 会自动应用新的镜像源。

Share this Q&A