<div dir="ltr"><br><div class="gmail_quote"><div dir="ltr"><div><div><div><div><div><div>Hi Johannes<br><br></div>You can make the changes w/o tearing down the iptables.<br><br></div>I must admit I have been known to make changes directly to the iptables rules file myself, but reloading the firewall for every change isn't always practicable.<br><br></div>Because of that I have adopted a policy of making the change to the running firewall, and then doing a iptables-save > /etc/iptables/iptables.rules<br><br></div>The reason the container's networking breaks when you restart iptables is that the masquerade rule is added to the running iptables only and not written to the file.<br><br></div>Bear in mind though that if you do save iptables with iptables-save ... whilst your container is running, the masquerade rule will also be saved. <br><br><br></div>Hope this helps<br><br></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On 21 November 2015 at 04:36, Johannes Ernst <span dir="ltr"><<a href="mailto:johannes.ernst@gmail.com" target="_blank">johannes.ernst@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Setting IPMasquerade on a systemd-managed interface (e.g. for running an nspawn container) automatically sets up a “masquerade" netfilter entry. If an iptables ruleset exists already, it adds to it. (I think)<br>
<br>
But what if I want to change other my firewall rules (unrelated to the container) without breaking the container’s networking? How would I add the systemd-generate rule to be added back in?<br>
<br>
Example (in Arch):<br>
<br>
1. System boots<br>
2. systemd starts iptables.service, which reads its rules from /etc/iptables/iptables.rules<br>
3. I start a container with nspawn -n, so networkd adds the equivalent of<br>
    -A POSTROUTING -s <a href="http://10.0.0.0/28" rel="noreferrer" target="_blank">10.0.0.0/28</a> -j MASQUERADE<br>
to the ruleset. (At least I think it does.) Everything works fine.<br>
<br>
4. I change my firewall rules by editing /etc/iptables/iptables.rules<br>
5. system restart iptables<br>
<br>
and voila, my container’s network is broken.<br>
<br>
It’d be nice if there were some kind of saying:<br>
    cat /etc/iptables/iptables.rules /run/systemd/iptables/rules | iptables-restore<br>
in iptables.service.<br>
<br>
Or is there some other way of accomplishing this?<br>
<br>
Thanks,<br>
<br>
<br>
<br>
Johannes.<br>
<br>
_______________________________________________<br>
systemd-devel mailing list<br>
<a href="mailto:systemd-devel@lists.freedesktop.org" target="_blank">systemd-devel@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/systemd-devel" rel="noreferrer" target="_blank">http://lists.freedesktop.org/mailman/listinfo/systemd-devel</a><br>
</blockquote></div><br></div>
</div></div></div><br></div>