Назад | Перейти на главную страницу

haproxy acl - принимать только с определенных IP

У меня есть 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 решило проблему.