Networking 如何将haproxy端口范围逐个配置为范围?

Networking 如何将haproxy端口范围逐个配置为范围?,networking,ftp,haproxy,Networking,Ftp,Haproxy,我想使用haproxy部署一个ftp代理服务器。下面是一个场景: ftp客户端ftp代理服务器(ip:10.0.1.1)ftp服务器(ip:172.126.1.1) ftp服务器在端口21上侦听控制命令,数据端口范围[20100-20199] 我在ftp代理服务器上有haproxy配置: listen ftp-proxy-server 10.0.1.1:21 mode tcp server ftp-server 172.126.1.1:21 listen ftp-proxy-s

我想使用haproxy部署一个ftp代理服务器。下面是一个场景:

ftp客户端ftp代理服务器(ip:10.0.1.1)ftp服务器(ip:172.126.1.1)

ftp服务器在端口21上侦听控制命令,数据端口范围[20100-20199]

我在ftp代理服务器上有haproxy配置:

listen ftp-proxy-server 10.0.1.1:21
    mode tcp
    server ftp-server 172.126.1.1:21

listen ftp-proxy-server 10.0.1.1:20100-20199
    mode tcp
    server ftp-server 172.126.1.1:20100-20199
问题是,我可以从ftp客户端成功登录ftp服务,但未能执行ls命令,该命令输出“连接被拒绝”消息。我猜原因是从ftp代理服务器到ftp服务器的端口映射是随机的。因此,当ftp客户端获得保留端口(例如20101)时,ftp代理服务器可能会将其映射到另一个端口(例如20109),该端口不是分配给ftp客户端的ftp服务器端口

我想有一个解决方案配置了100个侦听,一个侦听一个端口,但是编写配置文件很复杂。是否有一个简单的配置选项来逐个映射端口?就像10.0.1.1:20001->172.126.1.1:20001,10.0.1.1:20002->172.126.1.1:20002一样


欢迎回答:)

您必须从服务器定义中删除端口范围。haproxy文档显示源中的同一端口用于目标

listen ftp-proxy-server 10.0.1.1:20100-20199
    mode tcp
    server ftp-server 172.126.1.1

对于centos上的haproxy 1.5

listen web *:8080-8090
    mode tcp
    server worker1 10.0.0.1
    server worker2 10.0.0.2
对于debian上的haproxy 1.7

listen web
    bind *:8080-8090
    mode tcp
    server worker1 10.0.0.1
    server worker2 10.0.0.2