iptables connlimit-above는 예상보다 더 많은 연결을 허용합니다.

iptables connlimit-above는 예상보다 더 많은 연결을 허용합니다.

kubernetes 노드에서 IP당 연결 제한을 설정하기 위해 iptables connlimit를 사용하려고 합니다. VM의 각 컨테이너에는 서로 다른 소스 IP(오버레이 네트워크)가 있으므로 connlimit를 사용하면 작동합니다. 규칙을 추가했어요

iptables -I FORWARD 1 -p tcp --syn -m connlimit --connlimit-above 25 --connlimit-mask 32 -j REJECT --reject-with tcp-reset

컨테이너가 외부 서비스에 대해 50개의 연결을 버스트하도록 하여 이를 테스트하고 있습니다. 이는 처음에 첫 번째 발병 중에 작동합니다. 25개의 연결, 25개의 연결이 거부되었습니다. conntrack 테이블에서 올바른 소스 IP를 가진 25개의 항목을 볼 수 있습니다.

몇 초간 기다렸다가 스크립트를 실행하여 또 다른 50개의 연결(그 중 25개는 아직 ESTABLISHED 상태임)을 생성하려고 시도하면 추가로 25개의 연결이 통과할 수 있습니다. 이제 conntrack 테이블에서 동일한 소스 IP를 사용하여 모두 설정된 50개의 연결을 볼 수 있습니다. 원하는 결과는 원본 25개가 여전히 연결되어 있는 한 아무 일도 일어나지 않는다는 것입니다.

내가 뭘 잘못했나요?

컨테이너 네트워크 구성 방식으로 인해 입력 체이닝 대신 전달을 사용하고 있습니다.

관련 정보