Я мало что знаю о веб-серверах или HAProxy, но могу дать вам несколько советов по IPtables, а затем ответить на ваш вопрос.
- IPtables читает правила сверху вниз и прекращает чтение правил, когда достигает DROP, REJECT или ACCEPT.
- IPtables чувствителен к регистру.
Принимать
не то же самое, что ПРИНИМАТЬ
- Политика IPtables
-П
используется, когда никакое другое правило в таблице не применяется к данному пакету.
- Убедитесь, что когда вы добавляете новые правила IPtables, вы удаляете старые, введя
iptables -t фильтр -F
а потом iptables -t фильтр -X
. Эти две команды очистят таблицу фильтров (таблицу по умолчанию), а также очистят все подцепочки в таблице.
- Убедитесь, что правила для клиентов отражаются на хосте, и убедитесь, что правила для хоста отражаются на клиентах.
Чтобы ответить на ваш вопрос...
Во-первых, попробуйте полностью очистить брандмауэр, выполнив следующие команды, чтобы очистить все таблицы в IPtables:
iptables -t необработанный -F
iptables -t мангл -F
iptables -t физ -F
iptables -t фильтр -F
iptables -t необработанный -X
iptables -t мангл -X
iptables -t физ -X
iptables -t фильтр -X
Затем убедитесь, что никакой другой брандмауэр не запущен.
CentOS/Fedora/Rhel:
systemctl остановить firewalld
Дебиан/Убунту:
systemctl остановить ufw
Затем проведите несколько тестов. HAProxy работает? Если это работает, ваша проблема в брандмауэре. Если это так нет работать, то вам нужно пересмотреть свои правила IPtables.Может быть, вы начнете с того, что сделаете свои правила IPtables как можно более неконкретными, а затем станете все более и более конкретными. Вот мои рекомендации для начала:
Убедитесь, что на сервере включен петлевой трафик. Loopback-трафик никогда не покидает сервер:
iptables -t filter -A INPUT -i lo -j ПРИНЯТЬ
Попробуйте внести в белый список IP-адрес сервера HAProxy вместо порта:
iptables -t filter -A INPUT -s ${HAPROXY_IP} -j ПРИНЯТЬ
Позволять УЧРЕДИЛ
и СВЯЗАННЫЕ С
соединения:
iptables -t filter -A INPUT -m conntrack --ctstate СВЯЗАННО, УСТАНОВЛЕНО -j ПРИНЯТЬ