Hello,
since linux 2.6.24 no longer calculate the udp checksum for packages on
the loopback device, dhcpd should ignore wrong checksums in packages
coming from this device.
We use dhcping 1.2-3 running on the same host as dhcpd to check if
dhcpd is still answering. This works great with linux 2.6.8 but fails
with linux 2.6.24.
According to http://kerneltrap.org/mailarchive/linux-netdev/2007/9/23/272755
the kernel no longer generates udp checksums for packets on localhost.
Instead it sets a flag that signals that the udp checksum should be
ignored.
Can you make dhcpd honoring this flag, please?
Here some details from my setup. These hosts are the only linux hosts
in their subnets, so I cannot run dhcping on another host.
--------------------------------------------
# hostA working
--------------------------------------------
Related Packages:
dhcp-client 2.0pl5-19.1sarge3
dhcp3-common 3.0.1-2
dhcp3-server 3.0.1-2
dhcping 1.2-2
kernel-image-2.6.8-4-686 2.6.8-16sarge7
/etc/dhcp3/dhcpd.conf
ddns-update-style none;
log-facility local7;
default-lease-time 3600;
max-lease-time 86400;
not authoritative;
subnet 192.XXX.XXX.0 netmask 255.255.255.0 {
...
}
subnet 127.0.0.0 netmask 255.0.0.0 {
host hostA {hardware ethernet 00:0E:0C:71:XX:XX; fixed-address 192.XXX.XXX.1;}
}
# /usr/sbin/dhcping -c 192.XXX.XXX.1 -s 192.XXX.XXX.1 -h 00:0E:0C:71:XX:XX
Got answer from: 192.XXX.XXX.1
# tethereal -V -i lo udp
Capturing on lo
Frame 1 (292 bytes on wire, 292 bytes captured)
...
User Datagram Protocol, Src Port: bootpc (68), Dst Port: bootps (67)
Source port: bootpc (68)
Destination port: bootps (67)
Length: 258
Checksum: 0xc4c8 (correct)
#-------------------------------------------
# hostB not working
#-------------------------------------------
Related Packages:
dhcp3-common 3.0.4-13
dhcp3-server 3.0.4-13
dhcping 1.2-3
linux-image-2.6.24-1-686 2.6.24-5
/etc/dhcp3/dhcpd.conf
ddns-update-style none;
log-facility local7;
default-lease-time 3600;
max-lease-time 86400;
not authoritative;
subnet 192.YYY.YYY.0 netmask 255.255.255.0 {
...
}
subnet 127.0.0.0 netmask 255.0.0.0 {
host hostB {hardware ethernet 00:1F:29:C3:YY:YY; fixed-address 192.YYY.YYY.1;}
}
# /usr/sbin/dhcping -c 192.YYY.YYY.1 -s 192.YYY.YYY.1 -h 00:1F:29:C3:YY:YY
no answer
# tshark -V -i lo udp
Capturing on lo
Frame 1 (292 bytes on wire, 292 bytes captured)
...
User Datagram Protocol, Src Port: bootpc (68), Dst Port: bootps (67)
Source port: bootpc (68)
Destination port: bootps (67)
Length: 258
Checksum: 0xfc66 [incorrect, should be 0xb39c] !!!!
--------------------------------------------------
Thanks,
Martin