Thomas Delrue on 29 Aug 2015 17:35:13 -0700

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: [PLUG] Behavior of iptables-save and iptables-restore when run concurrently

I though about that and sadly BAR does indeed contain dozens of unique
rules on each rewrite. --delete/insert/replace is just too much of a
hassle because I'd have to write code that figures out which index to
delete or at which index to insert.
Doing it bulk-wise using iptables-restore (change the entire
[chain]world) let's me ignore that part of the problem.

On 08/29/2015 06:59 PM, Victor wrote:
> I am not so familiar with the inner workings of
> iptables-save/restore, but I would agree that iptables-restore is
> probably atomic.
> I wanted to ask if you were drastically altering the chain, and if
> the iptables --delete, --insert, and --replace options could be used
> for a simpler solution? Unless BAR contains dozens of unique rules
> per rewrite, iptables-save/restore may not offer much benefit.
> On Sat, Aug 29, 2015 at 3:59 PM, Thomas Delrue
> <> wrote:
> Hello,
> I have a bit of a weird question about the behavior of iptables-save
> and iptables-restore when run at the same time.
> Let's say that I have a situation like this: - My rules contain
> chains called FOO, BAR and BAZ which each contain a bunch of
> goodies. - I don't want to change what FOO or BAZ look like - But,
> occasionally, I want to regenerate what the BAR chain should look 
> like, as in: I want to completely rewrite the entire BAR chain from 
> scratch. This is done by a program at certain intervals.
> What I'd like to do is do a popen("iptables-save", "r") and as I
> read the contents from it, I was thinking of directly piping it into 
> iptables-restore (using popen("iptables-restore", w")) I happily
> write whatever is coming from the iptables-save pipe into the pipe
> for iptables-restore and as soon as I encounter the starting point 
> for my 'BAR' chain, instead of writing the content of the BAR chain 
> coming from the iptables-save pipe, I write my new (full) content
> for what BAR should look like. Then I let iptables-save continue
> until it sees the end of the (old) BAR chain data after which I just
> happily continue to pipe what is coming from the iptables-save pipe
> into the iptables-restore pipe thus preserving what was there
> originally for everything except for my BAR chain which now contains
> the new information.
> My questions are the following: - Will this work? Will
> iptables-restore wait to apply the incoming data until it has seen
> everything or will it apply it as it comes in and influence what is
> coming in through my other pipe from -save? - At what point does the
> incoming data get applied? Does it occur upon my call to
> pclose(iptables_restore_pipe)?
> I seem to recall someone mentioning that iptables-restore was atomic,
> so I would guess that it would wait with applying until it sees an
> EOF (pclose()?) or OCMMIT but I wanted to double check.
>> ___________________________________________________________________________
Philadelphia Linux Users Group         --
>> Announcements -
>> General
>> Discussion  --
> ___________________________________________________________________________
Philadelphia Linux Users Group         --
> Announcements -
> General
> Discussion  --

Attachment: signature.asc
Description: OpenPGP digital signature

Philadelphia Linux Users Group         --
Announcements -
General Discussion  --