我有 haproxy 并且需要向没有直接连接的服务器提供 smtp。
这是我的配置的一部分:
listen smtp 10.12.23.10:3025
mode tcp
server smtp 172.30.33.12:25
#tcp-request inspect-delay 2s
acl white_list src 10.146.5.247 10.146.5.201
tcp-request content accept if white_list
tcp-request content reject
任何尝试连接到端口的行为都会被拒绝。如果我删除行tcp-request content reject
- 则适用于所有人,但默认情况下 haproxy 会接受所有内容。仅允许两个或更多服务器进入的正确方法是什么?
我也尝试过以下几行:
tcp-request content reject unless whitelist
tcp-request content reject if !whitelist
我有 haproxy 1.4.18,希望有帮助。
答案1
下面的 con 在 haproxy 1.4.15 上按预期运行。
listen smtp :3025
mode tcp
server smtp 192.168.1.2:25
acl white_list src 127.0.0.1 192.168.1.205
tcp-request inspect-delay 2s
tcp-request content accept if white_list
tcp-request content reject
您甚至可以删除检查延迟线,但“超时连接”后客户端将被拒绝。
listen smtp :3025
mode tcp
server smtp 192.168.1.2:25
acl white_list src 127.0.0.1 192.168.1.205
timeout connect 1s
# tcp-request inspect-delay 2s
tcp-request content accept if white_list
tcp-request content reject
答案2
升级到 haproxy 1.4.22 已解决问题。