sing-box icon indicating copy to clipboard operation
sing-box copied to clipboard

通过http_proxy访问http服务器时, 请求完成后代理连接关闭, http连接没有关闭

Open yyjdelete opened this issue 1 year ago • 1 comments

操作系统

Windows

系统版本

win11 preview(27723)

安装类型

sing-box 原始命令行程序

如果您使用图形客户端程序,请提供该程序版本。

v2rayN 6.60

版本

sing-box version 1.10.0-beta.12

Environment: go1.23.2 windows/amd64
Tags: with_gvisor,with_quic,with_dhcp,with_wireguard,with_ech,with_utls,with_reality_server,with_acme,with_clash_api
Revision: e68a9e623f09840552554ea15e4973b668a9d648
CGO: disabled

描述

通过sing-box的http代理访问其他http站点(直连, 没试过走代理的时候会不会)时, http请求完成, 且代理连接关闭后, 到该http站点的请求连接不会被关闭, 长时间运行后造成系统端口耗尽触发拒绝服务 如果保持连接是为了复用, 那么新的http请求应该继续使用之前建立的连接, 否则连接应该是跟随http代理请求的关闭一同关闭的

我本地的情况就是因为之前在环境变量里面设置了代理, 造成了v2n访问clash_api的时候会走代理触发这个bug, 最后卡了几万个连接在那里, 把127.0.0.1上的端口都用完了, 其他程序都无法开启或监听新的socket

测试配置文件

{
  "inbounds": [
    {
      "type": "http",
      "tag": "http",
      "listen": "::",
      "listen_port": 56501,
      "domain_strategy": "ipv4_only",
      "sniff": true,
      "sniff_override_destination": true
    }
  ],
  "route": {
    "rules": [
      {
        "outbound": "direct",
        "port_range": [
          "0:65535"
        ]
      }
    ]
  },
  "experimental": {
    "clash_api": {
      "external_controller": "127.0.0.1:56506"
    }
  }
}

重现方式

  1. sing-box run -c test.json, 测试配置文件中上面
  2. 在git bash中执行export http_proxy=http://127.0.0.1:56501(用浏览器的话, 每次请求关下浏览器也行, 不然浏览器每次都是复用的同一个连接)
  3. 在同一个bash中重复执行curl http://127.0.0.1:56506/connections -s(其他本地或远程的http站点也行), 可以通过直接对比返回的json连接数据或netstat或windows的资源监视器直接观察到打开的到56501端口的连接越来越多

日志

No response

支持我们

完整性要求

  • [X] 我保证阅读了文档,了解所有我编写的配置文件项的含义,而不是大量堆砌看似有用的选项或默认值。
  • [X] 我保证提供了可以在本地重现该问题的服务器、客户端配置文件与流程,而不是一个脱敏的复杂客户端配置文件。
  • [X] 我保证提供了可用于重现我报告的错误的最简配置,而不是依赖远程服务器、TUN、图形界面客户端或者其他闭源软件。
  • [X] 我保证提供了完整的配置文件与日志,而不是出于对自身智力的自信而仅提供了部分认为有用的部分。

yyjdelete avatar Oct 13 '24 03:10 yyjdelete

@yyjdelete

你可以参考这个修改自行编译 sing-box 测试一下: https://github.com/SagerNet/sing/pull/73

降低 IdleConnTimeout 后,http(s) 连接的回收和复用会更积极一点,可以避免连接数过多。

tisyang avatar Oct 17 '24 01:10 tisyang