COMMAND
kernel
SYSTEMS AFFECTED
FreeBSD 4.x
PROBLEM
Ofir Arkin found following. It is long known that FreeBSD uses a
wrong IP Identification number with its ICMP Error Messages. This
fact was discovered by Fyodor long ago. Let's identify were the
problem is.
The next example is with FreeBSD 4.1:
00:52:19.055758 ppp0 > x.x.x.x.1393 > y.y.y.y.0: udp 0 [tos 0x8]
(ttl 64, id 58965)
4508 001c e655 0000 4011 3f63 xxxx xxxx
yyyy yyyy 0571 0000 0008 a55c
00:52:19.464548 ppp0 < y.y.y.y > x.x.x.x: icmp: y.y.y.y udp port 0
unreachable Offending pkt: x.x.x.x.1393 > y.y.y.y.0: udp 0 [tos 0x8]
(ttl 47, id 21990, bad cksum 5063!) (ttl 238, id 27639)
4500 0038 6bf7 0000 ee01 0bbd yyyy yyyy
xxxx xxxx 0303 87f3 0000 0000 4508 001c
55e6 0000 2f11 5063 xxxx xxxx yyyy yyyy
0571 0000 0008 0000
A udp datagram sent to a closed udp port (port 0, can be any
port). The original udp datagram used e655 hex as its IP
Identification field value. The echoed IP Header inside the ICMP
Error message states that this value was 55e6 (with the offending
datagram).
FreeBSD 4.x simply flips between the first 8bits to the second 8
bits.
SOLUTION
This has been addressed in both FreeBSD-curent and -stable. The
4.1.1 release (network d/l only) contains the relevant patch.