问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

通过端口转发在局域网内访问WSL2中Gradio的Web应用

创作时间:
作者:
@小白创作中心

通过端口转发在局域网内访问WSL2中Gradio的Web应用

引用
CSDN
1.
https://blog.csdn.net/qq_33039859/article/details/141791260

本文将详细介绍如何在局域网内通过端口转发访问WSL2中运行的Gradio Web应用。文章将从需求描述、方法步骤、网络地址检查、连接问题解决方案以及端口转发的持久化设置等多个方面进行讲解,帮助读者快速掌握这一实用技能。

A. 需求描述

两台不同的电脑共用同一个路由器,其中一台电脑是Windows,上面安装了WSL2,你在WSL2中启动了一个Gradio的网络应用,并设置了server_name='0.0.0.0',另外一台电脑如何访问该网络应用。

B. 方法介绍

要使另一台电脑访问在WSL2中启动的 Gradio 网络应用,可以按照以下步骤操作:

  1. 确保WSL2中Gradio服务可外部访问:
  • 在WSL2中启动 Gradio 网络应用时,你已经设置了
    server_name='0.0.0.0'
    ,这使得 Gradio 应用能够接受来自所有网络接口的连接。
  • 确保 Gradio 服务启动时指定的端口(例如默认的
    7860
    )是开放的。
  1. 检查WSL2的IP地址:
  • 在WSL2终端中,使用以下命令获取 WSL2 的 IP 地址:
ip addr show eth0
  • 在输出中,查找类似于
    inet 192.168.x.x
    的条目,这个
    192.168.x.x
    就是 WSL2 的 IP 地址。
  1. 在Windows中配置防火墙:
  • 确保 Windows 防火墙允许 WSL2 通过指定的端口进行连接。
  • 可以通过以下步骤手动添加防火墙规则:
  1. 打开“控制面板”,选择“系统和安全”。

  2. 选择“Windows Defender 防火墙”。

  3. 点击左侧的“高级设置”。

  4. 在“入站规则”中,选择“新建规则”。

  5. 选择“端口”,然后下一步。

  6. 选择“TCP”,并输入 Gradio 使用的端口号(例如
    7860
    )。

  7. 选择“允许连接”,然后完成。

  8. 访问Gradio应用:
    ⚠️ 需要提前在Windows上设置Windows到WSL2的端口转发(见后文: D. 连接问题),然后通过Windows的ip地址访问
    理论上

  • 在另一台电脑上,打开浏览器并访问:
http://<WSL2的IP地址>:<Gradio端口>
  • 例如,如果 WSL2 的 IP 地址是
    192.168.1.100
    且 Gradio 使用默认端口
    7860
    ,则在浏览器中访问:
http://192.168.1.100:7860

这将允许另一台电脑通过同一个局域网访问你在 WSL2 中运行的 Gradio 网络应用。如果遇到访问问题,可以检查防火墙设置或网络连接是否正确。

实际上

  • 在另一台电脑上,打开浏览器并访问:
http://<Windows的IP地址>:<Gradio端口>

C. 网络地址

(base) lgk@WIN-20240401VAM:~$ ip addre show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    ...
    inet 123.45.67.89/10 brd 271.92.97.552 scope global eth0
       valid_lft forever preferred_lft forever
    ...

根据你提供的
ip addr show eth0
的输出,你的 WSL2 的 IP 地址是
123.45.67.89
。你可以按照以下步骤在另一台电脑上访问在 WSL2 中运行的 Gradio 网络应用:

  1. 访问 Gradio 应用:
  • 在另一台电脑上,打开浏览器并访问以下 URL:
http://123.45.67.89:7860
  • 请将
    7860
    替换为你在启动 Gradio 时指定的端口号(如果不是默认的
    7860
    )。
  1. 检查 Windows 防火墙设置:
  • 确保 Windows 防火墙允许通过指定的端口(例如
    7860
    )进行外部连接。如果访问有问题,请按照我之前提到的步骤检查或调整防火墙设置。
  1. 确保两台电脑在同一局域网内:
  • 虽然 WSL2 的 IP 地址可能是虚拟的,但它应允许同一网络内的设备访问。如果无法访问,请确认两台设备是否都连接到同一网络,并确保没有 VPN 或其他网络隔离。
  1. 测试网络连通性:
  • 在另一台电脑上,使用
    ping
    命令测试与 WSL2 的连接:
ping 123.45.67.89
  • 如果
    ping
    成功,则网络是连通的。如果失败,请检查网络设置和防火墙规则。

这些步骤应该帮助你在另一台电脑上成功访问运行在 WSL2 中的 Gradio 网络应用。如果仍然无法访问,请检查网络连接和设置是否正确。

D. 连接问题

(base) liuguokai@LiuGuokais-Mac-mini ~ % ping 123.45.67.89
PING 123.45.67.89 (123.45.67.89): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3
Request timeout for icmp_seq 4
Request timeout for icmp_seq 5
Request timeout for icmp_seq 6
Request timeout for icmp_seq 7

从你提供的
ping
输出来看,你的 Mac 电脑无法与 WSL2 中的 IP 地址
123.45.67.89
建立连接。这是因为 WSL2 使用 NAT(网络地址转换)网络模式,该模式使 WSL2 的 IP 地址仅在 Windows 主机上可访问,而无法直接从其他设备访问。

要使 WSL2 中运行的 Gradio 应用能够被其他设备访问,你需要进行以下调整:

  1. 使用 Windows 主机 IP 和端口转发
    你可以通过 Windows 主机的 IP 地址进行端口转发,以使 WSL2 的服务对外可访问。

步骤:

  1. 获取 Windows 主机的 IP 地址:
  • 在 Windows 命令提示符中,运行以下命令以获取主机的 IP 地址:
ipconfig
  • 找到“以太网适配器”或“无线局域网适配器”的 IP 地址,例如
    192.168.x.x
  1. 设置端口转发:
  • 在 Windows 上,以管理员身份打开 PowerShell,并运行以下命令来设置端口转发:
netsh interface portproxy add v4tov4 listenport=7860 listenaddress=0.0.0.0 connectport=7860 connectaddress=123.45.67.89
  • 这里,
    listenport
    是你希望外部访问的端口,
    connectport
    是 WSL2 中 Gradio 应用运行的端口。
  1. 访问 Gradio 应用:
  • 在其他设备上,使用 Windows 主机的 IP 地址访问 Gradio 应用,例如:
http://<Windows主机的IP地址>:7860
  1. 检查防火墙规则
    确保 Windows 防火墙允许从外部网络通过你设置的端口(如 7860)进行访问。如果遇到连接问题,请检查并允许入站规则。

通过上述步骤,你应该能够在 Mac 或其他设备上访问在 WSL2 中运行的 Gradio 网络应用。

E. 持久储存

在 PowerShell 中使用
netsh interface portproxy
命令设置的端口转发规则是持久性的。这些规则会在系统重启后继续生效,因为它们被存储在 Windows 的注册表中。

如果需要删除或修改这些规则,可以通过以下命令进行操作:

删除端口转发规则
如果你想删除之前设置的端口转发规则,可以使用以下命令:

netsh interface portproxy delete v4tov4 listenport=7860 listenaddress=0.0.0.0

这里的
listenport

listenaddress
应与之前设置时的值一致。

查看当前的端口转发规则
要查看当前系统中所有的端口转发规则,可以运行:

netsh interface portproxy show all

这个命令会列出所有已经设置的端口转发规则及其详情。

这些命令允许你管理系统中持久性的端口转发设置。如果需要调整或移除规则,可以通过适当的命令进行操作。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号