将 POSTMAN 流量从 Windows 路由到 WSL2

将 POSTMAN 流量从 Windows 路由到 WSL2

我在 Windows Subsystem for Linux 下运行 Ubuntu 20.04。我在 Ubuntu 内部运行 VPN 来访问远程系统上的 API。

此 VPN 仅适用于 Linux 客户端应用。我想在 Windows 中使用 Postman 尝试 API,但这在 WSL2 和 VPN 网络“之外”。

由于我无法在 Windows 中安装 VPN,并且 Postman 无法在 Linux/WSLg 下运行,我该如何将 Windows Postman 请求流量重新路由到 WSL2?

答案1

我想我可能会回答你的问题两次。这一次是正交答案。另一次,当我弄清楚(或者如果其他人弄清楚)时,将解决实际的网络问题。

但对于这个答案,我建议你可能不会真正需要如果您的 API 基于 REST,则可以使用 Ubuntu/WSL2 上的 Postman。使用实际的 Linux 工具,您的需求可能会在 Ubuntu 中得到满足(并且可能得到更好的满足)。

我以前用过 Postman,但自从使用 WSL 以来,我个人真的没有发现它的需求。这并不是说你的用例可能不同,或者你可能只是因为熟悉 Postman 而更喜欢它。这没什么不对,我们仍然会看看是否能找到答案。

但你可能会考虑:

  • HTTPie用于与您的 API 交互的 REST 操作。它是curl或 的更丰富的替代方案wget
  • jq——解析JSON数据的标准而强大的工具。
  • 努壳用于解析 JSON 和许多其他结构化数据类型。强烈推荐——我最近多次使用它来处理堆栈交换 API,而且我不确定我是否还会需要jq它。

但是,如果您的 API 是基于 GraphQL 的,那么我不确定目前是否能提供比 Postman 更好的替代方案。 牵牛星看起来很有希望,但它似乎通常作为 Snap 安装在 Linux 上(在 WSL2 下运行不佳)。

答案2

对于这种情况,我通常更喜欢使用ssh隧道/转发流量。既然你在评论中回答说你可以连接西弗吉尼亚海岸在 VPN 处于活动状态时在 Windows 中,最简单的方法是在 Windows 中设置 OpenSSH 服务器。

您将找到完整的说明这里,但通常只需执行以下步骤(从管理员 PowerShell 中):

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'
if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue | Select-Object Name, Enabled)) {
    Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..."
    New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
} else {
    Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists."
}

为了执行下一个命令,我们假设:

  • 您的 API 服务器是10.0.0.5(仅可通过 VPN 访问)
  • 您的 API 正在远程服务器的 8000 端口上运行
  • 您希望在 Postman 中通过端口 80 访问该 API
  • 您的 Windows 用户名是heydude101

完成后,在 Ubuntu/WSL2(假设是 Bash)中发出以下命令:

ssh -R 80:10.0.0.5:8000 heydude101@$(hostname).local

使用您的 Windows 密码登录。

  • `$(hostname).local 将使用 mDNS 找到 Windows SSH 服务器的正确地址,我将在这个答案

  • 设置-R远程转发,以便 Windows OpenSSH 服务器开始转发连接:

    • localhost:80
    • 通过 Ubuntu
    • 到远程 API 服务器

所以现在,连接 Postmanlocalhost:80应该允许您访问 API。

如果 API 服务器对特定主机名有要求,那么您可以在 Windows hosts 文件中进行设置。只需将主机名映射到,127.0.0.1即可在本地解析。

相关内容