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

2024-09-02 03:04

本文主要是介绍240901-通过端口转发在局域网内访问WLS2中Gradio的Web应用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

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 eth0valid_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

在这里插入图片描述

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

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

这篇关于240901-通过端口转发在局域网内访问WLS2中Gradio的Web应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1128813

相关文章

Linux中修改Apache HTTP Server(httpd)默认端口的完整指南

《Linux中修改ApacheHTTPServer(httpd)默认端口的完整指南》ApacheHTTPServer(简称httpd)是Linux系统中最常用的Web服务器之一,本文将详细介绍如何... 目录一、修改 httpd 默认端口的步骤1. 查找 httpd 配置文件路径2. 编辑配置文件3. 保存

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

Python使用Tkinter打造一个完整的桌面应用

《Python使用Tkinter打造一个完整的桌面应用》在Python生态中,Tkinter就像一把瑞士军刀,它没有花哨的特效,却能快速搭建出实用的图形界面,作为Python自带的标准库,无需安装即可... 目录一、界面搭建:像搭积木一样组合控件二、菜单系统:给应用装上“控制中枢”三、事件驱动:让界面“活”

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

SpringBoot项目Web拦截器使用的多种方式

《SpringBoot项目Web拦截器使用的多种方式》在SpringBoot应用中,Web拦截器(Interceptor)是一种用于在请求处理的不同阶段执行自定义逻辑的机制,下面给大家介绍Sprin... 目录一、实现 HandlerInterceptor 接口1、创建HandlerInterceptor实

Python Flask 库及应用场景

《PythonFlask库及应用场景》Flask是Python生态中​轻量级且高度灵活的Web开发框架,基于WerkzeugWSGI工具库和Jinja2模板引擎构建,下面给大家介绍PythonFl... 目录一、Flask 库简介二、核心组件与架构三、常用函数与核心操作 ​1. 基础应用搭建​2. 路由与参

Spring Boot中的YML配置列表及应用小结

《SpringBoot中的YML配置列表及应用小结》在SpringBoot中使用YAML进行列表的配置不仅简洁明了,还能提高代码的可读性和可维护性,:本文主要介绍SpringBoot中的YML配... 目录YAML列表的基础语法在Spring Boot中的应用从YAML读取列表列表中的复杂对象其他注意事项总

电脑系统Hosts文件原理和应用分享

《电脑系统Hosts文件原理和应用分享》Hosts是一个没有扩展名的系统文件,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应... Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应

CSS 样式表的四种应用方式及css注释的应用小结

《CSS样式表的四种应用方式及css注释的应用小结》:本文主要介绍了CSS样式表的四种应用方式及css注释的应用小结,本文通过实例代码给大家介绍的非常详细,详细内容请阅读本文,希望能对你有所帮助... 一、外部 css(推荐方式)定义:将 CSS 代码保存为独立的 .css 文件,通过 <link> 标签