Skip to content

The IPv6 gateway is reported as offline if the WAN interface has a ULA address. #6939

Description

@subnetspider

Important notices

Before you add a new report, we ask you kindly to acknowledge the following:

Describe the bug

IPv6 gateway reported as offline when there is a ULA address on the WAN interface because dpinger binds to the wrong address.

To Reproduce

Steps to reproduce the behavior:

  1. Do a fresh install of OPNsense and run the setup wizard.
  2. Connect the WAN interface to a router that sends a ULA prefix (fd00::/8) in addition to the GUA prefix (2000::/3).
  3. Got to "System > Gateways > Single".
  4. Edit the gateway WAN_DHCP6 (or WAN_SLAAC when using SLAAC).
  5. Remove the tick from the Disable Gateway Monitoring checkbox.
  6. Enter a IPv6 GUA address in Monitor IP like 2001:4860:4860::8844.
  7. Klick "Save" and "Apply", then refresh the page.

Expected behavior

The IPv6 gateway WAN_DHCP6 should be Online and RTT and RTTd should show some latency.

Describe alternatives you considered

The IPv6 gateway WAN_DHCP6 is reported as Offline with 100% packet loss, even though IPv6 is working.

Screenshots

grafik

Relevant log files

Output of ifconfig igb1:

--- snip ---
	inet6 fe80::219:99ff:feec:b4b9%igb1 prefixlen 64 scopeid 0x2
	inet6 fd1f:5dbe:154f:1:219:99ff:feec:b4b9 prefixlen 64 autoconf
	inet6 2003:____:____:____:219:99ff:feec:b4b9 prefixlen 64 autoconf
--- snip ---

Output of netstat -rn6:

Routing tables

Internet6:
Destination                       Gateway                       Flags     Netif Expire
default                           fe80::1%igb1                  UGS        igb1
::1                               link#5                        UHS         lo0
2001:4860:4860::8844              fe80::1%igb1                  UGHS       igb1
--- snip ---

Parameters of dpinger:

/usr/local/bin/dpinger -f -S -r 0 -i WAN_DHCP6 -B fd1f:5dbe:154f:1:219:99ff:feec:b4b9 -p /var/run/dpinger_WAN_DHCP6.pid -u /var/run/dpinger_WAN_DHCP6.sock -s 1s -l 4s -t 60s -d 0 2001:4860:4860::8844

Output of tcpdump icmp6 -i igb1 -n -v (WAN interface, no ICMP replies):

15:33:38.536198 IP6 (hlim 64, next-header ICMPv6 (58) payload length: 8) fd1f:5dbe:154f:1:219:99ff:feec:b4b9 > 2001:4860:4860::8844: [icmp6 sum ok] ICMP6, echo request, seq 312
15:33:39.584874 IP6 (hlim 64, next-header ICMPv6 (58) payload length: 8) fd1f:5dbe:154f:1:219:99ff:feec:b4b9 > 2001:4860:4860::8844: [icmp6 sum ok] ICMP6, echo request, seq 313
15:33:40.645843 IP6 (hlim 64, next-header ICMPv6 (58) payload length: 8) fd1f:5dbe:154f:1:219:99ff:feec:b4b9 > 2001:4860:4860::8844: [icmp6 sum ok] ICMP6, echo request, seq 314
15:33:41.647418 IP6 (hlim 64, next-header ICMPv6 (58) payload length: 8) fd1f:5dbe:154f:1:219:99ff:feec:b4b9 > 2001:4860:4860::8844: [icmp6 sum ok] ICMP6, echo request, seq 315
15:33:42.702948 IP6 (hlim 64, next-header ICMPv6 (58) payload length: 8) fd1f:5dbe:154f:1:219:99ff:feec:b4b9 > 2001:4860:4860::8844: [icmp6 sum ok] ICMP6, echo request, seq 316

Additional context

When I used the ISP routers addresses fd80::1 (fd80::1%igb1) or fd1f:5dbe:154f:1::1 for Monitor IP, the IPv6 gateway was displayed as Online:

/usr/local/bin/dpinger -f -S -r 0 -i WAN_DHCP6 -B fe80::219:99ff:feec:b4b9%igb1 -p /var/run/dpinger_WAN_DHCP6.pid -u /var/run/dpinger_WAN_DHCP6.sock -s 1s -l 4s -t 60s -d 0 fe80::1%igb1
/usr/local/bin/dpinger -f -S -r 0 -i WAN_DHCP6 -B fd1f:5dbe:154f:1:219:99ff:feec:b4b9 -p /var/run/dpinger_WAN_DHCP6.pid -u /var/run/dpinger_WAN_DHCP6.sock -s 1s -l 4s -t 60s -d 0 fd1f:5dbe:154f:1::1

When I set the Global Unicast Address I got from DHCPv6/SLAAC as static on the WAN interface and manually added a IPv6 Upstream Gateway with the address fe80::1 (ISP Router), the IPv6 gateway was also displayed as Online.

When I disabled the IPv6 ULA prefix fd1f:5dbe:154f:1::/64 on the ISP Router when using SLAAC or DHCPv6 on the WAN interface, the IPv6 gateway was also displayed as Online.

This leads me to believe that /usr/local/bin/dpinger just grabs the first IPv6 address it finds on the WAN interface to use as a source address / bind to that address.
But since IPv6 ULA addresses are not routable over the Internet (unless you use NAT66), there is no way it will ever get an ICMP reply message, thus the IPv6 gateway will always be reported as Offline.

For the next few days, I will not have access to other routers to use as gateways for OPNsense that advertise a ULA and GUA prefix, so my sample size is rather limited.

Environment

OPNsense 23.7.6-amd64
FreeBSD 13.2-RELEASE-p3
OpenSSL 1.1.1w 11 Sep 2023
AMD GX-222GC SOC with Radeon(TM) R5E Graphics (2 cores, 2 threads)
Network Intel® I350-T4

Metadata

Metadata

Assignees

Labels

bugProduction bug

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions