Windows wsl连接网络代理

本文介绍了如何在WSL2环境下设置网络代理,以便在Windows和Linux之间进行通信。内容包括从Windows通过localhost访问Linux应用,从Linux通过主机IP访问Windows应用,以及设置代理以允许跨网络连接。文中还提到了WSL2对IPv6的支持限制以及如何在.bashrc中配置代理函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用 WSL 访问网络应用程序 | Microsoft Learn

为 WSL2 一键设置代理 - 知乎 (zhihu.com)

介绍

本文介绍开通了Windows WSL子系统之后,怎么在两者之间进行网络通讯;对在windows系统中开启了代理以后,如何在WSL中设置网络代理问题进行了详细介绍。

从 Windows (localhost) 访问 Linux 网络应用

如果要在 Linux 分发版中构建网络应用(例如,在 NodeJS 或 SQL server 上运行的应用),可以使用 localhost 从 Windows 应用(如 Microsoft Edge 或 Chrome Internet 浏览器)访问它(就像往常一样)。

从 Linux(主机 IP)访问 Windows 网络应用

如果要从 Linux 分发版(即 Ubuntu)访问 Windows 上运行的网络应用(例如,在 NodeJS 或 SQL 服务器上运行的应用),则需要使用主机的 IP 地址。 虽然这不是一种常见方案,但你可以执行以下步骤来使其可行。

  1. 通过在 Linux 分发版中运行以下命令来获取主机的 IP 地址:cat /etc/resolv.conf
  2. 复制以下词语后面的 IP 地址:nameserver
  3. 使用复制的 IP 地址连接到任何 Windows 服务器。

下图显示了一个示例,该示例说明如何通过 curl 连接到在 Windows 中运行的 Node.js 服务器。

 

通过远程 IP 地址进行连接

当使用远程 IP 地址连接到应用程序时,它们将被视为来自局域网 (LAN) 的连接。 这意味着你需要确保你的应用程序可以接受 LAN 连接。

例如,你可能需要将应用程序绑定到 0.0.0.0 而非 127.0.0.1。 以使用 Flask 的 Python 应用为例,可以通过以下命令执行此操作:app.run(host='0.0.0.0')。 进行这些更改时请注意安全性,因为这将允许来自你的 LAN 的连接。

从局域网 (LAN) 访问 WSL 2 分发版

当使用 WSL 1 分发版时,如果计算机设置为可供 LAN 访问,那么在 WSL 中运行的应用程序也可供在 LAN 中访问。

这不是 WSL 2 中的默认情况。 WSL 2 有一个带有其自己独一无二的 IP 地址的虚拟化以太网适配器。 目前,若要启用此工作流,你需要执行与常规虚拟机相同的步骤。 (我们正在寻找改善此体验的方法。)

下面是一个示例 Windows 命令,用于添加侦听主机上的端口 4000 的端口代理并将其连接到端口 4000,并使用 IP 地址 192.168.101.100 连接到 WSL 2 VM。

netsh interface portproxy add v4tov4 listenport=4000 listenaddress=0.0.0.0 connectport=4000 connectaddress=192.168.101.100

IPv6 访问

根据微软的官方文档,目前还不支持IPv6访问

WSL2 分发版目前无法访问纯 IPv6 地址。 我们正在致力于添加此功能。

代理配置

.bashrc 里面写入如下内容:

# 获取windows主机IP
alias nameserver_ip="grep nameserver /etc/resolv.conf | sed 's/nameserver //'"

function set_proxy() {
    # local HOST="${1:-192.168.0.101}"
    local HOST="${1:-$(nameserver_ip)}"
    local PORT="${2:-7890}"
    export http_proxy="http://${HOST}:${PORT}"
    export https_proxy="${http_proxy}"
    echo "HTTP proxy set to ${http_proxy}"
    echo "HTTPS proxy set to ${https_proxy}"
}

function unset_proxy() {
    unset http_proxy https_proxy
    echo "HTTP and HTTPS proxies unset"
}

要使用的时候,运行 set_proxy ,当然,需要先允许代理软件接受来自局域网的连接。

set_proxy 是采用默认的设置,即IP地址和端口名都是默认的,也可以手动传入代理的IP地址和端口名,比如 "set_proxy 192.168.0.78 65550"。设置完成之后,可以使用ping命令测试一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

boldyoungster

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值