iptables는 Docker 컨테이너에 대한 인바운드 연결을 제한합니다.

iptables는 Docker 컨테이너에 대한 인바운드 연결을 제한합니다.

Docker 엔진(최신 버전 1.12.1)을 사용하여 Ubuntu 16.04 서버 및 Ubuntu 16.04 기반 Docker 이미지/컨테이너를 실행하세요.

(TCP를 사용하는 특정 포트에서) 다음을 제한해야 합니다.

  1. 초당 연결 수(10으로 가정)
  2. 동시 연결 수

로드 시 이에 대한 iptables 설정을 처리하는 Docker 컨테이너 내부에 진입점 스크립트를 생성할 수 있다면 완벽할 것입니다. 그러나 이것이 가능하지 않은 경우 호스트(Docker 컨테이너 외부)에서 어떻게 구성합니까?

현재 호스트 컴퓨터에 다음이 있습니다.

$ iptables -L --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination
1    DOCKER-ISOLATION  all  --  anywhere             anywhere
2    DOCKER     all  --  anywhere             anywhere
3    ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
4    ACCEPT     all  --  anywhere             anywhere
5    ACCEPT     all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

Chain DOCKER (1 references)
num  target     prot opt source               destination
1    ACCEPT     tcp  --  anywhere             172.17.0.2           tcp dpt:15672

Chain DOCKER-ISOLATION (1 references)
num  target     prot opt source               destination
1    RETURN     all  --  anywhere             anywhere

DOCKER대상 포트가 port 인 경우 위의 두 규칙을 체인에 어떻게 추가합니까 5671?

답변1

이것이 내가 하는 방법이다:

iptables -A INPUT -p tcp --syn --dport 5671-m connlimit \
         --connlimit-above 10 --connlimit-mask 32 \
         -j REJECT --reject-with tcp-reset  

관련 정보