3

有 3 个不同的虚拟机,其中RabbitMQ服务以全局模式部署。我的目标是阻止流向RabbitMQ服务容器之一的流量。尝试使用 iptables重现 RabbitMQ 网络分区场景

通过添加 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是 swarm 覆盖网络中容器的 ip,取自docker service inspect输出。尽管如此,流量仍然通过并且网络分区没有被复制。如何正确阻止服务容器的流量?

4

1 回答 1

0

假设您要阻止来自/到由 container_id 标识的容器的流量

步骤 2-3 应在容器内运行。

1)进入容器:

docker exec -it --privileged --env http_proxy=proxy_ip container_id bash

--env http_proxy=proxy_ip如果您可以直接连接到网络并且不在某些(公司)代理后面,则不需要

2) 此步骤假定底层映像操作系统是 基于Debian 的。如果它基于 RED-HAT,请使用 yum 包安装程序等效命令。如果是其他操作系统系列,请使用适当的包安装程序命令。

安装 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
于 2019-03-06T09:05:20.187 回答