mdlayher / corerad

CoreRAD is an extensible and observable IPv6 Neighbor Discovery Protocol router advertisement daemon. Apache 2.0 Licensed.
https://corerad.net
Other
152 stars 15 forks source link

Router Solicitation spam #32

Closed FallingSnow closed 2 years ago

FallingSnow commented 2 years ago

Whenever I enable corerad on my network my wlan adapter starts seeing a lot of Router Solicitation spam. Around 1-2 dozen a second. I've tried changing reachable_time and retransmit_timer hoping that may fix it but no dice. As soon as I stop corerad the spam stops. Not really sure what I'm doing wrong. I've included an image of the types of packets I see in wireshark. Screenshot from 2022-08-04 00-38-00

FallingSnow commented 2 years ago

My config:

# CoreRAD 1.1.1 (2022-05-12) configuration file
# https://github.com/mdlayher/corerad/blob/main/internal/config/reference.toml

# Advertise an IPv6 default route and SLAAC-capable prefixes on LAN-facing eth0.
[[interfaces]]
name = "intranet"
advertise = true
#verbose = true
#reachable_time = "60s"
#retransmit_timer = "60s"
#unicast_only = true

  # Advertise an on-link, autonomous prefix for all /64 addresses on eth0.
  [[interfaces.prefix]]

  # Serve route information for IPv6 routes destined to the loopback interface.
  [[interfaces.route]]
  prefix = "::/0"

  [[interfaces.rdnss]]
  # quad9, cloudflare, google
  servers = ["2620:fe::fe", "2606:4700:7400::64", "2001:4860:4860::6464"]

[[interfaces]]
name = "mgt0"
advertise = true
#other_config = true
#verbose = true

  # Advertise an on-link, autonomous prefix for all /64 addresses on eth0.
  [[interfaces.prefix]]

  # Serve route information for IPv6 routes destined to the loopback interface.
  [[interfaces.route]]
  prefix = "::/0"

  [[interfaces.rdnss]]
  # cloudflare, google
  servers = ["2606:4700:4700::64", "2001:4860:4860::6464"]

# Monitor upstream router advertisements on WAN-facing interface.
[[interfaces]]
name = "isp0"
monitor = true

# Optional: enable Prometheus metrics.
[debug]
address = "localhost:9430"
prometheus = false
mdlayher commented 2 years ago

Your configuration looks pretty standard to me, so I suppose it's possible that there's something about the RA that a client doesn't like, resulting in it repeatedly trying to find a router to solicit.

Can you show me the contents of the repeated RS/RA packets? I'm running CoreRAD on a Linux router and have a mix of many different client machines and I don't observe this sort of behavior on my network.

FallingSnow commented 2 years ago

The NIC on this machine is a Intel Corporation Wi-Fi 6 AX200 (rev 1a) if that's relevant. Kernel driver: iwlwifi Kernel version: Linux 5.18.15-arch1-1.1 #1 SMP PREEMPT_DYNAMIC Sat, 30 Jul 2022 15:08:33 +0000 x86_64 GNU/Linux

Didn't save a dump but I've re-enabled corerad and got an IPv6 IP. Seems to be running okay right now, no spam. Maybe it starts once the address expires. I'll leave corerad running for a few days and reopen with the packets if it starts again.

FallingSnow commented 2 years ago

Alright, we are back to spamming. Here is a wireshark dump. Let me know if you want a different format. Had to zip due to github's upload rules. ra-spam-dump.zip

FallingSnow commented 2 years ago

I didn't think about this until now but I remember my IPv6 connection used to go out and wouldn't ping anything via IPv6 until I pinged the router. Not sure if that's related but thought I'd mention it.

FallingSnow commented 2 years ago

Looked over the packets and they seem fine. Disabled NetworkManager from using iwd (which was using it's integrated EnableNetworkConfiguration=true) so it uses what ever else it does instead. I'm not really sure what is making the RS requests now but it seems to be working as expected again.

Might just be like last time where it comes back but I'll let you know haha.

FallingSnow commented 2 years ago

Well I've tracked it down to iwd and having EnableNetworkConfiguration enabled. I assume that corerad has nothing to do with the issue then. /etc/iwd/main.conf:

[General]
EnableNetworkConfiguration=true