Ceph Monitor iptables 规则奇怪的行为

Ceph Monitor iptables 规则奇怪的行为

我正在尝试设置iptablesCeph 集群。我目前正在为其中一台监控服务器制定规则。

监视器守护进程侦听tcp/6789(IP 地址已删除,因为它是公共地址):

# netstat -tunlp | grep ceph-mon
tcp        0      0 X.X.X.X:6789       0.0.0.0:*               LISTEN      2612/ceph-mon

如果我允许连接到 tcp 端口 6789 并删除其他所有内容,则监视器将被集群的其余部分标记为关闭:

iptables -F INPUT
iptables -A INPUT -p tcp --dport 6789 -j ACCEPT
iptables -A INPUT -j DROP

令人困惑的是,如果我删除所有到 tcp 端口 6789 的连接,集群仍然运行:

iptables -F INPUT
iptbales -A INPUT -p tcp --dport 6789 -j DROP

如果我允许与来源tcp 端口 6789 并删除集群运行的所有其他内容:

iptables -F INPUT
iptables -A INPUT -p tcp --sport 6789 -j ACCEPT
iptables -A INPUT -j DROP

这对我来说没有意义,因为守护程序正在侦听端口 6789,因此 tcp 段的目标端口应该为 6789。

如果我对源端口 6789 进行操作,tcpdump我可以看到目标端口为 56052 且源端口为 6789 的传入数据包。这对我来说更没有意义,因为监视器服务器上的端口 56052 上没有任何监听。

我在这里错过了什么吗?我使用的是SLES12和ceph 12.2.7,FORWARD和OUTPUT链没有规则,所有链上的策略都是ACCEPT

答案1

我没有启用连接跟踪,因此当监视器尝试与其他监视器通信时,不允许通过防火墙返回响应。我添加了以下规则来解决该问题:

iptables -I INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

谢谢AB查看状态防火墙的建议。

相关内容