FreeBSD does not reply to IPv6 Neighbor Solicitations

Andrey V. Elsukov bu7cher at yandex.ru
Tue Jan 12 13:34:17 UTC 2021


On 12.01.2021 05:25, John-Mark Gurney wrote:
>> The device, where the capture was taken does not respond tot he NS packet.
>> This might be caused by:
>>  a) the device has a different configured IP address, than requested
>>  b) the network card does not listen to the multicast group, which is
>>     used by the request (you see it only due to the promisc mode of the
>>     capture). But this is unlikely (due to the promisc mode)
>>  c) your system is broken
> 
> I have some test scripts where something similar to this happens.
> 
> I tcpdump shows the request coming into the FreeBSD box (in this case,
> 13-current main-c255640-gc38e59ce1b0), addressed to the IPv6 of the
> box, and FreeBSD failing to respond w/ an answer for it's own IP...
> 
> This is inconsistent and hard to reproduce, but it does happen with
> somewhat regularity.

Hi,

when this will happen again, it would be nice to make sure that NS
packets hit the IP stack. E.g. with attached dtrace script.

Also net.inet6.icmp6.nd6_debug variable should be set to see error
messages from ND code.

If it doesn't show expected info, this means that packets don't hit IP
stack. Probably some multicast related problem. In this case it could be
useful to obtain output of ifmcstat(8).

-- 
WBR, Andrey V. Elsukov
-------------- next part --------------
#!/usr/sbin/dtrace -s

fbt::nd6_ns_input:entry
{
	ip = (struct ip6_hdr *)args[0]->m_data;
	nd = (struct nd_neighbor_solicit *)args[0]->m_data + args[1];

	printf("%s: NS from %s to %s, target %s",
	    stringof(args[0]->m_pkthdr.rcvif->if_xname),
	    inet_ntoa6(&ip->ip6_src), inet_ntoa6(&ip->ip6_dst),
	    inet_ntoa6(&nd->nd_ns_target));
}

fbt::nd6_na_output_fib:entry
{

	printf("%s: NA to %s, target %s",
	    stringof(args[0]->if_xname), inet_ntoa6(args[1]),
	    inet_ntoa6(args[2]));
}


More information about the freebsd-net mailing list