[Openswan Users] XL2TPD/Double NAT issue

Gerald Vogt vogt at spamcop.net
Mon Oct 15 07:52:56 EDT 2007


Frank Schmirler wrote:
> On Fri, 12 Oct 2007 20:56:54 +0900, Gerald Vogt wrote
>> 20:50:02.888409 IP (tos 0x0, ttl  62, id 3484, offset 0, flags 
>> [none], proto: UDP (17), length: 88) 1.0.0.2.49166 > 
>> 192.168.4.2.l2f: [bad udp cksum 563c!]  l2tp:[TLS](0/0)Ns=0,Nr=0 
>> *MSGTYPE(SCCRQ) *PROTO_VER(1.0) *FRAMING_CAP(AS) *HOST_NAME()
>>  *ASSND_TUN_ID(1) *RECV_WIN_SIZE(4)
>>
>> The packet has a bad checksum. This only happens when the client is 
>> behind the NAT router as well. When the client is not behind the NAT 
>> router the checksums are O.K. Is this the problem why xl2tpd cannot 
>> read the packet?
> 
> That's exactly what happened here with openswan 2.4.7. We switched to 2.4.9
> which includes the DISABLE_UDP_CHECKSUM workaround. Now the checksum is set to
> 0 (i.e. no checksum) and it works. Check openswan/linux/net/ipsec/ipsec_rcv.c
> for the corresponding code bits. Maybe enable rcv debugging with klipsdebug to
> find out why it doesn't work for you.

Interesting. I thought I had the DISABLE_UDP_CHECKSUM set. It was set in 
the main openswan Makefile.inc file. But with klipsdebug on I could see 
that the debug message which would be written if DISABLE_UDP_CHECKSUM 
was enabled is actually not there.

Digging into the Makefiles I have learned in the current 2.4.9 sources 
that Makefile.inc is not used to compile the module. The Makefile comes 
basically out of packaging/makefiles/module26.make. O.K. I have added 
the -DDISABLE_UDP_CHECKSUM in module26.make. clean again and recompiled 
the module only to run into a syntax error at line 929 which reads:

		udp->check=0
		KLIPS_PRINT(debug_rcv,
			    "klips_debug:ipsec_rcv: "
			    "NAT-T & TRANSPORT: "
			    "UDP checksum using NAT-OA disabled at compile time\n");

O.K. There is obviously a ; missing at the end of the first line. This 
syntax error is still there in the latest source in CVS in revision 
1.171.2.12.

http://anoncvs.openswan.org/cgi-bin/viewcvs.cgi/openswan-2/linux/net/ipsec/ipsec_rcv.c?rev=1.171.2.12&view=markup

Now I start to wonder do you all really use this DISABLE_UDP_CHECKSUM 
and fixed the syntax error or do you think it is in there but in fact? 
Do you really see this message "UDP checksum using NAT-OA disabled at 
compile time" in the klipsdebug output?

I suppose I should submit a bug report for this syntax error...

I am recompiling right now and will test if it makes any difference...

Gerald





More information about the Users mailing list