iptables 限制 Docker 容器的入站连接

iptables 限制 Docker 容器的入站连接

使用 Docker Engine(最新版本 1.12.1)运行 Ubuntu 16.04 服务器以及基于 Ubuntu 16.04 的 Docker 映像/容器。

我需要限制(在使用 TCP 的特定端口上):

  1. 每秒连接数(假设为 10),以及
  2. 同时连接数

如果可以在 Docker 容器内创建一个入口点脚本,加载时处理为此设置的 iptables,那将是完美的,但如果不可能,那么我如何在主机(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  

相关内容