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

news2024/11/15 8:10:48

在这里插入图片描述

A. 需求描述

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

B. 方法介绍

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

  1. 确保WSL2中Gradio服务可外部访问:

    • 在WSL2中启动 Gradio 网络应用时,您已经设置了 server_name='0.0.0.0',这使得 Gradio 应用能够接受来自所有网络接口的连接。
    • 确保 Gradio 服务启动时指定的端口(例如默认的 7860)是开放的。
  2. 检查WSL2的IP地址:

    • 在WSL2终端中,使用以下命令获取 WSL2 的 IP 地址:
      ip addr show eth0
      
    • 在输出中,查找类似于 inet 192.168.x.x 的条目,这个 192.168.x.x 就是 WSL2 的 IP 地址。
  3. 在Windows中配置防火墙:

    • 确保 Windows 防火墙允许 WSL2 通过指定的端口进行连接。
    • 可以通过以下步骤手动添加防火墙规则:
      1. 打开“控制面板”,选择“系统和安全”。
      2. 选择“Windows Defender 防火墙”。
      3. 点击左侧的“高级设置”。
      4. 在“入站规则”中,选择“新建规则”。
      5. 选择“端口”,然后下一步。
      6. 选择“TCP”,并输入 Gradio 使用的端口号(例如 7860)。
      7. 选择“允许连接”,然后完成。
  4. 访问Gradio应用:

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

这将允许另一台电脑通过同一个局域网访问您在 WSL2 中运行的 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)。
  2. 检查 Windows 防火墙设置:

    • 确保 Windows 防火墙允许通过指定的端口(例如 7860)进行外部连接。如果访问有问题,请按照我之前提到的步骤检查或调整防火墙设置。
  3. 确保两台电脑在同一局域网内:

    • 虽然 WSL2 的 IP 地址可能是虚拟的,但它应允许同一网络内的设备访问。如果无法访问,请确认两台设备是否都连接到同一网络,并确保没有 VPN 或其他网络隔离。
  4. 测试网络连通性:

    • 在另一台电脑上,使用 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
  2. 设置端口转发:

    • 在 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 应用运行的端口。
  3. 访问 Gradio 应用:

    • 在其他设备上,使用 Windows 主机的 IP 地址访问 Gradio 应用,例如:
      http://<Windows主机的IP地址>:7860
      
2. 检查防火墙规则

确保 Windows 防火墙允许从外部网络通过您设置的端口(如 7860)进行访问。如果遇到连接问题,请检查并允许入站规则。

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

在这里插入图片描述

E. 持久储存

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

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

删除端口转发规则

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

netsh interface portproxy delete v4tov4 listenport=7860 listenaddress=0.0.0.0

这里的 listenportlistenaddress 应与之前设置时的值一致。

查看当前的端口转发规则

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

netsh interface portproxy show all

在这里插入图片描述

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2096119.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32H750+CubeIDE+FreeRTOS+ETH(LAN8720A)+LWIP

文章目录 STM32H750CubeIDEFreeRTOSETH(LAN8720A)LWIPCubeIDE配置RCC时钟树SYSETH串口MPUFreeRTOSLWIPGPIO然后就可以点击生成代码了&#xff01; 代码修改printf重定向补充硬件复位更改补充链接文件然后就可以编译下载ping成功了&#xff01; socket网络编程 STM32H750CubeIDE…

Freepik发布号称目前最强AI图像生成器Mystic

Freepik 于2024年8月27日正式推出了新的人工智能图像模型 “Mystic”&#xff0c;并号称是目前最强的AI图像生成器&#xff0c;本文从介绍Mystic开始&#xff0c;剖析其技术细节&#xff0c;功能特色&#xff0c;收费价格&#xff0c;并与当前市场上领先的 Midjourney V6.1 进行…

【dotnet】vscode配置dotnet开发环境

下载dotnet sdk https://dotnet.microsoft.com/en-us/download/visual-studio-sdks下载完安装&#xff0c;安装完毕在cmd中输入以下代码 dotnet出现以下结果代表安装完毕 在vscode终端中输入以下创建web项目 dotnet new webapp --output aspnetcoreapp --no-https上述命令…

[Jsprit]Jsprit学习笔记-vrp问题的求解

目录 一、整体的求解逻辑主要步骤 二、搜索策略的选择三、搜索策略执行解1、解的选择2、解的破坏3、解的接受3.1 新解的接受策略 一、整体的求解逻辑 下面是Jsprit实现的代码部分 public Collection<VehicleRoutingProblemSolution> searchSolutions() {logger.info(&q…

基于3D Slicer与matlab平台的图像引导介入手术-demo

1.实现手术手术导航的基本框架 2、基本协议框架 3、演示视频 DemoWithChinse2

unordered系列容器的实现

1. unordered_set与unordered_map的结构 我们知道STL中的unordered_set与unordered_map底层就是一个开散列的哈希表 1.1 unordered_set的结构 我们知道unordered_set其实就是K模型&#xff0c;所以unordered_set容器对红黑树的封装如下&#xff1a; template<class k, cl…

VTK随笔十二:体绘制(体绘制管线、vtkVolumeMapper、vtkVolume、不规则网格数据体绘制技术 )

体绘制&#xff0c;有时又称作三维重建(区别于投影图像的三维重建)&#xff0c;是一种直接利用体数据来生成二维图像的绘制技术。与面绘制不同&#xff0c;体绘制技术不需要提取体数据内部的等值面&#xff0c;它是一个对三维体数据进行采样和合成的过程。体绘制能够通过设置不…

【深度学习入门】计算机视觉任务

一、引言 对于神经网络&#xff0c;可以把中间的隐藏层看作一个黑盒子&#xff0c;这个黑盒子能自动选择如何提取特征&#xff0c;这不同于传统机器学习的人工操作&#xff0c;它的实现原理也是我们学习深度学习的重点。本文章以计算机视觉任务中的图像分类任务为例子&#xff…

zookeeper 集群搭建 及启动关闭脚本

1准备奇数台机子3&#xff0c;5&#xff0c;7 我准备的是三台 192.168.58.81 zookeeper-1 192.168.58.82 zookeeper-2 192.168.58.83 zookeeper-3 下载jdk 把他配置环境变量并检查是否是环境变量 echo $JAVA_HOME cd /opt/software wget http://mirrors.hust.edu.…

docker部署project-exam-system项目

8月30日笔记 项目实战&#xff1a;使用docker部署project-exam-system 1、背景&#xff1a; 使用基础的docker指令来创建镜像&#xff0c;实现项目的发布&#xff0c;使用Dockderfile&#xff0c;docker compose编排容器。 2、环境准备&#xff1a; &#xff08;1&#x…

sts 0/1 没有 pod生成 -> kube-controller-manager没了

kube-controller-manager.yaml 在 nerdctl ps -a 看不到 journalctl -xu kubelet > /tmp/kubelet.log /tmp/kubelet.log 老6

OpenSetting组件的用法

文章目录 1. 概念介绍2. 使用方法与主要功能2.1 使用方法2.2 主要功能 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何获取App自身信息"相关的内容&#xff0c;本章回中将介绍一个三方包:open_setting.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念…

JavaWeb:实验二JSP表单开发及访问数据库

一、实验目的 1&#xff0e;掌握JSP表单的开发方法。 2&#xff0e;熟悉JDBC技术和使用JDBC连接各种数据库。 二、实验性质 综合性实验 三、实验内容 实现注册与登录功能&#xff1a; 1.创建一个数据库&#xff0c;在数据库建立用户表。&#xff08;5分&#xff09; 2…

城市管理违规行为智能识别 Task3学习心得

本次学习主要针对数据集增强和模型预测 1、数据增强&#xff1a; 1&#xff09;将四张训练图像组合成一张&#xff0c;增加物体尺度和位置的多样性。 2&#xff09;复制一个图像的随机区域并粘贴到另一个图像上&#xff0c;生成新的训练样本 3&#xff09;图像的随机旋转、…

day25 Java基础——面向对象两万字详解!(纯干货)

day25 Java基础——面向对象两万字详解&#xff01;&#xff08;纯干货&#xff09; 文章目录 day25 Java基础——面向对象两万字详解&#xff01;&#xff08;纯干货&#xff09;1. 类与对象的关系类&#xff08;Class&#xff09;对象&#xff08;Object&#xff09;类与对象…

gitee绑定公钥后依旧无法使用_gitee push添加公钥无效

解决&#xff1a; 步骤按照官网操作即可&#xff1a;gitee官方说明 看看远程地址是否使用的http模式&#xff0c;是的话换ssh模式

Adobe Acrobat Reader的高级功能详解

​ 大家好&#xff0c;我是程序员小羊&#xff01; 前言&#xff1a; Adobe Acrobat Reader是广泛使用的PDF查看器&#xff0c;其不仅可以用于查看和打印PDF文件&#xff0c;还具有一些高级功能&#xff0c;可以提升用户的PDF文档处理效率。以下是对Adobe Acrobat Reader的一些…

RH850系列芯片深度剖析 1.7-启动流程解析

RH850系列芯片深度剖析 1.7-启动流程解析 文章目录 RH850系列芯片深度剖析 1.7-启动流程解析一、简介二、启动相关文件说明三、启动相关的段四、启动流程4.1 启动文件启动4.1.1 寄存器初始化4.1.2 时钟初始化4.1.3 模块Standby寄存器初始化4.1.4 启动从核4.1.5 硬件初始化4.1.5…

vector模拟实现迭代器失效

目录 1.vector和vector> 1.1两者的区别 1.2遍历的方法 2.vector模拟实现的准备 3.reserve出现的问题及解决方案 4.遍历vector的三种方式 5.关于typename的使用 6.insert导致的迭代其实失效问题 6.1因为扩容导致的迭代器失效 6.2因为插入数据倒置的迭代器失效 1.vec…

【精彩回顾·成都】成都 UG 生成式 AI 工作坊:AI 革命下的商业模式创新!

文章目录 前言一、活动介绍二、精彩分享内容及活动议程2.1、亚马逊云科技社区情况和活动介绍2.2、《浅谈 AIGC 商业化》2.3、《AI 浪潮下的产品落地》2.4、现场互动情况2.5、休息茶歇时间2.6、《AI 赋能商业革新&#xff1a;智能化转型的策略与实践》2.7、《动手实践&#xff1…