You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Traefik替代HAProxy实现FTPS负载均衡的TLS卸载问题求助

问题分析

日志中的错误 tls: client requested unsupported application protocols ([ftp]) 是因为隐式FTPS连接时,Filezilla客户端会在TLS握手阶段通过ALPN扩展声明要使用ftp应用层协议,但Traefik默认的TCP TLS配置未启用该协议支持,导致握手失败。

修复步骤

1. 修正动态配置的语法错误

ftps_dynamic_config.yml 里的 hi_ftps_connect:* 存在语法错误,多余的星号需要删除,同时为TLS配置添加ALPN协议支持:

hi_ftps_connect:
  rule: "HostSNI(``)"
  entryPoints:
    - "ftps"
  service: "ssl_hi_ftps_connect"
  tls:
    alpnProtocols: ["ftp"]

2. 为所有FTPS相关TCP路由器添加ALPN支持

对控制端口和所有数据端口的TCP路由器,在tls块中添加alpnProtocols: ["ftp"],以匹配客户端的协议请求。示例数据端口路由器修改后:

hi_ftps_passive_1:
  rule: "HostSNI(`*`)"
  entryPoints:
    - "ftps_data_1"
  service: "ssl_hi_ftps_passive_1"
  tls:
    alpnProtocols: ["ftp"]

所有7个数据端口的路由器都需要做此修改。

3. 确认证书配置有效性

检查tls.yml中的证书路径是否正确,Traefik容器已通过挂载获得/etc/letsencrypt的只读权限,确保证书文件能被正常读取。

配置优化建议

如果后续需要调整数据端口范围,可简化配置避免重复代码:

  1. 在静态配置traefik.yml中合并数据端口为范围:
entryPoints:
  ftps:
    address: ":1413"
  ftps_data:
    address: ":1414-1420"
  1. 动态配置中用单个路由器匹配整个端口范围:
tcp:
  routers:
    hi_ftps_data:
      rule: "HostSNI(`*`)"
      entryPoints:
        - "ftps_data"
      service: "ssl_hi_ftps_data"
      tls:
        alpnProtocols: ["ftp"]
  services:
    ssl_hi_ftps_data:
      loadBalancer:
        servers:
          - address: "172.20.49.6:1414"
          - address: "172.20.49.6:1415"
          - address: "172.20.49.6:1416"
          - address: "172.20.49.6:1417"
          - address: "172.20.49.6:1418"
          - address: "172.20.49.6:1419"
          - address: "172.20.49.6:1420"

内容的提问来源于stack exchange,提问作者abdBou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 10:42:03