Docker가 iptables를 작동하는 방식으로 인해 Docker를 다시 시작하지 않고는 iptables를 재설정하고 새 버전의 규칙을 적용할 수 없습니다.
Docker는 테이블을 사용 NAT
하지만 FILTER
터치는 사용하지 않습니다 MANGLE
.
이를 염두에 두고 방화벽 스크립트를 다음 과 같이 FILTER/INPUT
변경하기 로 결정했습니다.FILTER/OUTPUT
MANGLE/PREROUTING
MANGLE/POSTROUTING
이제 Docker를 중단/다시 시작하지 않고도 방화벽( iptables -t mangle -F
)을 완전히 재설정하고 새로운 규칙 세트를 적용할 수 있습니다.
질문은 다음과 같습니다.MANGLE
저처럼 테이블을 사용하면 단점이 있나요? 내 규칙은 매우 간단합니다. IP당 연결 제한, 일부 포트 삭제, 일부 프로토콜 삭제...
답변1
Docker를 다시 시작하지 않으면 iptables를 재설정하고 새 버전의 규칙을 적용할 수 없습니다.
나는 이것이 정확하다고 생각합니다.
"diff" 규칙 덤프
Docker 방화벽 구성에 익숙하지 않지만 dump state 를 사용할 수 있습니다 iptables-save
. 모든 규칙에 대한 설명을 생성하여 쉽게 필터링할 수 있습니다.
그런 다음 규칙 세트를 재설정하고, Docker 규칙을 복원하고, 새 규칙을 적용할 수 있습니다. 이 순서대로 하면 가장 쉬울 것입니다. 이것이 얼마나 실현 가능한지는 규칙을 생성하는 방법에 따라 다릅니다.
보조체인
또 다른 방법은 공식 체인에 하나의 규칙만 넣는 것입니다. 그러면 모든 규칙이 있는 체인으로 이동합니다. 그런 다음 이러한 보조 체인을 재설정하고 재구축할 수 있습니다. Docker 규칙은 영향을 받지 않습니다.