Dockerエンジン(最新バージョン1.12.1)を使用してUbuntu 16.04サーバーとUbuntu 16.04ベースのDockerイメージ/コンテナを実行します。
(TCP を使用する特定のポートで)以下を制限する必要があります。
- 1秒あたりの接続数(10と仮定)
- 同時接続数
ロード時にこれに対する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の場合、上記の2つのルールをチェーンにどのように追加しますか5671
?
答え1
これが私がする方法です:
iptables -A INPUT -p tcp --syn --dport 5671-m connlimit \
--connlimit-above 10 --connlimit-mask 32 \
-j REJECT --reject-with tcp-reset