netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* ProxyARP and IPSec
@ 2006-08-23  0:31 H. Peter Anvin
  2006-08-23 19:14 ` Thomas Graf
  0 siblings, 1 reply; 23+ messages in thread
From: H. Peter Anvin @ 2006-08-23  0:31 UTC (permalink / raw)
  To: netdev

Hello all,

I am having a puzzlement combining ProxyARP and IPsec.  Specificially, I 
want to take a single address from a local LAN and extend it via IPsec 
to another site.

Unfortunately IPsec tunnels, unlike all other tunnels, don't have 
pseudo-devices associated with them.  I understand this to be from 
desire of uniformity with the other modes of IPsec, but this is one of 
many cases where it causes problems.

Specifically, Linux will not ProxyARP for an address unless it has a 
route for it, *and* that route either has a DNAT marking or points to a 
different interface than the input interface:

net/ipv4/arp.c:

    855                  } else if (IN_DEV_FORWARD(in_dev)) {
    856                          if ((rt->rt_flags&RTCF_DNAT) ||
    857                              (addr_type == RTN_UNICAST  && 
rt->u.dst.dev != dev &&
^^^^^^^^^^^^^^^^^^^^
    858                               (arp_fwd_proxy(in_dev, rt) || 
pneigh_lookup(&arp_tbl, &tip, dev, 0)))) {

However, since IPsec tunnels don't have interfaces associated with it, 
the route to the other side of the IPsec tunnel with point to the same 
interface (there is, elsewhere, a security policy associated with the 
address), and this selection will fail.

Does anyone know of a trick around this issue?

	-hpa

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: ProxyARP and IPSec
  2006-08-23  0:31 ProxyARP and IPSec H. Peter Anvin
@ 2006-08-23 19:14 ` Thomas Graf
  2006-08-23 22:14   ` David Miller
  0 siblings, 1 reply; 23+ messages in thread
From: Thomas Graf @ 2006-08-23 19:14 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: netdev

* H. Peter Anvin <hpa@zytor.com> 2006-08-22 17:31
> Specifically, Linux will not ProxyARP for an address unless it has a 
> route for it, *and* that route either has a DNAT marking or points to a 
> different interface than the input interface:

I can think of a very ugly way: Use netfilter to match on the
arp packet prerouting, set nfmark to some value, create a routing
rule matching the fwmark again, have it look up a separate table
with a dummy route pointing to a dummy device. Make sure to have
a proxy neighbour entry as using the device proxy_arp sysctl would
fail again.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: ProxyARP and IPSec
  2006-08-23 19:14 ` Thomas Graf
@ 2006-08-23 22:14   ` David Miller
  2006-08-23 23:18     ` Alexey Kuznetsov
  2006-08-24 10:50     ` Thomas Graf
  0 siblings, 2 replies; 23+ messages in thread
From: David Miller @ 2006-08-23 22:14 UTC (permalink / raw)
  To: tgraf; +Cc: hpa, netdev

From: Thomas Graf <tgraf@suug.ch>
Date: Wed, 23 Aug 2006 21:14:25 +0200

> * H. Peter Anvin <hpa@zytor.com> 2006-08-22 17:31
> > Specifically, Linux will not ProxyARP for an address unless it has a 
> > route for it, *and* that route either has a DNAT marking or points to a 
> > different interface than the input interface:
> 
> I can think of a very ugly way: Use netfilter to match on the
> arp packet prerouting, set nfmark to some value, create a routing
> rule matching the fwmark again, have it look up a separate table
> with a dummy route pointing to a dummy device. Make sure to have
> a proxy neighbour entry as using the device proxy_arp sysctl would
> fail again.

This shows we have a usability problem if that's the only way
to do this :-)

What he's trying to accomplish doesn't sound all that weird,
does anyone have any other ideas?

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: ProxyARP and IPSec
  2006-08-23 22:14   ` David Miller
@ 2006-08-23 23:18     ` Alexey Kuznetsov
  2006-08-24  1:12       ` H. Peter Anvin
  2006-08-24 10:50     ` Thomas Graf
  1 sibling, 1 reply; 23+ messages in thread
From: Alexey Kuznetsov @ 2006-08-23 23:18 UTC (permalink / raw)
  To: David Miller; +Cc: tgraf, hpa, netdev

Hello!

> What he's trying to accomplish doesn't sound all that weird,

Absolutely sane.


> does anyone have any other ideas?

The question is where is this host really?

If it is far far away and connected only via IPsec tunnel with destionation
of tunnel different of host address

ip ro add THEHOST dev dummy0

should be enough. It asserts that THEHOST is not on eth0.
IPsec policy will figure out correct route, unless something is broken.

If tunnel endpoint is THEHOST, then it is necessary to make a prescription
how to reach it bypassing IPsec. This can be made with a rule telling
that THEHOST is reachable from router and only from router:

ip ru add from OUR_TUNNEL_ENDPOINT to THEHOST table XXX
ip ro add THEHOST via THAT_ROUTE_WHICH_IS_SUPPOSED_TO_KNOW table XXX

Alexey

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: ProxyARP and IPSec
  2006-08-23 23:18     ` Alexey Kuznetsov
@ 2006-08-24  1:12       ` H. Peter Anvin
  2006-08-24  1:14         ` H. Peter Anvin
  0 siblings, 1 reply; 23+ messages in thread
From: H. Peter Anvin @ 2006-08-24  1:12 UTC (permalink / raw)
  To: Alexey Kuznetsov; +Cc: David Miller, tgraf, netdev

Alexey Kuznetsov wrote:
> 
> The question is where is this host really?
> 
> If it is far far away and connected only via IPsec tunnel with destionation
> of tunnel different of host address
> 
> ip ro add THEHOST dev dummy0
> 
> should be enough. It asserts that THEHOST is not on eth0.
> IPsec policy will figure out correct route, unless something is broken.
> 

Just tried it, and it works as advertised.

	-hpa

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: ProxyARP and IPSec
  2006-08-24  1:12       ` H. Peter Anvin
@ 2006-08-24  1:14         ` H. Peter Anvin
  2006-08-24  2:20           ` Andy Gay
  0 siblings, 1 reply; 23+ messages in thread
From: H. Peter Anvin @ 2006-08-24  1:14 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: Alexey Kuznetsov, David Miller, tgraf, netdev

H. Peter Anvin wrote:
> Alexey Kuznetsov wrote:
>>
>> The question is where is this host really?
>>
>> If it is far far away and connected only via IPsec tunnel with 
>> destionation
>> of tunnel different of host address
>>
>> ip ro add THEHOST dev dummy0
>>
>> should be enough. It asserts that THEHOST is not on eth0.
>> IPsec policy will figure out correct route, unless something is broken.
>>
> 
> Just tried it, and it works as advertised.
> 

... except that OpenSwan will rip out the route and install a route 
pointing to eth0, thus breaking the thing again.

	-hpa


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: ProxyARP and IPSec
  2006-08-24  1:14         ` H. Peter Anvin
@ 2006-08-24  2:20           ` Andy Gay
  2006-08-24  4:14             ` H. Peter Anvin
  0 siblings, 1 reply; 23+ messages in thread
From: Andy Gay @ 2006-08-24  2:20 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: Alexey Kuznetsov, David Miller, tgraf, netdev

On Wed, 2006-08-23 at 18:14 -0700, H. Peter Anvin wrote:
> H. Peter Anvin wrote:
> > Alexey Kuznetsov wrote:
> >>
> >> The question is where is this host really?
> >>
> >> If it is far far away and connected only via IPsec tunnel with 
> >> destionation
> >> of tunnel different of host address
> >>
> >> ip ro add THEHOST dev dummy0
> >>
> >> should be enough. It asserts that THEHOST is not on eth0.
> >> IPsec policy will figure out correct route, unless something is broken.
> >>
> > 
> > Just tried it, and it works as advertised.
> > 
> 
> ... except that OpenSwan will rip out the route and install a route 
> pointing to eth0, thus breaking the thing again.

Use a custom updown script with Openswan to fix that.

> 
> 	-hpa
> 
> -
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: ProxyARP and IPSec
  2006-08-24  2:20           ` Andy Gay
@ 2006-08-24  4:14             ` H. Peter Anvin
  2006-08-24 12:50               ` Alexey Kuznetsov
  0 siblings, 1 reply; 23+ messages in thread
From: H. Peter Anvin @ 2006-08-24  4:14 UTC (permalink / raw)
  To: Andy Gay; +Cc: Alexey Kuznetsov, David Miller, tgraf, netdev

Andy Gay wrote:
>>>>
>>> Just tried it, and it works as advertised.
>>>
>> ... except that OpenSwan will rip out the route and install a route 
>> pointing to eth0, thus breaking the thing again.
> 
> Use a custom updown script with Openswan to fix that.
> 

*Nod.*

I'm thinking that David definitely has a point about having a usability 
problem, though.  All other kind of tunnels have endpoint devices 
associated with them, and that would make all these kinds of problems go 
away, plus would be nicer to deal with in iptables, dealing with routed 
IPsec connections, etc.

	-hpa

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: ProxyARP and IPSec
  2006-08-23 22:14   ` David Miller
  2006-08-23 23:18     ` Alexey Kuznetsov
@ 2006-08-24 10:50     ` Thomas Graf
  2006-09-07 22:28       ` H. Peter Anvin
  1 sibling, 1 reply; 23+ messages in thread
From: Thomas Graf @ 2006-08-24 10:50 UTC (permalink / raw)
  To: David Miller; +Cc: hpa, netdev

* David Miller <davem@davemloft.net> 2006-08-23 15:14
> From: Thomas Graf <tgraf@suug.ch>
> Date: Wed, 23 Aug 2006 21:14:25 +0200
> 
> > * H. Peter Anvin <hpa@zytor.com> 2006-08-22 17:31
> > > Specifically, Linux will not ProxyARP for an address unless it has a 
> > > route for it, *and* that route either has a DNAT marking or points to a 
> > > different interface than the input interface:
> > 
> > I can think of a very ugly way: Use netfilter to match on the
> > arp packet prerouting, set nfmark to some value, create a routing
> > rule matching the fwmark again, have it look up a separate table
> > with a dummy route pointing to a dummy device. Make sure to have
> > a proxy neighbour entry as using the device proxy_arp sysctl would
> > fail again.
> 
> This shows we have a usability problem if that's the only way
> to do this :-)

What about adding blackhole device to be used for such routes.
I believe it would be good architecture to always use devices
to state directions packets are being received from and sent to.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: ProxyARP and IPSec
  2006-08-24  4:14             ` H. Peter Anvin
@ 2006-08-24 12:50               ` Alexey Kuznetsov
  2006-08-26  4:16                 ` H. Peter Anvin
  0 siblings, 1 reply; 23+ messages in thread
From: Alexey Kuznetsov @ 2006-08-24 12:50 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: Andy Gay, David Miller, tgraf, netdev

Hello!

> I'm thinking that David definitely has a point about having a usability 
> problem, though.  All other kind of tunnels have endpoint devices 
> associated with them, and that would make all these kinds of problems go 
> away, 

Yes, when you deal with sane practical setups, this approach is the only
reasonable one.

Unfortunately, IPsec is not something totally sane and practical :-),
"security gateway" case is small part of it and "routing" viewpoint
clashes fatally with another requirements. Pure result is that we use approach
where it is possible to do everything with some efforts, rather than approach
which is simple and intuitive, but does not allow to do many things.

It is possible to simulate simple life, creating "ipsecX" devices
with disabled xfrm and route all the tunnels there. That would be handy.

I would just advice to rename one of dummy devices to "ipsec0"
and route all the IPsec tunnels there. It is also simple.

What's about iptables, I am sorry, it is too flexible to control IPsec. :-)
One day, someone with enough of energy and stamina will make flow cache
to unify all the kinds of policy rules. Until that day, you have to tune
all three policy sets (routing, ipsec and iptables) separately and take
care of the cases, when one set has to cheat another. :-)

Alexey

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: ProxyARP and IPSec
  2006-08-24 12:50               ` Alexey Kuznetsov
@ 2006-08-26  4:16                 ` H. Peter Anvin
  2006-09-02 15:36                   ` Stephen J. Bevan
  0 siblings, 1 reply; 23+ messages in thread
From: H. Peter Anvin @ 2006-08-26  4:16 UTC (permalink / raw)
  To: Alexey Kuznetsov; +Cc: Andy Gay, David Miller, tgraf, netdev

Alexey Kuznetsov wrote:
> Hello!
> 
>> I'm thinking that David definitely has a point about having a usability 
>> problem, though.  All other kind of tunnels have endpoint devices 
>> associated with them, and that would make all these kinds of problems go 
>> away, 
> 
> Yes, when you deal with sane practical setups, this approach is the only
> reasonable one.
> 
> Unfortunately, IPsec is not something totally sane and practical :-),
> "security gateway" case is small part of it and "routing" viewpoint
> clashes fatally with another requirements. Pure result is that we use approach
> where it is possible to do everything with some efforts, rather than approach
> which is simple and intuitive, but does not allow to do many things.
> 

Fair enough.  However, that does beg a question: is there any sane way 
to create the pseudo-device model on top of the current model, as a 
convenience layer?  That way you could get the best of both.

	-hpa

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: ProxyARP and IPSec
  2006-08-26  4:16                 ` H. Peter Anvin
@ 2006-09-02 15:36                   ` Stephen J. Bevan
  2006-09-02 17:30                     ` H. Peter Anvin
  0 siblings, 1 reply; 23+ messages in thread
From: Stephen J. Bevan @ 2006-09-02 15:36 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: netdev

H. Peter Anvin writes:
 > Fair enough.  However, that does beg a question: is there any sane way 
 > to create the pseudo-device model on top of the current model, as a 
 > convenience layer?  That way you could get the best of both.

I assume you were using tunnel-mode IPsec and depending on exactly
what you want to do you may be able to replace it with transport mode
IPsec (or stay with tunnel if the extra 20 bytes of IP is not a
problem) to handle host<->host IPsec and use gre or ipip for overlay
network.  That way you get a virtual device (gre or ipip) you can
route to, run OSPF on, ... etc.

-- 
VGER BF report: U 0.498333

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: ProxyARP and IPSec
  2006-09-02 15:36                   ` Stephen J. Bevan
@ 2006-09-02 17:30                     ` H. Peter Anvin
  2006-09-02 20:54                       ` Stephen J. Bevan
  2006-09-04 22:27                       ` Alexey Kuznetsov
  0 siblings, 2 replies; 23+ messages in thread
From: H. Peter Anvin @ 2006-09-02 17:30 UTC (permalink / raw)
  To: Stephen J. Bevan; +Cc: netdev

Stephen J. Bevan wrote:
> H. Peter Anvin writes:
>  > Fair enough.  However, that does beg a question: is there any sane way 
>  > to create the pseudo-device model on top of the current model, as a 
>  > convenience layer?  That way you could get the best of both.
> 
> I assume you were using tunnel-mode IPsec and depending on exactly
> what you want to do you may be able to replace it with transport mode
> IPsec (or stay with tunnel if the extra 20 bytes of IP is not a
> problem) to handle host<->host IPsec and use gre or ipip for overlay
> network.  That way you get a virtual device (gre or ipip) you can
> route to, run OSPF on, ... etc.

<sarcasm>

What I great idea.  Now I just have to get every host I want to 
interoperate with to support a nonstandard configuration.  The scary 
part is that if I motivate it with "Linux is too stupid to handle 
standard tunnel-mode IPsec" I might actually get away with it.

</sarcasm>

Really... if saying our configuration is so screwed up that we have to 
run a different over-wire protocol isn't an admission of failure I don't 
know what is.  I suspect this contributes to the growth in OpenVPN as well.

	-hpa

-- 
VGER BF report: U 0.500003

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: ProxyARP and IPSec
  2006-09-02 17:30                     ` H. Peter Anvin
@ 2006-09-02 20:54                       ` Stephen J. Bevan
  2006-09-05  5:17                         ` H. Peter Anvin
  2006-09-04 22:27                       ` Alexey Kuznetsov
  1 sibling, 1 reply; 23+ messages in thread
From: Stephen J. Bevan @ 2006-09-02 20:54 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: Stephen J. Bevan, netdev

 > <sarcasm>
 > 
 > What I great idea.  Now I just have to get every host I want to 
 > interoperate with to support a nonstandard configuration.  The scary 
 > part is that if I motivate it with "Linux is too stupid to handle 
 > standard tunnel-mode IPsec" I might actually get away with it.
 > 
 > </sarcasm>

Linux handles tunnel-mode IPsec in the same way that most IPsec
vendors did and many still do.  For example, Cisco IOS has pages and
pages of documentation about how to combine IPsec with GRE in order to
support securely running OSPF between sites, precisely because its
IPsec didn't offer a virtual interface.  However, Cisco (along with
Netscreen/Juniper and Fortinet) now additionally support IPsec that
uses a virtual interface and so you have a choice of using an
interface or not as you see fit.  I would be useful if Linux offered
the option but code talks and I'm not offering a patch so I'm not in a
position to complain about what Linux currently supports.


 > Really... if saying our configuration is so screwed up that we have to 
 > run a different over-wire protocol isn't an admission of failure I don't 

If you use ipip the over-wire protocol is identical, see RFC 3884
section 3.1 or you can test it right now using manual keying (remote
side uses tunnel mode, your side uses transport + ipip).  To use IKE
pluto would need to be hacked a bit, though most of the changes could
be handled via a updown script.


 > know what is.  I suspect this contributes to the growth in OpenVPN as well.

Haven't you heard, SSL based VPNs are the future :-)

-- 
VGER BF report: U 0.947229

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: ProxyARP and IPSec
  2006-09-02 17:30                     ` H. Peter Anvin
  2006-09-02 20:54                       ` Stephen J. Bevan
@ 2006-09-04 22:27                       ` Alexey Kuznetsov
  2006-09-05  5:12                         ` H. Peter Anvin
  2006-09-06  2:25                         ` Stephen J. Bevan
  1 sibling, 2 replies; 23+ messages in thread
From: Alexey Kuznetsov @ 2006-09-04 22:27 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: Stephen J. Bevan, netdev

Hello!

> <sarcasm>
> 
> What I great idea.  Now I just have to get every host I want to 
> interoperate with to support a nonstandard configuration.  The scary 
> part is that if I motivate it with "Linux is too stupid to handle 
> standard tunnel-mode IPsec" I might actually get away with it.

sarcasm mode is not accepted. Linux does exactly "standard tunnel-mode IPsec".
It does not give you device to make you totally happy.

Probably, you are not aware that "standard IPsec tunnel device",
if it is created:

1. Probably, will not accept fragmented frames, because IPsec cannot
   handle them
2. Probably, will have undefined MTU (65536), because of 1
3. Probably, will screw up TCP because of 2
   etc.

Actually, this is the reason why it is not implemented.
It is dirty business. :-) And the person, who implements this,
has to be really... unscrupulous. :-)

Alexey

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: ProxyARP and IPSec
  2006-09-04 22:27                       ` Alexey Kuznetsov
@ 2006-09-05  5:12                         ` H. Peter Anvin
  2006-09-05  9:05                           ` Alexey Kuznetsov
  2006-09-06  2:25                         ` Stephen J. Bevan
  1 sibling, 1 reply; 23+ messages in thread
From: H. Peter Anvin @ 2006-09-05  5:12 UTC (permalink / raw)
  To: Alexey Kuznetsov; +Cc: Stephen J. Bevan, netdev

Alexey Kuznetsov wrote:
> 
> sarcasm mode is not accepted. Linux does exactly "standard tunnel-mode IPsec".
> It does not give you device to make you totally happy.
> 

The sarcasm was a commentary to the "just switch protocols then" comment.

> Probably, you are not aware that "standard IPsec tunnel device",
> if it is created:
> 
> 1. Probably, will not accept fragmented frames, because IPsec cannot
>    handle them

Now that's interesting.  If this is true, and I have every reason to 
believe you know what you're talking about, then that would seem to be a 
problem which is hard to overcome for any security gateway, regardless 
of how it's implemented in the kernel -- the data originator might be on 
a totally different host!

Furthermore, it seems to directly contradict the following statement 
from RFC 4303 section 3.3.4:

"In tunnel mode, ESP is applied to an IP packet, which may be a fragment 
of an IP datagram."

That reading seems to imply that it should handle fragments just fine. 
Similarly, RFC 4301 section 13 ("differences from RFC 2401") states:

"For tunnel mode SAs, an SG, BITS, or BITW implementation is now allowed 
to fragment packets before applying IPsec.  This applies only to IPv4. 
For IPv6 packets, only the originator is allowed to fragment them."

(consistently with the overall IPv6 architecture.)

Transport mode is different, of course.

> 2. Probably, will have undefined MTU (65536), because of 1
> 3. Probably, will screw up TCP because of 2
>    etc.
> 
> Actually, this is the reason why it is not implemented.
> It is dirty business. :-) And the person, who implements this,
> has to be really... unscrupulous. :-)

I'm clearly failing to understand where, exactly, the problems lie.  I 
would appreciate any pointers and/or clue transfusion...

	-hpa

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: ProxyARP and IPSec
  2006-09-02 20:54                       ` Stephen J. Bevan
@ 2006-09-05  5:17                         ` H. Peter Anvin
  0 siblings, 0 replies; 23+ messages in thread
From: H. Peter Anvin @ 2006-09-05  5:17 UTC (permalink / raw)
  To: Stephen J. Bevan; +Cc: netdev

Stephen J. Bevan wrote:

> 
>  > Really... if saying our configuration is so screwed up that we have to 
>  > run a different over-wire protocol isn't an admission of failure I don't 
> 
> If you use ipip the over-wire protocol is identical, see RFC 3884
> section 3.1 or you can test it right now using manual keying (remote
> side uses tunnel mode, your side uses transport + ipip).  To use IKE
> pluto would need to be hacked a bit, though most of the changes could
> be handled via a updown script.
> 

Interesting.  It might be interesting to implement userspace (e.g. 
OpenSwan) in such a way that all tunnel-mode IPsec is implemented this 
way automatically, using an ipip interface in the kernel.

	-hpa


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: ProxyARP and IPSec
  2006-09-05  5:12                         ` H. Peter Anvin
@ 2006-09-05  9:05                           ` Alexey Kuznetsov
  2006-09-22 20:36                             ` David Miller
  0 siblings, 1 reply; 23+ messages in thread
From: Alexey Kuznetsov @ 2006-09-05  9:05 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: Stephen J. Bevan, netdev

Hello!

> >1. Probably, will not accept fragmented frames, because IPsec cannot
> >   handle them
...
> I'm clearly failing to understand where, exactly, the problems lie.  I 
> would appreciate any pointers and/or clue transfusion...

I said "probably".

Look into old rfc2401, search for word "fragment".
Then search for the same word in new rfc4301. All those 100K of new text
deal with various design bugs in IPsec, mostly with pathologies encountered
in the case of security gateways. (Some section there are real fun: f.e.
look at section 7.2)

With this amount of thin places, there are no chances it will interoperate,
unless you use the most conservative approach.

My opinion? Scared. :-)

Alexey

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: ProxyARP and IPSec
  2006-09-04 22:27                       ` Alexey Kuznetsov
  2006-09-05  5:12                         ` H. Peter Anvin
@ 2006-09-06  2:25                         ` Stephen J. Bevan
  1 sibling, 0 replies; 23+ messages in thread
From: Stephen J. Bevan @ 2006-09-06  2:25 UTC (permalink / raw)
  To: Alexey Kuznetsov; +Cc: H. Peter Anvin, Stephen J. Bevan, netdev

Alexey Kuznetsov writes:
 > Probably, you are not aware that "standard IPsec tunnel device",
 > if it is created:
 > 
 > 1. Probably, will not accept fragmented frames, because IPsec cannot
 >    handle them

IPsec can handle them, though not particularly smoothly if the IPsec
tunnel is only supposed to carry a particular port&protocol
combination.


 > 2. Probably, will have undefined MTU (65536), because of 1

An MTU that is more likely to make most things work (at least over
Ethernet) is ETH_DATA_LEN - MAX_SA_LEN where MAX_SA_LEN is however
much is required for IPsec (something like IP + UDP if NAT-T + ESP
header + IV + padding + ESP trailer).  The simplest thing is to just
statically configure it.  However, some implementations dynamically
calculate the IPsec device MTU based on the maximum size required by
any of the IPsec SAs that will go over the interface, using either a
pessimistic (255) or optimistic (2) padding estimate.  This can cause
problems for OPSF adjacency if each side arrives at a different MTU
but that can be handled by either manually configuring the device MTU
or explicitly configuring the MTU that OSPF will advertise (I think
Quagga supports that).


 > Actually, this is the reason why it is not implemented.
 > It is dirty business. :-) And the person, who implements this,
 > has to be really... unscrupulous. :-)

Exactly the same issue occurs if one implements IPsec (or any other
encryption method) in user-level using a tun/tap device.  Consequently
while I agree that fragmentation causes an additional level of
problems if one wants to have port/protocol based selectors in IPsec,
I believe that most (but not all) VPN users are quite satisfied with
policies containing all traffic, all ports and so will not encounter
any IPsec specific problems.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: ProxyARP and IPSec
  2006-08-24 10:50     ` Thomas Graf
@ 2006-09-07 22:28       ` H. Peter Anvin
  2006-09-08  7:37         ` Thomas Graf
  0 siblings, 1 reply; 23+ messages in thread
From: H. Peter Anvin @ 2006-09-07 22:28 UTC (permalink / raw)
  To: Thomas Graf; +Cc: David Miller, netdev

Thomas Graf wrote:
> What about adding blackhole device to be used for such routes.
> I believe it would be good architecture to always use devices
> to state directions packets are being received from and sent to.

The dummy device can be used for that.

	-hpa


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: ProxyARP and IPSec
  2006-09-07 22:28       ` H. Peter Anvin
@ 2006-09-08  7:37         ` Thomas Graf
  0 siblings, 0 replies; 23+ messages in thread
From: Thomas Graf @ 2006-09-08  7:37 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: David Miller, netdev

* H. Peter Anvin <hpa@zytor.com> 2006-09-07 15:28
> Thomas Graf wrote:
> >What about adding blackhole device to be used for such routes.
> >I believe it would be good architecture to always use devices
> >to state directions packets are being received from and sent to.
> 
> The dummy device can be used for that.

I was thinking a bit beyond that, a device similiar to ifb but
without a hard header to allow classification. Packets get
enqueued before skb->dst gets overwritten with dst->child and
dequeue handles the second half of xfrm4_output_finish2().

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: ProxyARP and IPSec
  2006-09-05  9:05                           ` Alexey Kuznetsov
@ 2006-09-22 20:36                             ` David Miller
  2006-09-23  4:22                               ` Stephen J. Bevan
  0 siblings, 1 reply; 23+ messages in thread
From: David Miller @ 2006-09-22 20:36 UTC (permalink / raw)
  To: kuznet; +Cc: hpa, stephen, netdev

From: Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
Date: Tue, 5 Sep 2006 13:05:30 +0400

> Look into old rfc2401, search for word "fragment".
> Then search for the same word in new rfc4301. All those 100K of new text
> deal with various design bugs in IPsec, mostly with pathologies encountered
> in the case of security gateways. (Some section there are real fun: f.e.
> look at section 7.2)

I even was not aware of this problem. :-)

Essentially, if you use ports as part of your selector,
then it is impossible to handle anything other than the
first fragment of a fragmented frame because the subsequent
fragments will not have the ports which you need in order
to match.

The suggestions in 7.2 involving a seperate SA for the non-first
fragments seem totally unrealistic, if you ask me.  They even say
the idea cannot work with ipv6, what is the point? :-)



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: ProxyARP and IPSec
  2006-09-22 20:36                             ` David Miller
@ 2006-09-23  4:22                               ` Stephen J. Bevan
  0 siblings, 0 replies; 23+ messages in thread
From: Stephen J. Bevan @ 2006-09-23  4:22 UTC (permalink / raw)
  To: David Miller; +Cc: kuznet, hpa, stephen, netdev

David Miller writes:
 > Essentially, if you use ports as part of your selector,
 > then it is impossible to handle anything other than the
 > first fragment of a fragmented frame because the subsequent
 > fragments will not have the ports which you need in order
 > to match.

If you have port/protocol based selectors and you are firewalling then
re-assembly is already being done so IPsec will see the re-assembled
packet at little cost.  Alternately in a pure IPsec configuration it
possible to arrange things so that re-assembly is only done if
port/protocol based selectors are used.

^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2006-09-23  4:23 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-08-23  0:31 ProxyARP and IPSec H. Peter Anvin
2006-08-23 19:14 ` Thomas Graf
2006-08-23 22:14   ` David Miller
2006-08-23 23:18     ` Alexey Kuznetsov
2006-08-24  1:12       ` H. Peter Anvin
2006-08-24  1:14         ` H. Peter Anvin
2006-08-24  2:20           ` Andy Gay
2006-08-24  4:14             ` H. Peter Anvin
2006-08-24 12:50               ` Alexey Kuznetsov
2006-08-26  4:16                 ` H. Peter Anvin
2006-09-02 15:36                   ` Stephen J. Bevan
2006-09-02 17:30                     ` H. Peter Anvin
2006-09-02 20:54                       ` Stephen J. Bevan
2006-09-05  5:17                         ` H. Peter Anvin
2006-09-04 22:27                       ` Alexey Kuznetsov
2006-09-05  5:12                         ` H. Peter Anvin
2006-09-05  9:05                           ` Alexey Kuznetsov
2006-09-22 20:36                             ` David Miller
2006-09-23  4:22                               ` Stephen J. Bevan
2006-09-06  2:25                         ` Stephen J. Bevan
2006-08-24 10:50     ` Thomas Graf
2006-09-07 22:28       ` H. Peter Anvin
2006-09-08  7:37         ` Thomas Graf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).