宝塔用户_bkolhc 发表于 2025-2-27 11:57:49

在纯 IPv6 网络环境下,宝塔面板的 Java 项目管理功能无法...

本帖最后由 宝塔用户_bkolhc 于 2025-2-27 11:59 编辑

基本信息
[*]问题类型:功能性 BUG
[*]影响模块:Java 项目管理
[*]影响版本:9.4.0
[*]问题等级:中等
[*]环境依赖:纯 IPv6 网络环境
问题描述在纯 IPv6 网络环境下,宝塔面板的 Java 项目管理功能无法正常使用,会出现网络不可达错误。这是由于面板在进行网络检测时仅使用 IPv4 地址(8.8.8.8),导致在纯 IPv6 环境下无法建立连接。环境信息
[*]操作系统:Ubuntu 20.04.1 LTS (Focal Fossa) x86_64
[*]Python 版本:3.7.9
[*]宝塔面板版本:9.4.0
[*]网络环境:纯 IPv6,无 IPv4 地址配置
错误日志

REQUEST_DATE: 2025-02-17 07:26:11
VERSION: Ubuntu 20.04.1 LTS (Focal Fossa) x86_64(Py3.7.9) - 9.4.0
REMOTE_ADDR: 2409:895a:2437:11ab:c856:5147:f685:9efb
REQUEST_URI: POST /mod/java/project/project_list?
REQUEST_FORM: {'data': '{"search":"","p":1,"limit":10,"type_id":""}'}
USER_AGENT: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0

Traceback (most recent call last):
File "/www/server/panel/BTPanel/__init__.py", line 2541, in publicObject
    res = run_obj.run(toObject, defs, get)
File "/www/server/panel/BTPanel/__init__.py", line 2488, in run
    result = getattr(toObject, get.action)(get)
File "/www/server/panel/mod/modController.py", line 89, in model
    raise public.PanelError(result['msg'])
public.PanelError: OSError: Network is unreachable

问题定位
[*]错误触发位置:

[*]文件路径:/www/server/panel/mod/project/java/springboot_parser.py
[*]调用链:public.get_network_ip() -> 尝试连接 8.8.8.8:80
[*]根本原因:

[*]网络检测方法仅支持 IPv4
[*]在纯 IPv6 环境下无法建立 IPv4 连接
[*]缺少 IPv6 备选方案
建议改进
[*]网络检测逻辑改进:

[*]优先使用 IPv6 地址(如 2001:4860:4860::8888)进行连接测试
[*]增加 IPv4/IPv6 双栈支持
[*]添加合适的失败回退机制
[*]代码修改建议:

def get_network_ip():
    try:
      # 优先尝试 IPv6 连接
      s = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
      s.connect(('2001:4860:4860::8888', 80))
      ip = s.getsockname()
      s.close()
      return ip
    except:
      try:
            # 回退到 IPv4
            s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
            s.connect(('8.8.8.8', 80))
            ip = s.getsockname()
            s.close()
            return ip
      except:
            return '::1'# 返回 IPv6 回环地址

影响范围

[*]受影响的用户群:

[*]使用纯 IPv6 网络的服务器用户
[*]运行在 IPv6 优先网络环境的用户
[*]受影响的功能:

[*]Java 项目管理模块
[*]可能影响其他依赖网络检测的功能

页: [1]
查看完整版本: 在纯 IPv6 网络环境下,宝塔面板的 Java 项目管理功能无法...