使用 Docker Engine(最新版本 1.12.1)运行 Ubuntu 16.04 服务器以及基于 Ubuntu 16.04 的 Docker 映像/容器。
我需要限制(在使用 TCP 的特定端口上):
- 每秒连接数(假设为 10),以及
- 同时连接数
如果可以在 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