Bug#353161: dhcp3-relay: udp has incorrect checksum when relaying to self

Andrew Pollock apollock at debian.org
Wed Feb 22 23:50:57 UTC 2006


Hi,

I recently had a user report this bug with dhcp-relay, reproducible by the
submitter in the latest version.

A packet capture is also available at http://bugs.debian.org/353161

Please maintain the recipient list so that our bug tracking system is kept
in the loop.

regards

Andrew

On Thu, Feb 16, 2006 at 03:13:46PM +0000, Alexander Clouter wrote:
> Package: dhcp3-relay
> Severity: important
> 
> Running version 3.0.1-2 of dhcp3-relay, I needed to run a development
> DHCP server alongside it.  I decided to bind the dhcp server to the
> local loopback interface (lo) and configure dhcp3-relay with:
>   SERVERS="127.0.0.1"
>   INTERFACES="eth0.95 eth0.96 eth0.97"
>   OPTIONS="-m discard"
> 
> The packets arrive okay, but when dhcp3-relay passes them on the udp
> checksum that //leaves// on the udp packet is incorrect.
> 
> If you look at the attached packet capture (dhcp-fail.dump) you can see
> the packets coming in okay, but then when dhcp3-relay passes them on the
> udp checksum is corrupt.  I first tested with a 127.0.0.1<->127.0.0.1
> setup and when that failed I thought about trying to 'real' public IP's
> incase it was some strange loopback issue.  I got the exact same
> problem. :(
> 
> Its only when the source address matches the destination address, it
> seems, that the checksum is incorrect calculated.
> 
> I have attached a capture (dhcp-good.dump) of it behaving correctly when
> its relaying to a non-local dhcp server on another computer.
> 
> Okay, its extremely unlikely that someone would want to run a relay on
> the same machine as the dhcp server it-self but in a development
> environment is saves 'borrowing' another computer; it also points to a
> slight issue in the underlying checksum generator[1] which should be
> corrected.
> 
> Meanwhile the dhcp server keeps filling up the syslog with:
> 
> Feb 16 14:07:07 troll dhcpd: 5 bad udp checksums in 5 packets
> Feb 16 14:07:24 troll dhcpd: 5 bad udp checksums in 5 packets
> Feb 16 14:07:33 troll dhcpd: 5 bad udp checksums in 5 packets
> Feb 16 14:07:53 troll dhcpd: 5 bad udp checksums in 5 packets
> Feb 16 14:08:44 troll dhcpd: 5 bad udp checksums in 5 packets
> Feb 16 14:08:57 troll dhcpd: 5 bad udp checksums in 5 packets
> Feb 16 14:09:23 troll dhcpd: 5 bad udp checksums in 5 packets
> 
> Which is correct, as the checksum is indeed incorrect.
> 
> Cheers
> 
> Alex
> 
> [1] I'm assuming that the dhcp relay server opens a raw socket and so
> 	generates its own udp checksum?
> 
> -- System Information (altered to reflect settings on actual server):
> Debian Release: testing/unstable
>   APT prefers stable
> Architecture: i386 (i686)
> Shell:  /bin/sh linked to /bin/bash
> Kernel: Linux 2.6.15-ck1
> Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
> 
> 


More information about the dhcp-hackers mailing list