É assim que eu faria:
iptables -A INPUT -p tcp --syn --dport 5671-m connlimit \
--connlimit-above 10 --connlimit-mask 32 \
-j REJECT --reject-with tcp-reset
Executando um servidor Ubuntu 16.04 com Docker Engine (última versão 1.12.1) e uma imagem / container Docker baseada no Ubuntu 16.04 também.
Eu preciso limitar (em uma porta específica usando TCP) ambos:
Seria perfeito se fosse possível criar um script de ponto de entrada dentro do contêiner do Docker que, quando carregado, lida com a configuração do iptables, mas se isso não for possível, como configurá-lo no host (contêiner externo do Docker) ?
Atualmente, tenho isso no host:
$ 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
Como posso adicionar as duas regras acima à cadeia DOCKER
se a porta de destino for, digamos, porta 5671
?
É assim que eu faria:
iptables -A INPUT -p tcp --syn --dport 5671-m connlimit \
--connlimit-above 10 --connlimit-mask 32 \
-j REJECT --reject-with tcp-reset