在 Web 服务器上启用 Shorewall 防火墙时,HAProxy 无法连接

在 Web 服务器上启用 Shorewall 防火墙时,HAProxy 无法连接

我有一个相当标准的 HAProxy / Web Cluster 设置,它运行得非常好 - 只要我不在 Web 集群服务器上启用 Shorewall 防火墙。

我一这样做,HAProxy 服务器的系统日志中就会出现错误消息,并且通过 HAProxy 提供服务的网站会返回 503。

以 HAProxy 服务器和其中一个 Web 服务器为例。

HAProxy 配置如下:


global
    daemon
    maxconn 8192
    log 127.0.0.1 local5 info

defaults
    mode http
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms
    log global
    option httplog
    option dontlognull
    option http-server-close
    option tcplog clf
    option httplog clf
    stats enable
    stats refresh 10s
    stats uri /haprsts

listen http-in
    bind *:80
    mode http
    option forwardfor
    default_backend www_servers

backend www_servers
    balance leastconn
    cookie SERVERID insert indirect nocache
    server server1 XXX.XXX.XXX.XXX:9009 maxconn 128 check cookie server1
    server server2 YYY.YYY.YYY.YYY:9009 maxconn 128 check cookie server2

listen https-in
    mode http
    bind *:443 ssl crt /etc/haproxy/certs/cert.pem
    option forwardfor
    reqadd X-Forwarded-Proto:\ https
    default_backend www_servers_ssl

backend www_servers_ssl
    balance leastconn
    cookie SERVERID insert indirect nocache
    server server1 XXX.XXX.XXX.XXX:9009 maxconn 128 check inter 3000 fall 2 rise 2 cookie server1
    server server2 YYY.YYY.YYY.YYY:9009 maxconn 128 check inter 3000 fall 2 rise 2 cookie server2

XXX.XXX.XXX.XXX 和 YYY.YYY.YYY.YYY 是公共 IP 地址。

根据 HAProxy 配置,Apache 和 Web 服务器上的 vhosts 配置已配置为监听端口 9009。到目前为止,一切运行正常。

现在,我在 Web 服务器上打开 Shorewall 防火墙,防火墙规则文件如下:


#全部部分

#部分已建立

#相关部分

新部分

接受网络:ZZZ.ZZZ.ZZZ.ZZZ $FW:XXX.XXX.XXX.XXX TCP 9009

接受网络:WWW.WWW.WWW.WWW $FW:XXX.XXX.XXX.XXX TCP 9009

# 将 Ping 从“坏”网络区域中删除..并防止您的日志被淹没..

Ping(DROP) 净 $FW

# 允许所有 ICMP 流量从防火墙到网络区域

接受 $FW net icmp


ZZZ.ZZZ.ZZZ.ZZZ 是主 HAProxy 服务器,而 WWW.WWW.WWW.WWW 是辅助 HAProxy 服务器(目前与此问题无关)。

当 Web 服务器上启用防火墙时,所有 Web 流量都会中断。

HAProxy 服务器开始向 syslog 发送如下文件:来自 syslogd@localhost 的消息,发送时间:9 月 30 日 12:59:38...haproxy[14631]: 后端 www_servers 没有可用的服务器!

并且 Web 服务器返回 503 错误。

规则文件中还有其他规则,例如允许从特定 IP 地址在某个端口上使用 SSH,这些规则都有效,所以我假设(虽然我可能错了)它与 Shorewall 防火墙规则关系不大。

是否如此,HAProxy 需要在 Web 服务器上打开额外的端口(这是我怀疑的)?如果是这样,那些未记录的端口是什么?或者有人知道这里可能出了什么问题?

任何帮助将非常感激。

干杯,/j。

答案1

可能是健康检查触发了禁令,因为它们没有发送主机名。您可以尝试使用“httpchk”或“ssl-hello-chk”,这可能会解决问题并允许您重新启用 fail2ban。

相关内容