在全局模式下部署了RabbitMQ服务的3个不同的vms。我的目标是阻止其中一个RabbitMQ服务容器的流量。尝试使用iptables到Reproduce RabbitMQ network partition scenario
通过添加iptables链
iptables -A DOCKER-INGRESS -d 10.255.0.33 -p tcp --dport amqp -m state --state ESTABLISHED,RELATED -j DROP
在RabbitMQ服务任务容器运行的2个docker节点上。 10.255.0.33是来自docker service inspect
输出的swarm overlay网络的容器的ip。虽然,流量仍然通过,网络分区不被再现。如何正确阻止服务容器的流量?
假设您要阻止来自/由container_id标识的容器的流量
步骤2-3应该在容器内运行。
1)输入容器:
docker exec -it --privileged --env http_proxy=proxy_ip container_id bash
如果您可以直接连接到Web而不是某些(公司)代理后面,则不需要--env http_proxy=proxy_ip
2)此步骤假定底层映像OS是基于Debian的。如果它是基于RED-HAT的,请使用yum package installer等效命令。如果是其他OS系列,请使用相应的软件包安装程序命令。
安装iptables
apt-get update && apt-get install -y iptables
3)阻止进出虚拟IP为10.0.0.183的容器的流量
iptables -A OUTPUT -d 10.0.0.183 -j DROP
iptables -A INPUT -d 10.0.0.183 -j DROP