Re: multilink VPN

2009-05-31 Thread Stuart Henderson
On 2009-05-31, Stuart Henderson  wrote:
>> Uhm. The tunnel endpoints and the gre src and dest IPs are the same. I
>> have a bad feeling about that.
>
> ahh, changing that gets me a lot further, thanks. gre's nasty hack
> to toggle the address's LSB isn't quite enough then; not a problem.
>
>> Additionally I remember some strange issues with gre(4) and ospfd but I 
>> thought I fixed that.
>
> let's see if I can work out how to get beyond EXCHG...

ah, that just needed the gre0 config clearing from ospfd (reload with
the line commented and reload with it back in) and now it's fine and
appears to be stable. good. thanks for the clue Claudio.



Re: multilink VPN

2009-05-31 Thread Stuart Henderson
On 2009-05-31, Claudio Jeker  wrote:
> On Sun, May 31, 2009 at 01:13:25PM +, Stuart Henderson wrote:
>> On 2009-05-31, Stuart Henderson  wrote:
>> > On 2009-05-29, Stuart Henderson  wrote:
>> >>
>> >> OSPF over gre's or gif's (which can then themselves be protected by
>> >> ipsec) is probably the fastest option at present on OpenBSD.
>> >
>> > Hrmm. And then I try it...
>> >
>> > Does anyone actually have this working and if so would they mind
>> > sharing config? I'm seeing the hellos go out the physical interface
>> > rather than the gre.
>> >
>> > # tcpdump -nivr0 -vv proto ospf
>> > 13:00:18.661860 85.158.44.158 > 224.0.0.5: OSPFv2-hello 44: rtrid 
>> > 85.158.44.149 backbone auth MD5 E mask 255.255.255.255 int 1 pri 1 dead 4 
>> > nbrs [tos 0xc0] [ttl 1] (id 53330, len 80)
>> > 13:00:19.672022 85.158.44.158 > 224.0.0.5: OSPFv2-hello 44: rtrid 
>> > 85.158.44.149 backbone auth MD5 E mask 255.255.255.255 int 1 pri 1 dead 4 
>> > nbrs [tos 0xc0] [ttl 1] (id 23013, len 80)
>> > 13:00:20.682184 85.158.44.158 > 224.0.0.5: OSPFv2-hello 44: rtrid 
>> > 85.158.44.149 backbone auth MD5 E mask 255.255.255.255 int 1 pri 1 dead 4 
>> > nbrs [tos 0xc0] [ttl 1] (id 23179, len 80)
>> > 13:00:21.692350 85.158.44.158 > 224.0.0.5: OSPFv2-hello 44: rtrid 
>> > 85.158.44.149 backbone auth MD5 E mask 255.255.255.255 int 1 pri 1 dead 4 
>> > nbrs [tos 0xc0] [ttl 1] (id 60275, len 80)
>> >
>> > # tcpdump -nigre0 -vv proto ospf
>> >
>> >
>> > The gre itself is fine, I can ping over it and the packets show up
>> > correctly on gre0, and also correctly on vr0 marked with "(gre encap)".
>> > It's correct (per RFC2328 8.1) that AllSPFRouters is used rather than
>> > the tunnel endpoint addresses even on point-to-point.
>> >
>> >
>> 
>> Hrmm and double hrmm.
>> 
>> startup
>> orig_rtr_lsa: area 0.0.0.0
>> orig_rtr_lsa: stub net, interface vr0
>> if_fsm: event UP resulted in action START and changing state for interface 
>> vr0 from DOWN to WAIT
>> if_join_group: error IP_ADD_MEMBERSHIP, interface gre0 address 224.0.0.5: 
>> Address already in use
>> 
>> $ sudo grep -A3 area /etc/ospfd.conf
>>  
>> area 0.0.0.0 {
>> interface gre0 { metric 200 }
>> interface vr0
>> }
>> 
>> $ ifconfig gre0
>> gre0: flags=9011 mtu 1476
>> priority: 0
>> groups: gre
>> physical address inet 85.158.44.158 --> 195.95.187.1
>> inet6 fe80::20d:b9ff:fe13:5198%gre0 ->  prefixlen 64 scopeid 0x6
>> inet 85.158.44.158 --> 195.95.187.1 netmask 0x
>> 
>
> Uhm. The tunnel endpoints and the gre src and dest IPs are the same. I
> have a bad feeling about that.

ahh, changing that gets me a lot further, thanks. gre's nasty hack
to toggle the address's LSB isn't quite enough then; not a problem.

> Additionally I remember some strange issues with gre(4) and ospfd but I 
> thought I fixed that.

let's see if I can work out how to get beyond EXCHG...



Re: multilink VPN

2009-05-31 Thread Claudio Jeker
On Sun, May 31, 2009 at 01:13:25PM +, Stuart Henderson wrote:
> On 2009-05-31, Stuart Henderson  wrote:
> > On 2009-05-29, Stuart Henderson  wrote:
> >>
> >> OSPF over gre's or gif's (which can then themselves be protected by
> >> ipsec) is probably the fastest option at present on OpenBSD.
> >
> > Hrmm. And then I try it...
> >
> > Does anyone actually have this working and if so would they mind
> > sharing config? I'm seeing the hellos go out the physical interface
> > rather than the gre.
> >
> > # tcpdump -nivr0 -vv proto ospf
> > 13:00:18.661860 85.158.44.158 > 224.0.0.5: OSPFv2-hello 44: rtrid 
> > 85.158.44.149 backbone auth MD5 E mask 255.255.255.255 int 1 pri 1 dead 4 
> > nbrs [tos 0xc0] [ttl 1] (id 53330, len 80)
> > 13:00:19.672022 85.158.44.158 > 224.0.0.5: OSPFv2-hello 44: rtrid 
> > 85.158.44.149 backbone auth MD5 E mask 255.255.255.255 int 1 pri 1 dead 4 
> > nbrs [tos 0xc0] [ttl 1] (id 23013, len 80)
> > 13:00:20.682184 85.158.44.158 > 224.0.0.5: OSPFv2-hello 44: rtrid 
> > 85.158.44.149 backbone auth MD5 E mask 255.255.255.255 int 1 pri 1 dead 4 
> > nbrs [tos 0xc0] [ttl 1] (id 23179, len 80)
> > 13:00:21.692350 85.158.44.158 > 224.0.0.5: OSPFv2-hello 44: rtrid 
> > 85.158.44.149 backbone auth MD5 E mask 255.255.255.255 int 1 pri 1 dead 4 
> > nbrs [tos 0xc0] [ttl 1] (id 60275, len 80)
> >
> > # tcpdump -nigre0 -vv proto ospf
> >
> >
> > The gre itself is fine, I can ping over it and the packets show up
> > correctly on gre0, and also correctly on vr0 marked with "(gre encap)".
> > It's correct (per RFC2328 8.1) that AllSPFRouters is used rather than
> > the tunnel endpoint addresses even on point-to-point.
> >
> >
> 
> Hrmm and double hrmm.
> 
> startup
> orig_rtr_lsa: area 0.0.0.0
> orig_rtr_lsa: stub net, interface vr0
> if_fsm: event UP resulted in action START and changing state for interface 
> vr0 from DOWN to WAIT
> if_join_group: error IP_ADD_MEMBERSHIP, interface gre0 address 224.0.0.5: 
> Address already in use
> 
> $ sudo grep -A3 area /etc/ospfd.conf 
> 
> area 0.0.0.0 {
> interface gre0 { metric 200 }
> interface vr0
> }
> 
> $ ifconfig gre0
> gre0: flags=9011 mtu 1476
> priority: 0
> groups: gre
> physical address inet 85.158.44.158 --> 195.95.187.1
> inet6 fe80::20d:b9ff:fe13:5198%gre0 ->  prefixlen 64 scopeid 0x6
> inet 85.158.44.158 --> 195.95.187.1 netmask 0x
> 

Uhm. The tunnel endpoints and the gre src and dest IPs are the same. I
have a bad feeling about that. Additionally I remember some strange issues
with gre(4) and ospfd but I thought I fixed that.

-- 
:wq Claudio



Re: multilink VPN

2009-05-31 Thread Stuart Henderson
On 2009-05-31, Stuart Henderson  wrote:
> On 2009-05-29, Stuart Henderson  wrote:
>>
>> OSPF over gre's or gif's (which can then themselves be protected by
>> ipsec) is probably the fastest option at present on OpenBSD.
>
> Hrmm. And then I try it...
>
> Does anyone actually have this working and if so would they mind
> sharing config? I'm seeing the hellos go out the physical interface
> rather than the gre.
>
> # tcpdump -nivr0 -vv proto ospf
> 13:00:18.661860 85.158.44.158 > 224.0.0.5: OSPFv2-hello 44: rtrid 
> 85.158.44.149 backbone auth MD5 E mask 255.255.255.255 int 1 pri 1 dead 4 
> nbrs [tos 0xc0] [ttl 1] (id 53330, len 80)
> 13:00:19.672022 85.158.44.158 > 224.0.0.5: OSPFv2-hello 44: rtrid 
> 85.158.44.149 backbone auth MD5 E mask 255.255.255.255 int 1 pri 1 dead 4 
> nbrs [tos 0xc0] [ttl 1] (id 23013, len 80)
> 13:00:20.682184 85.158.44.158 > 224.0.0.5: OSPFv2-hello 44: rtrid 
> 85.158.44.149 backbone auth MD5 E mask 255.255.255.255 int 1 pri 1 dead 4 
> nbrs [tos 0xc0] [ttl 1] (id 23179, len 80)
> 13:00:21.692350 85.158.44.158 > 224.0.0.5: OSPFv2-hello 44: rtrid 
> 85.158.44.149 backbone auth MD5 E mask 255.255.255.255 int 1 pri 1 dead 4 
> nbrs [tos 0xc0] [ttl 1] (id 60275, len 80)
>
> # tcpdump -nigre0 -vv proto ospf
>
>
> The gre itself is fine, I can ping over it and the packets show up
> correctly on gre0, and also correctly on vr0 marked with "(gre encap)".
> It's correct (per RFC2328 8.1) that AllSPFRouters is used rather than
> the tunnel endpoint addresses even on point-to-point.
>
>

Hrmm and double hrmm.

startup
orig_rtr_lsa: area 0.0.0.0
orig_rtr_lsa: stub net, interface vr0
if_fsm: event UP resulted in action START and changing state for interface vr0 
from DOWN to WAIT
if_join_group: error IP_ADD_MEMBERSHIP, interface gre0 address 224.0.0.5: 
Address already in use

$ sudo grep -A3 area /etc/ospfd.conf   
  
area 0.0.0.0 {
interface gre0 { metric 200 }
interface vr0
}

$ ifconfig gre0
gre0: flags=9011 mtu 1476
priority: 0
groups: gre
physical address inet 85.158.44.158 --> 195.95.187.1
inet6 fe80::20d:b9ff:fe13:5198%gre0 ->  prefixlen 64 scopeid 0x6
inet 85.158.44.158 --> 195.95.187.1 netmask 0x

$ route -n get 195.95.187.1
   route to: 195.95.187.1
destination: 195.95.187.1
  interface: gre0
 if address: 85.158.44.158
   priority: 4 (connected)
  flags: 
 use   mtuexpire
 118 0 0 

$ route -n get 195.95.187.0 
   route to: 195.95.187.0
destination: default
   mask: default
gateway: 85.158.44.145
  interface: vr0
 if address: 85.158.44.158
   priority: 8 (static)
  flags: 
 use   mtuexpire
 151 0 0 



Re: multilink VPN

2009-05-31 Thread Stuart Henderson
On 2009-05-29, Stuart Henderson  wrote:
>
> OSPF over gre's or gif's (which can then themselves be protected by
> ipsec) is probably the fastest option at present on OpenBSD.

Hrmm. And then I try it...

Does anyone actually have this working and if so would they mind
sharing config? I'm seeing the hellos go out the physical interface
rather than the gre.

# tcpdump -nivr0 -vv proto ospf
13:00:18.661860 85.158.44.158 > 224.0.0.5: OSPFv2-hello 44: rtrid 85.158.44.149 
backbone auth MD5 E mask 255.255.255.255 int 1 pri 1 dead 4 nbrs [tos 0xc0] 
[ttl 1] (id 53330, len 80)
13:00:19.672022 85.158.44.158 > 224.0.0.5: OSPFv2-hello 44: rtrid 85.158.44.149 
backbone auth MD5 E mask 255.255.255.255 int 1 pri 1 dead 4 nbrs [tos 0xc0] 
[ttl 1] (id 23013, len 80)
13:00:20.682184 85.158.44.158 > 224.0.0.5: OSPFv2-hello 44: rtrid 85.158.44.149 
backbone auth MD5 E mask 255.255.255.255 int 1 pri 1 dead 4 nbrs [tos 0xc0] 
[ttl 1] (id 23179, len 80)
13:00:21.692350 85.158.44.158 > 224.0.0.5: OSPFv2-hello 44: rtrid 85.158.44.149 
backbone auth MD5 E mask 255.255.255.255 int 1 pri 1 dead 4 nbrs [tos 0xc0] 
[ttl 1] (id 60275, len 80)

# tcpdump -nigre0 -vv proto ospf


The gre itself is fine, I can ping over it and the packets show up
correctly on gre0, and also correctly on vr0 marked with "(gre encap)".
It's correct (per RFC2328 8.1) that AllSPFRouters is used rather than
the tunnel endpoint addresses even on point-to-point.



Re: multilink VPN

2009-05-30 Thread Anathae Townsend
James Mackinnon wrote on Friday, May 29, 2009 6:25 PM
> Hi All
> 
> Thanks for your feedback.
> 
> The guy regarding the cisco is a CCIE so I tend to accept his
> statements
> quick enough..
> 
> In VPN, I am referencing it in general terms in the creation of a
> private
> network over a public network of course.  I would go with MPLS or
> another
> technology, however again, not 100% failsafe.
> 
> Their application is a thick app which has allowances for network
> drops,
> however, the data is a real-time life and death type of solution in
> that
> they are a security monitoring company with multiple sites to which
> access
> data in 1 location. This is what I must ensure stays up because staff
> must
> be able to handle the alarms..
> 
> Roughly 1 million alarms a day go through this network, thus, any
> outage can
> result in dropped alarms.. Our solutions in both facilities also offer
> some
> allowances for drops by caching an alarm until network return, however
> applications failures are also bad in this case.
> 
> At first, I was looking at BGP, and in the past have used it, but with
> convergence time on a net down situation, it doesn't come close to the
> time
> required.
> 
> Personally, I think any solution that can rebuild in 10-30 seconds is a
> very
> solid solution. If they are not happy with that, I could recommend a
> very
> expensive alternative but that won't fly.
> 
> Stuart, do you know of some sources I should review on your mentioned
> idea.
> 
> I am also looking at multi-segmenting the locations systems and having
> their
> applications account for loss to failover to the second IP.
> 
> fun little project, very small to almost nil budget is the challange.
> 
> Cheers

If it absolutely has to be up, OpenVMS



Re: multilink VPN

2009-05-29 Thread Jussi Peltola
In cisco speak, with pretty pictures:
http://www.cisco.com/en/US/tech/tk583/tk372/technologies_configuration_example09186a00800a43f6.shtml

On OpenBSD, it works analoguously, except that it's much cleaner :)

Just think of the ipsec secured gre tunnel as a wire from point A to B.
Make two such wires. Then run a routing protocol on them to redundantly
route your traffic through.

Some things to consider:

1. What if the internet links fail some other way than completely dead,
like high packet loss?

2. The rest of the system probably isn't as reliable as you think, if
you can't have much money for making the internet links redundant.

-- 
Jussi Peltola



Re: multilink VPN

2009-05-29 Thread James Mackinnon

Hi All

Thanks for your feedback.

The guy regarding the cisco is a CCIE so I tend to accept his statements 
quick enough..


In VPN, I am referencing it in general terms in the creation of a private 
network over a public network of course.  I would go with MPLS or another 
technology, however again, not 100% failsafe.


Their application is a thick app which has allowances for network drops, 
however, the data is a real-time life and death type of solution in that 
they are a security monitoring company with multiple sites to which access 
data in 1 location. This is what I must ensure stays up because staff must 
be able to handle the alarms..


Roughly 1 million alarms a day go through this network, thus, any outage can 
result in dropped alarms.. Our solutions in both facilities also offer some 
allowances for drops by caching an alarm until network return, however 
applications failures are also bad in this case.


At first, I was looking at BGP, and in the past have used it, but with 
convergence time on a net down situation, it doesn't come close to the time 
required.


Personally, I think any solution that can rebuild in 10-30 seconds is a very 
solid solution. If they are not happy with that, I could recommend a very 
expensive alternative but that won't fly.


Stuart, do you know of some sources I should review on your mentioned idea.

I am also looking at multi-segmenting the locations systems and having their 
applications account for loss to failover to the second IP.


fun little project, very small to almost nil budget is the challange.

Cheers

James
- Original Message - 
From: "Stuart Henderson" 

To: 
Sent: Friday, May 29, 2009 7:37 PM
Subject: Re: multilink VPN



On 2009-05-29, Toni Mueller  wrote:
On Wed, 27.05.2009 at 22:07:25 -0300, James Mackinnon 
 wrote:
I need to setup redundant VPN's between these locations without the use 
of

BGP.


I have used sasync in the past, pfsync etc however, I have not tried to 
setup
a VPN where 2 ISPs are used without the ISPs setup with BGP.  Because 
BGP
convergance can take a bit of time, and the network in this case not 
being

able to drop for 1 second, I need to determine what option is best.


I heavily doubt that you'll be able to keep the network up at all
times because even CARP failover will take longer than one second.


OSPF over gre's or gif's (which can then themselves be protected by
ipsec) is probably the fastest option at present on OpenBSD. You're
restricted to the lowest value you can set router-dead-time to; with
very aggressive timers (which are likely to cause problems with
false drops) that's 2 seconds. 3-4 seconds (with hellos at a second)
is more realistic for fast recovery over ethernet or some good quality
pseudowire circuit. Not sure exactly what you mean by "VPN" as it's not
a well defined term but you should look at that carefully. e.g. Rekeying
can be a little on the slow side, you want to avoid this happening
on both connections at the same time.


I strongly suspect that if you really want to force less than 1 seconds
of downtime even in the case of error, then you need to swap IP for a
real high-reliability type of connection like telcos use in their long
hauls (eg. SDH).


BFD can be quite quick.

In some parts of the world these better types of connection are simply
not available.

If you're used to what's available in Europe (1Gb ethernet-presented
private circuit over about 15 miles for GBP21K/year?) you will find the
situation in some places absolutely unbelievable.




Re: multilink VPN

2009-05-29 Thread Stuart Henderson
On 2009-05-29, Toni Mueller  wrote:
> On Wed, 27.05.2009 at 22:07:25 -0300, James Mackinnon 
>  wrote:
>> I need to setup redundant VPN's between these locations without the use of
>> BGP.
>
>> I have used sasync in the past, pfsync etc however, I have not tried to setup
>> a VPN where 2 ISPs are used without the ISPs setup with BGP.  Because BGP
>> convergance can take a bit of time, and the network in this case not being
>> able to drop for 1 second, I need to determine what option is best.
>
> I heavily doubt that you'll be able to keep the network up at all
> times because even CARP failover will take longer than one second.

OSPF over gre's or gif's (which can then themselves be protected by
ipsec) is probably the fastest option at present on OpenBSD. You're
restricted to the lowest value you can set router-dead-time to; with
very aggressive timers (which are likely to cause problems with
false drops) that's 2 seconds. 3-4 seconds (with hellos at a second)
is more realistic for fast recovery over ethernet or some good quality
pseudowire circuit. Not sure exactly what you mean by "VPN" as it's not
a well defined term but you should look at that carefully. e.g. Rekeying
can be a little on the slow side, you want to avoid this happening
on both connections at the same time.

> I strongly suspect that if you really want to force less than 1 seconds
> of downtime even in the case of error, then you need to swap IP for a
> real high-reliability type of connection like telcos use in their long
> hauls (eg. SDH).

BFD can be quite quick.

In some parts of the world these better types of connection are simply
not available.

If you're used to what's available in Europe (1Gb ethernet-presented
private circuit over about 15 miles for GBP21K/year?) you will find the
situation in some places absolutely unbelievable.



Re: multilink VPN

2009-05-29 Thread Toni Mueller
Hi,

On Wed, 27.05.2009 at 22:07:25 -0300, James Mackinnon  
wrote:
> I need to setup redundant VPN's between these locations without the use of
> BGP.

> I have used sasync in the past, pfsync etc however, I have not tried to setup
> a VPN where 2 ISPs are used without the ISPs setup with BGP.  Because BGP
> convergance can take a bit of time, and the network in this case not being
> able to drop for 1 second, I need to determine what option is best.

I heavily doubt that you'll be able to keep the network up at all
times because even CARP failover will take longer than one second.

> I have spoke with a cisco guy today and they can do multilink VPN's on cisco
> for this,

Did he actually tell you how they make sure that there'll be no
downtime of even one second? Was the explanation technically sound?
How about error conditions in the Internet, between your sites? 



FWIW, I've configured semi-"multilink" VPN in the past (before the
"CARP age"), with this kind of setup:


LAN1 --- FW{1,2} --- Internet --- FW{3,4} --- LAN2

with

LAN1, FW1, FW2: my end

FW3, FW4, LAN2: other end (not accessible to me)



Manually switching between FW1 and FW2 usually took on the order of
8-15 seconds.


The other side switched between FW3 and FW4 at their leisure, w/o
telling anyone.

The idea to configure this with isakmpd.conf was to have both peers
configured on both of your firewalls, and then add as many IPSEC
connections so that you cover all connection pairs.

That way, you can access LAN2 from LAN1 regardless whether FW3 or FW4
is operational. In my setup, one of the tunnels simply vanished and the
other appeared, if the other side switched their firewalls.

Now, if you can detect your conditions under which you want to fail
over to the other firewall (eg. fiber cut), it should be easy to
cook up a script and fire it on such an event.


But you won't get away without any downtime, and if you find out how to
do this on the IP level, I'm interested to hear about it.

I strongly suspect that if you really want to force less than 1 seconds
of downtime even in the case of error, then you need to swap IP for a
real high-reliability type of connection like telcos use in their long
hauls (eg. SDH).

But if you can weed out duplicate packets, you might be able to create
some magic with bridging and move all packets over both links all the
time, dropping one half at the receiving end(s). But this is only a
shot in the dark - I don't know how to do this.

I'm curious about what kind of application you have that does not
tolerate 1 second of downtime?

If someone has an idea about how to configure this with ipsec.conf, I'm
eager to hear.


Kind regards,
--Toni++



multilink VPN

2009-05-27 Thread James Mackinnon
Hi All

Here is my situation and I am hoping for a little guidance on this one

I have 2 locations, both with 2 fiber internet connections

I need to setup redundant VPN's between these locations without the use of
BGP.


So, my setup would be something like this

Location A
Firewall 1
Connection to ISP1
Wan IP 24.22.22.1

Firewall 2
Connection to ISP2
Wan IP 33.33.33.1

Internal Interfaces are in a carp setup
Internal IP range is 192.168.0.0/24

Location B
Firewall 1
Connection to ISP1
Wan IP 24.22.21.1

Firewall 2
Connection to ISP2
Wan IP 33.33.32.1

Internal Interfaces are in a carp setup
Internal IP Range is 192.168.1.0/24


I have used sasync in the past, pfsync etc however, I have not tried to setup
a VPN where 2 ISPs are used without the ISPs setup with BGP.  Because BGP
convergance can take a bit of time, and the network in this case not being
able to drop for 1 second, I need to determine what option is best.

I have spoke with a cisco guy today and they can do multilink VPN's on cisco
for this, however, being a bit of a OpenBSD fan and prefer to use Openbsd over
cisco any time I can, I would really like to accomplish this task using
OpenBSD.

Thoughts or direction would be great


james