有3个不同的vm,其中RabbitMQ服务以global mode部署。我的目标是阻止对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
输出获取的群体覆盖网络中容器的ip。虽然,流量仍然通过,并且不会复制网络分区。如何正确阻止到服务容器的流量?
假设您想阻止来自/到container_id标识的容器的流量
第2-3步应在容器内运行。
1)输入容器:
docker exec -it --privileged --env http_proxy=proxy_ip container_id bash
如果您可以直接连接到网络而不是在某些(公司)代理之后,则不需要[--env http_proxy=proxy_ip
2]此步骤假定基础映像OS基于Debian。如果基于RED-HAT,请使用yum软件包安装程序的等效命令。如果是其他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