* [iptables] Effect of negating multiple source or dest IPs (-s or -d)
@ 2011-11-08 15:56 U.Mutlu
2011-11-08 16:16 ` sim
0 siblings, 1 reply; 10+ messages in thread
From: U.Mutlu @ 2011-11-08 15:56 UTC (permalink / raw)
To: netfilter
What's the effect of this rule on a multihomed box
(the IPs below are just some examples, not real):
iptables -A INPUT ! -d 1.2.3.4,2.3.4.5 -p all -j DROP
Will it drop all packets not destined to both these IPs?
Or will it drop all packets but for the first IP?
Ie. when negating a rule on multiple elements, is then
the result an AND or an OR combination?
Ie. is it then !ip1 AND !ip2, or is it !ip1 OR !ip2 ? :-)
Man page says this:
[!] -s, --source address[/mask][,...]
[!] -d, --destination address[/mask][,...]
A "!" argument before the address specification inverts the sense of the address. [...]
Multiple addresses can be specified, but this will expand to multiple rules (when adding with -A),
or will cause multiple rules to be deleted (with -D).
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [iptables] Effect of negating multiple source or dest IPs (-s or -d)
2011-11-08 15:56 [iptables] Effect of negating multiple source or dest IPs (-s or -d) U.Mutlu
@ 2011-11-08 16:16 ` sim
2011-11-08 16:19 ` U.Mutlu
0 siblings, 1 reply; 10+ messages in thread
From: sim @ 2011-11-08 16:16 UTC (permalink / raw)
To: U.Mutlu; +Cc: netfilter
> What's the effect of this rule on a multihomed box
> (the IPs below are just some examples, not real):
>
> iptables -A INPUT ! -d 1.2.3.4,2.3.4.5 -p all -j DROP
>
the newest version of iptables says:
iptables v1.4.12.1: ! not allowed with multiple source or destination IP
addresses
As it will be transformed in to two rules anyway, I'd recommend to
directly write n rules for that.
Simon
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [iptables] Effect of negating multiple source or dest IPs (-s or -d)
2011-11-08 16:16 ` sim
@ 2011-11-08 16:19 ` U.Mutlu
2011-11-08 16:44 ` Jan Engelhardt
0 siblings, 1 reply; 10+ messages in thread
From: U.Mutlu @ 2011-11-08 16:19 UTC (permalink / raw)
To: netfilter
sim@netmess.org wrote, On 2011-11-08 17:16:
>> What's the effect of this rule on a multihomed box
>> (the IPs below are just some examples, not real):
>>
>> iptables -A INPUT ! -d 1.2.3.4,2.3.4.5 -p all -j DROP
>>
>
> the newest version of iptables says:
>
> iptables v1.4.12.1: ! not allowed with multiple source or destination IP
> addresses
Oh, one wonders why they did so...
> As it will be transformed in to two rules anyway, I'd recommend to
> directly write n rules for that.
But in my above case then this can't work, or can it?
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [iptables] Effect of negating multiple source or dest IPs (-s or -d)
2011-11-08 16:19 ` U.Mutlu
@ 2011-11-08 16:44 ` Jan Engelhardt
2011-11-08 17:11 ` U.Mutlu
0 siblings, 1 reply; 10+ messages in thread
From: Jan Engelhardt @ 2011-11-08 16:44 UTC (permalink / raw)
To: U.Mutlu; +Cc: netfilter
On Tuesday 2011-11-08 17:19, U.Mutlu wrote:
> sim@netmess.org wrote, On 2011-11-08 17:16:
>>> What's the effect of this rule on a multihomed box
>>> (the IPs below are just some examples, not real):
>>>
>>> iptables -A INPUT ! -d 1.2.3.4,2.3.4.5 -p all -j DROP
>>>
>>
>> the newest version of iptables says:
>>
>> iptables v1.4.12.1: ! not allowed with multiple source or destination IP
>> addresses
>
> Oh, one wonders why they did so...
Because it leads to a confusing result.
! -d a,b,c
could be reasonably interpreted as
! -d a && ! -d b && ! -d c
but because using "," in -s/-d means a simple rule expansion, it
actually generates an equivalent of
! -d a || ! -d b || ! -d c
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [iptables] Effect of negating multiple source or dest IPs (-s or -d)
2011-11-08 16:44 ` Jan Engelhardt
@ 2011-11-08 17:11 ` U.Mutlu
2011-11-08 19:23 ` Jan Engelhardt
2011-11-08 20:22 ` Jozsef Kadlecsik
0 siblings, 2 replies; 10+ messages in thread
From: U.Mutlu @ 2011-11-08 17:11 UTC (permalink / raw)
To: netfilter
Jan Engelhardt wrote, On 2011-11-08 17:44:
> On Tuesday 2011-11-08 17:19, U.Mutlu wrote:
>
>> sim@netmess.org wrote, On 2011-11-08 17:16:
>>>> What's the effect of this rule on a multihomed box
>>>> (the IPs below are just some examples, not real):
>>>>
>>>> iptables -A INPUT ! -d 1.2.3.4,2.3.4.5 -p all -j DROP
>>>>
>>>
>>> the newest version of iptables says:
>>>
>>> iptables v1.4.12.1: ! not allowed with multiple source or destination IP
>>> addresses
>>
>> Oh, one wonders why they did so...
>
> Because it leads to a confusing result.
>
> ! -d a,b,c
>
> could be reasonably interpreted as
>
> ! -d a&& ! -d b&& ! -d c
>
> but because using "," in -s/-d means a simple rule expansion, it
> actually generates an equivalent of
>
> ! -d a || ! -d b || ! -d c
But OR'ing them IMHO doesn't make much sense, just think about it.
I would suggest to AND them.
Look, a normal rule like this one
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
matches only if every single part of it matches (ie. AND).
Then in our negation case above it should behave similar,
and not switch to OR.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [iptables] Effect of negating multiple source or dest IPs (-s or -d)
2011-11-08 17:11 ` U.Mutlu
@ 2011-11-08 19:23 ` Jan Engelhardt
2011-11-08 20:22 ` Jozsef Kadlecsik
1 sibling, 0 replies; 10+ messages in thread
From: Jan Engelhardt @ 2011-11-08 19:23 UTC (permalink / raw)
To: U.Mutlu; +Cc: netfilter
>On Tuesday 2011-11-08 18:11, U.Mutlu wrote:
>> actually generates an equivalent of
>>
>> ! -d a || ! -d b || ! -d c
>
> But OR'ing them IMHO doesn't make much sense, just think about it.
> I would suggest to AND them.
Rules exhibit an OR-like relationship to one another. There is nothing
that can be changed about it.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [iptables] Effect of negating multiple source or dest IPs (-s or -d)
2011-11-08 17:11 ` U.Mutlu
2011-11-08 19:23 ` Jan Engelhardt
@ 2011-11-08 20:22 ` Jozsef Kadlecsik
2011-11-08 21:59 ` U.Mutlu
1 sibling, 1 reply; 10+ messages in thread
From: Jozsef Kadlecsik @ 2011-11-08 20:22 UTC (permalink / raw)
To: U.Mutlu; +Cc: netfilter
On Tue, 8 Nov 2011, U.Mutlu wrote:
> Jan Engelhardt wrote, On 2011-11-08 17:44:
> > On Tuesday 2011-11-08 17:19, U.Mutlu wrote:
> >
> > > sim@netmess.org wrote, On 2011-11-08 17:16:
> > > > > What's the effect of this rule on a multihomed box
> > > > > (the IPs below are just some examples, not real):
> > > > >
> > > > > iptables -A INPUT ! -d 1.2.3.4,2.3.4.5 -p all -j DROP
> > > > >
> > > >
> > > > the newest version of iptables says:
> > > >
> > > > iptables v1.4.12.1: ! not allowed with multiple source or destination IP
> > > > addresses
> > >
> > > Oh, one wonders why they did so...
> >
> > Because it leads to a confusing result.
> >
> > ! -d a,b,c
> >
> > could be reasonably interpreted as
> >
> > ! -d a&& ! -d b&& ! -d c
> >
> > but because using "," in -s/-d means a simple rule expansion, it
> > actually generates an equivalent of
> >
> > ! -d a || ! -d b || ! -d c
>
> But OR'ing them IMHO doesn't make much sense, just think about it.
> I would suggest to AND them.
> Look, a normal rule like this one
> iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
> matches only if every single part of it matches (ie. AND).
> Then in our negation case above it should behave similar,
> and not switch to OR.
The matches are AND-ed. However the individual matches may generate OR
conditions, like multiport.
What you suggest means that while
-d a,b
is interpreted as "a" OR "b", then
! -d a,b
should be interpeted as NOT "a" AND NOT "b".
I think that'd be pretty confusing.
Best regards,
Jozsef
-
E-mail : kadlec@blackhole.kfki.hu, kadlec@mail.kfki.hu
PGP key : http://www.kfki.hu/~kadlec/pgp_public_key.txt
Address : KFKI Research Institute for Particle and Nuclear Physics
H-1525 Budapest 114, POB. 49, Hungary
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [iptables] Effect of negating multiple source or dest IPs (-s or -d)
2011-11-08 20:22 ` Jozsef Kadlecsik
@ 2011-11-08 21:59 ` U.Mutlu
2011-11-08 22:18 ` Amos Jeffries
0 siblings, 1 reply; 10+ messages in thread
From: U.Mutlu @ 2011-11-08 21:59 UTC (permalink / raw)
To: netfilter
Jozsef Kadlecsik wrote, On 2011-11-08 21:22:
> On Tue, 8 Nov 2011, U.Mutlu wrote:
>
>> Jan Engelhardt wrote, On 2011-11-08 17:44:
>>> On Tuesday 2011-11-08 17:19, U.Mutlu wrote:
>>>
>>>> sim@netmess.org wrote, On 2011-11-08 17:16:
>>>>>> What's the effect of this rule on a multihomed box
>>>>>> (the IPs below are just some examples, not real):
>>>>>>
>>>>>> iptables -A INPUT ! -d 1.2.3.4,2.3.4.5 -p all -j DROP
>>>>>>
>>>>>
>>>>> the newest version of iptables says:
>>>>>
>>>>> iptables v1.4.12.1: ! not allowed with multiple source or destination IP
>>>>> addresses
>>>>
>>>> Oh, one wonders why they did so...
>>>
>>> Because it leads to a confusing result.
>>>
>>> ! -d a,b,c
>>>
>>> could be reasonably interpreted as
>>>
>>> ! -d a&& ! -d b&& ! -d c
>>>
>>> but because using "," in -s/-d means a simple rule expansion, it
>>> actually generates an equivalent of
>>>
>>> ! -d a || ! -d b || ! -d c
>>
>> But OR'ing them IMHO doesn't make much sense, just think about it.
>> I would suggest to AND them.
>> Look, a normal rule like this one
>> iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
>> matches only if every single part of it matches (ie. AND).
>> Then in our negation case above it should behave similar,
>> and not switch to OR.
>
> The matches are AND-ed. However the individual matches may generate OR
> conditions, like multiport.
>
> What you suggest means that while
>
> -d a,b
>
> is interpreted as "a" OR "b", then
>
> ! -d a,b
>
> should be interpeted as NOT "a" AND NOT "b".
>
> I think that'd be pretty confusing.
My problem was this: my eth0 has to accept packets for 2 IPs,
but then I saw that there comes in also much other unwanted
garbage like broadcast and multicast, so I wanted right in the
beginning of my script DROP all packets not destined to the 2 IP.
Ok, I think as an alternative I can realize this with an
own chain and with 'convential' methods.
Too bad, I just wanted avoid that extra work of restructuring my script... :-)
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [iptables] Effect of negating multiple source or dest IPs (-s or -d)
2011-11-08 21:59 ` U.Mutlu
@ 2011-11-08 22:18 ` Amos Jeffries
2011-11-08 23:40 ` Jozsef Kadlecsik
0 siblings, 1 reply; 10+ messages in thread
From: Amos Jeffries @ 2011-11-08 22:18 UTC (permalink / raw)
To: U.Mutlu; +Cc: netfilter
On Tue, 08 Nov 2011 22:59:37 +0100, U.Mutlu wrote:
> Jozsef Kadlecsik wrote, On 2011-11-08 21:22:
>> On Tue, 8 Nov 2011, U.Mutlu wrote:
>>
>>> Jan Engelhardt wrote, On 2011-11-08 17:44:
>>>> On Tuesday 2011-11-08 17:19, U.Mutlu wrote:
>>>>
>>>>> sim@netmess.org wrote, On 2011-11-08 17:16:
>>>>>>> What's the effect of this rule on a multihomed box
>>>>>>> (the IPs below are just some examples, not real):
>>>>>>>
>>>>>>> iptables -A INPUT ! -d 1.2.3.4,2.3.4.5 -p all -j DROP
>>>>>>>
>>>>>>
>>>>>> the newest version of iptables says:
>>>>>>
>>>>>> iptables v1.4.12.1: ! not allowed with multiple source or
>>>>>> destination IP
>>>>>> addresses
>>>>>
>>>>> Oh, one wonders why they did so...
>>>>
>>>> Because it leads to a confusing result.
>>>>
>>>> ! -d a,b,c
>>>>
>>>> could be reasonably interpreted as
>>>>
>>>> ! -d a&& ! -d b&& ! -d c
>>>>
>>>> but because using "," in -s/-d means a simple rule expansion, it
>>>> actually generates an equivalent of
>>>>
>>>> ! -d a || ! -d b || ! -d c
>>>
>>> But OR'ing them IMHO doesn't make much sense, just think about it.
>>> I would suggest to AND them.
>>> Look, a normal rule like this one
>>> iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j
>>> ACCEPT
>>> matches only if every single part of it matches (ie. AND).
>>> Then in our negation case above it should behave similar,
>>> and not switch to OR.
>>
>> The matches are AND-ed. However the individual matches may generate
>> OR
>> conditions, like multiport.
>>
>> What you suggest means that while
>>
>> -d a,b
>>
>> is interpreted as "a" OR "b", then
>>
>> ! -d a,b
>>
>> should be interpeted as NOT "a" AND NOT "b".
>>
>> I think that'd be pretty confusing.
As opposed to interpreting both as "any of this set":
(a OR b)
versus
NOT (a OR b)
Which can be stated in the docs.
Confusion and clarity is just a matter of having the right description.
A technical reason should be the only blocker here.
AYJ
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [iptables] Effect of negating multiple source or dest IPs (-s or -d)
2011-11-08 22:18 ` Amos Jeffries
@ 2011-11-08 23:40 ` Jozsef Kadlecsik
0 siblings, 0 replies; 10+ messages in thread
From: Jozsef Kadlecsik @ 2011-11-08 23:40 UTC (permalink / raw)
To: Amos Jeffries; +Cc: U.Mutlu, netfilter
On Wed, 9 Nov 2011, Amos Jeffries wrote:
> On Tue, 08 Nov 2011 22:59:37 +0100, U.Mutlu wrote:
> > Jozsef Kadlecsik wrote, On 2011-11-08 21:22:
> > > On Tue, 8 Nov 2011, U.Mutlu wrote:
> > >
> > > > Jan Engelhardt wrote, On 2011-11-08 17:44:
> > > > > On Tuesday 2011-11-08 17:19, U.Mutlu wrote:
> > > > >
> > > > > > sim@netmess.org wrote, On 2011-11-08 17:16:
> > > > > > > > What's the effect of this rule on a multihomed box
> > > > > > > > (the IPs below are just some examples, not real):
> > > > > > > >
> > > > > > > > iptables -A INPUT ! -d 1.2.3.4,2.3.4.5 -p all -j DROP
> > > > > > > >
> > > > > > >
> > > > > > > the newest version of iptables says:
> > > > > > >
> > > > > > > iptables v1.4.12.1: ! not allowed with multiple source or
> > > > > > > destination IP
> > > > > > > addresses
> > > > > >
> > > > > > Oh, one wonders why they did so...
> > > > >
> > > > > Because it leads to a confusing result.
> > > > >
> > > > > ! -d a,b,c
> > > > >
> > > > > could be reasonably interpreted as
> > > > >
> > > > > ! -d a&& ! -d b&& ! -d c
> > > > >
> > > > > but because using "," in -s/-d means a simple rule expansion, it
> > > > > actually generates an equivalent of
> > > > >
> > > > > ! -d a || ! -d b || ! -d c
> > > >
> > > > But OR'ing them IMHO doesn't make much sense, just think about it.
> > > > I would suggest to AND them.
> > > > Look, a normal rule like this one
> > > > iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
> > > > matches only if every single part of it matches (ie. AND).
> > > > Then in our negation case above it should behave similar,
> > > > and not switch to OR.
> > >
> > > The matches are AND-ed. However the individual matches may generate OR
> > > conditions, like multiport.
> > >
> > > What you suggest means that while
> > >
> > > -d a,b
> > >
> > > is interpreted as "a" OR "b", then
> > >
> > > ! -d a,b
> > >
> > > should be interpeted as NOT "a" AND NOT "b".
> > >
> > > I think that'd be pretty confusing.
>
> As opposed to interpreting both as "any of this set":
>
> (a OR b)
> versus
> NOT (a OR b)
>
> Which can be stated in the docs.
But the latter is not possible due to the implementation: the matches in a
rule form AND conditions while rules do OR conditions. The list of IP
addresses in "-d" and "-s" is just a shorthand notation and is exploded
into that many elementary rules.
So the condition "-d a,b" is equivalent to "-d a OR -d b" which is exactly
the two rules generated from the single one. However if "! -d a,b" is to
be interpreted as "NOT (-d a OR -d b)", that is actually "(NOT -d a) AND
(NOT -d b)" which just cannot be exploded into two rules.
Best regards,
Jozsef
-
E-mail : kadlec@blackhole.kfki.hu, kadlec@mail.kfki.hu
PGP key : http://www.kfki.hu/~kadlec/pgp_public_key.txt
Address : KFKI Research Institute for Particle and Nuclear Physics
H-1525 Budapest 114, POB. 49, Hungary
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2011-11-08 23:40 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-08 15:56 [iptables] Effect of negating multiple source or dest IPs (-s or -d) U.Mutlu
2011-11-08 16:16 ` sim
2011-11-08 16:19 ` U.Mutlu
2011-11-08 16:44 ` Jan Engelhardt
2011-11-08 17:11 ` U.Mutlu
2011-11-08 19:23 ` Jan Engelhardt
2011-11-08 20:22 ` Jozsef Kadlecsik
2011-11-08 21:59 ` U.Mutlu
2011-11-08 22:18 ` Amos Jeffries
2011-11-08 23:40 ` Jozsef Kadlecsik
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.