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여야 하기 때문에 이는 나에게 이해가 되지 않습니다.
소스 포트 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상태 저장 방화벽에 대한 권장 사항을 확인하세요.