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