[Openswan dev] "auth failed on incoming packet" when using NAT-T

Ken Bantoft ken at xelerance.com
Tue Dec 7 08:58:32 CET 2004


Try disabling compression on the racoon side, and 'compress=no' on the
Openswan side for your conn.


On Mon, 2004-12-06 at 12:13 +0100, Markus Hanauska wrote:
> No reply on user list, maybe someone on dev list can help.
> 
> 
> Hi there!
> 
> I have a little Problem with NAT-T, using OpensSWAN 2.2.0, KLIPS on 
> Linux Kernel 2.4.28 (with NAT-T patch, that I had to partly patch in by 
> hand; but I read here that the bug is already known and fixed), the 
> distribution is Fedora Core 1. OpenSWAN plays the server here, on the 
> other side a patched version of Racoon (Kame project) with NAT-T 
> support plays the client. It's a host to network connection.
> 
> Without NAT-T I can make a tunnel and ping the private interface of my 
> Linux gateway. Everthing works like expected. Packages arive and leave 
> the interface as ESP. The NAT device in my test setup uses IPSec Pass 
> Through, but that only works for one connection from behind that NAT 
> device.
> 
> For a second connection NAT-T is necessary. But the second I enable 
> NAT-T, nothing works anymore.
> 
> Pluto makes the connection as before, detecting NAT-T draft-2, 
> switching to port 4500 during phase 1 (so does Racoon) and they both do 
> phase 1 and phase 2 like a charm. The tunnel is established, both sides 
> are sure about having a working tunnel. But all traffic is thrown away 
> by KLIPS with the message:
> 
> "auth failed on incoming packet"
> 
> The client side sends out the ESP packages, wrapped in UDP packages, on 
> port 4500. I know pretty well how  the client side works, after all 
> I've written the wrapper all by myself.
> 
> Okay, you may say that the problem is home-made, my wrapper might be 
> wrong. Could be, but then why does it work with SonicWALL, Netscreen 
> and Zyxel devices? And it works with old NAT-T (the one on port 500) 
> and with new NAT-T (the one on port 4500) - e.g. the small SonicWALLs 
> use the old one (RFC draft 0/1), the big ones use the new one (RFC 
> draft 2); whereby the real new NAT-T starts with draft 3 (where the 
> payload numbers have been altered).
> 
> I've read all the RFCs and I do exactly what is written there. Add an 
> UDP header in-between, correct the IP header (length, checksum, next 
> protocol) and add a non-ESP marker (draft 2 and above) or a non-IKE 
> marker (draft 0-1) where necessary. If this code were wrong, it 
> wouldn't work with hardware solutions of other vendors.
> 
> The next thing you may guess is, maybe the ESP implementation is 
> broken. If this was the case, why does it work perfectly the second I 
> disable NAT-T on the OpenSWAN side? After all the ESP implementation 
> doesn't know that I wrap the packages (the packages are caught and 
> altered between protocol and network layer, transparent for both 
> layers), for the ESP layer, everything is like without NAT-T.
> 
> What else can I tell you? Both sides show that they use 3des and MD5 on 
> the tunnel and authentication during IKE was pre-shared key.
> 
> On the client side, I have setkey and can thus easy access to the SPI 
> or the key used to encrypt the packages, and so on. I don't know how to 
> get such output on the server (OpenSWAN) side.
> 
> Maybe you can help me with that, give me some hints on how to get more 
> info useful for debugging the problem. Or maybe you have an idea what 
> might cause the problem. Any advice will be greatly appreciated!
> 
> Thanks in advance.
> 



More information about the Dev mailing list