如何将haproxy端口范围配置成一个一个的范围?

问题描述 投票:4回答:2

我想用haproxy部署一个ftp代理服务器。场景是这样的

ftp客户端<--> ftp-proxy-server(ip:10.0.1.1) <--> ftp-server(ip:172.126.1.1)

ftp服务器监听21端口的控制命令,数据端口范围[20100-20199]。

我在ftp-proxy-server上配置了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 -client成功登录ftp服务, 但是执行ls命令失败, 并输出 "连接拒绝 "的信息. 我想原因是ftp-proxy-server到ftp-server的端口映射是随机的。所以当ftp-client得到一个保留的端口(如20101),但ftp-proxy-server可能会把它映射到另一个端口(如20109),而这个端口并不是ftp-server分配给ftp-client的端口。

我想了一个解决方案,配置100个listen,一个listen到一个端口,但是写配置文件很复杂。有沒有一個簡單的配置選項來映射端口一個接一個?就像10.0.1.1:20001 -> 172.126.1.1:20001,10.0.1.1:20002 -> 172.126.1.1:20002。

欢迎任何答案:)

networking ftp haproxy
2个回答
6
投票

你必须从服务器定义中删除端口范围。haproxy的文档显示,源服务器的端口和目标服务器的端口是一样的。

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

0
投票

对于 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
© www.soinside.com 2019 - 2024. All rights reserved.