我正在尝试设置iptables
Ceph 集群。我目前正在为其中一台监控服务器制定规则。
监视器守护程序侦听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。
如果我tcpdump
对源端口 6789 执行操作,我可以看到目标端口为 56052 和源端口为 6789 的传入数据包。这对我来说更没有意义,因为在监控服务器上没有监听端口 56052。
我在这里错过了什么吗?我使用的是 SLES12 和 ceph 12.2.7,FORWARD 和 OUTPUT 链没有规则,所有链上的策略都是 ACCEPT
我没有启用连接跟踪,所以当监视器试图与其他监视器通信时,不允许通过防火墙返回响应。我添加了以下规则来解决此问题:
感谢AB提出查看状态防火墙的建议。