VPN with FAST_IPSEC and ipsec tools
Michael Vince
mv at thebeastie.org
Mon Jun 26 03:42:57 UTC 2006
David DeSimone wrote:
>-----BEGIN PGP SIGNED MESSAGE-----
>Hash: SHA1
>
>Michael Vince <mv at thebeastie.org> wrote:
>
>
>>>The main reason to use IPSEC tunnel mode and avoid GIF is that such
>>>a config is interoperable with other IPSEC implementations, and thus
>>>is much more useful in the real world.
>>>
>>>
>>OK that said, how do you create a network to network tunnel based VPN
>>without using the gif or gre devices?
>>
>>
>
>Ok, here's a typical setup that I've used.
>
>Suppose you have two gateways:
> Gateway 1 IP = 1.2.3.4
> Networks behind it:
>
> 192.168.1.0/24
> 192.168.2.0/24
>
>Most of the examples you'll find will teach you to use IPSEC in
>Transport mode. But Transport mode is only used for one endpoint to
>talk to another endpoint. What you want here (and what other gateways
>like Cisco will implement) is Tunnel mode, where the traffic is
>encapsulated rather than merely encrypted.
>
>- --
>David DeSimone == Network Admin == fox at verio.net
>
>
OK that is a great guide and should be placed in the handbook, maybe
over top of the old one or under a title "Standard VPN"
I copied and pasted most of it and replaced those IPs with mine, but am
still having problems.
After reloading ipsec and racoon I tried to do a traceroute from a
client behind the local gateway to a client behind the remote gateway,
it went off and did a typical traceroute through the gateway out over
the Internet like a regular traceroute, completely being missed by the
kernel/ipsec rules, nothing stopped it or tried to tunnel it or trigger
racoon IKE activity.
I tried putting 'require' in my ipsec rules, didn't change anything.
Did you have any special routes to tell the ipsec/kernel to start
encrypting the traffic?
Are you using FAST_IPSEC or the other IPsec? If so I will have to change.
Which version of FreeBSD are you using?
I need to try and isolate what is different.
Its Fast_IPSEC in my kernel, it is a AMD64 server, I remember AMD64
would instantly trigger a kernel panic with FAST_IPSEC in the past, but
I am assuming it works now.
I have actually managed to trigger a full phase 1 and 2 successful
connection activity if I use the older style gif/gre and on top use a
IPsec gateway to gateway tunnel rule (on top of the regular internal
network ipsec rules) and with the special gif/gre routes most examples
on the net say to use.
Having a gateway to gateway tunnel rule was the only thing that finally
ever triggered racoon and IPSec activity which is pretty weird, and is
double to triple different compared to your example because I needed
gif/gre and routes to trigger racoon/ipsec to start working.
#spdadd 1.2.3.4/32 5.6.7.8/32 any -P out ipsec
esp/tunnel/1.2.3.4-5.6.7.8/require ;
#spdadd 5.6.7.8/32 1.2.3.4/32 any -P in ipsec
esp/tunnel/5.6.7.8-1.2.3.4/require ;
I need to have it all working under the standard way out you have laid
out, like I said my ipsec is in the kernel and fully loaded, but with
your example rules it behaves as if its not there at all.
Mike
sysctl -a | grep ipsec
ipsecpolicy 34 9K - 11913 256
ipsecrequest 4 1K - 181 256
ipsec-misc 0 0K - 258 32,64
ipsec-saq 0 0K - 167 128
ipsec-reg 3 1K - 153 32
net.inet.ipsec.def_policy: 1
net.inet.ipsec.esp_trans_deflev: 1
net.inet.ipsec.esp_net_deflev: 1
net.inet.ipsec.ah_trans_deflev: 1
net.inet.ipsec.ah_net_deflev: 1
net.inet.ipsec.ah_cleartos: 1
net.inet.ipsec.ah_offsetmask: 0
net.inet.ipsec.dfbit: 0
net.inet.ipsec.ecn: 0
net.inet.ipsec.debug: 0
net.inet.ipsec.esp_randpad: -1
net.inet.ipsec.crypto_support: 0
net.inet6.ipsec6.def_policy: 1
net.inet6.ipsec6.esp_trans_deflev: 1
net.inet6.ipsec6.esp_net_deflev: 1
net.inet6.ipsec6.ah_trans_deflev: 1
net.inet6.ipsec6.ah_net_deflev: 1
net.inet6.ipsec6.ecn: 0
net.inet6.ipsec6.debug: 0
net.inet6.ipsec6.esp_randpad: -1
More information about the freebsd-net
mailing list