Tengo una respuesta que limitará los contenedores acoplables para que solo puedan acceder a una única dirección IP fuera del host. Usando esta regla de iptables en el host:
iptables -I ADELANTE -i docker0! -d 8.8.8.8 -j SOLTAR
significa que desde el interior de cualquier contenedor acoplable solo es posible acceder a la dirección IP 8.8.8.8.
Esto es bastante drástico; básicamente, si el destino NO es 8.8.8.8, entonces descarte el paquete.
¿Cuál es la mejor manera de configurar reglas que me permitan limitar los contenedores a una cierta cantidad de direcciones IP?
Respuesta1
Necesitaba asegurarme de que la copia de desarrollo del sitio web que estaba en el contenedor acoplable no pudiera acceder a ningún recurso en vivo: Paypal, varias API, etc. El código en el sitio web era heredado y muchas cosas/URL estaban codificadas.
La forma en que logré esto fue tener algo como esto en el script de compilación:
echo
echo "Setting up firewall rules for all docker containers..."
sudo ipset create dockerdests hash:ip -exist
sudo ipset add dockerdests x.x.x.x -exist
sudo ipset add dockerdests y.y.y.y -exist
sudo ipset add dockerdests 8.8.8.8 -exist
sudo ipset add dockerdests 8.8.4.4 -exist
sudo iptables -I FORWARD 1 -i docker0 -m set --match-set dockerdests dst -j ACCEPT
sudo iptables -I FORWARD 2 -i docker0 -j DROP
donde xxxx y yyyy son recursos de desarrollo.