# Shorewall + Docker: Dos sabores excelentes que saben muy bien juntos

**URL:** <https://meta.discourse.org/t/shorewall-docker-two-great-tastes-that-taste-great-together/35966>\
**Category:** Blog\
**Created:** [24 Noviembre, 2015 03:22 UTC](https://meta.discourse.org/t/shorewall-docker-two-great-tastes-that-taste-great-together/35966 "2015-11-24T03:22:51Z")\
**Posts on this page:** 1\
**Showing post:** 4

<div class="post-metadata">

**Author:** ![jdeyton](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jdeyton/32/203809_2.png) [@jdeyton](https://meta.discourse.org/u/jdeyton)\
**Post date:** [19 Diciembre, 2020 07:47 UTC](https://meta.discourse.org/t/shorewall-docker-two-great-tastes-that-taste-great-together/35966/4 "2020-12-19T07:47:17Z")

</div>

Disculpas por la necromancia del hilo, pero dado que esto fue lo que hizo funcionar mis propios servicios de swarm con Shorewall, es posible que a alguien más le resulten útiles estas notas adicionales.

Es posible que los scripts anteriores funcionen o no según lo esperado para sus necesidades, y esto se debe a que, al ejecutar `iptables -S`, devuelve las reglas en un formato de _agregación_. Si sus reglas de Shorewall son bastante agresivas como las mías, una simple agregación probablemente resulte en un DROP mucho antes de llegar a las cadenas específicas de iptables de Docker.

Aquí están mis modificaciones para _antepender_ las reglas en su lugar:

Aquí están `/etc/shorewall/{init,stop}`:

```plaintext
rules=/etc/shorewall/.docker_rules
if iptables -t nat -L DOCKER > /dev/null 2>&1; then
    echo '*nat' > $rules
    iptables -t nat -S | grep -i docker > $rules.nat
    grep '^-N' $rules.nat >> $rules
    tac $rules.nat | sed -n 's/^-A \([^]\+\) /-I \1 1 /p' >> $rules
    rm -f $rules.nat
    echo 'COMMIT' >> $rules

    echo '*filter' >> $rules
    iptables -t filter -S | grep -i docker > $rules.filter
    grep '^-N' $rules.filter >> $rules
    tac $rules.filter | sed -n 's/^-A \([^]\+\) /-I \1 1 /p' >> $rules
    rm -f $rules.filter
    echo 'COMMIT' >> $rules
fi

```

Y aquí está `/etc/shorewall/start`:

```plaintext
rules=/etc/shorewall/.docker_rules
if [-f $rules]; then
    iptables-restore -n < $rules
    rm -f $rules
fi

```

---

_[View the full topic](https://meta.discourse.org/t/shorewall-docker-two-great-tastes-that-taste-great-together/35966)._
