У меня есть 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, если поможет.
Приведенный ниже довод работает на 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
Обновление до haproxy 1.4.22 решило проблему.