<div dir="ltr">Hi Michael,<div><br></div><div>Thanks for taking the time for the very detailed and informative response.<div><br></div><div>I'd like to counter if I may.</div><div><br></div><div>It is taking a full minute and more to do the complete reload, in which time there are many hacking efforts at play.</div><div><br></div><div>iptables uses chains.  Instead of flushing everything and then building and adding one chain at a time:</div></div><div>1. Don't flush</div><div>2. Create a new chain(s) with the new rules</div><div>3. Insert the new chain(s) before the old chain </div><div>4. Remove the old chain(s)</div><div>5. Rename the new chain(s) to be the same as the old chain(s)</div><div><br></div><div>This should leave the existing rules intact while the new chains are built, and the swap should be almost instantaneous.</div><div>This should also mean only the relevant chain needs to be rebuilt.<br></div><div><br></div><div>I do see the implementation already uses chains, so this should be a minor change to make.</div><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><font face="monospace">[root@5209r httpd]# iptables -v -t filter  -S INPUT | grep -- "INPUT -c"</font></div><div><font face="monospace">-A INPUT -c 375197 1713824291 -j dfix</font></div><div><font face="monospace">-A INPUT -c 137827 30265130 -j REFRESH_TEMP</font></div><div><font face="monospace">-A INPUT -c 137532 30249688 -j TALLOW</font></div><div><font face="monospace">-A INPUT -c 137532 30249688 -j TDENY</font></div><div><font face="monospace">-A INPUT -c 132802 30003618 -j TGALLOW</font></div><div><font face="monospace">-A INPUT -c 132802 30003618 -j TGDENY</font></div><div><font face="monospace">-A INPUT -c 130848 29569897 -j IN_SANITY</font></div><div><font face="monospace">-A INPUT -c 130848 29569897 -j FRAG_UDP</font></div><div><font face="monospace">-A INPUT -c 130848 29569897 -j PZERO</font></div><div><font face="monospace">-A INPUT -c 130847 29569825 -j IDENT</font></div><div><font face="monospace">-A INPUT -c 130834 29567519 -j P2P</font></div><div><font face="monospace">-A INPUT -c 5 305 -j DROP</font></div><div><font face="monospace">[root@5209r httpd]# iptables -v -t filter  -S OUTPUT | grep -- "OUTPUT -c"</font></div><div><font face="monospace">-A OUTPUT -c 126027 46200594 -j REFRESH_TEMP</font></div><div><font face="monospace">-A OUTPUT -c 126027 46200594 -j TALLOW</font></div><div><font face="monospace">-A OUTPUT -c 126027 46200594 -j TDENY</font></div><div><font face="monospace">-A OUTPUT -c 126026 46200542 -j TGALLOW</font></div><div><font face="monospace">-A OUTPUT -c 126026 46200542 -j TGDENY</font></div><div><font face="monospace">-A OUTPUT -c 124237 45688665 -j OUT_SANITY</font></div><div><font face="monospace">-A OUTPUT -c 124237 45688665 -j FRAG_UDP</font></div><div><font face="monospace">-A OUTPUT -c 124237 45688665 -j PZERO</font></div><div><font face="monospace">-A OUTPUT -c 124236 45688593 -j IDENT</font></div><div><font face="monospace">-A OUTPUT -c 124223 45687744 -j P2P</font></div><div><font face="monospace">-A OUTPUT -c 44996 5478097 -j ACCEPT</font></div><div><font face="monospace">[root@5209r httpd]# iptables -v -t filter  -S INPUT | wc -l               <br>172</font><br></div></blockquote><div><br></div></div>