Joined: 12 Dec 2007 Posts: 896 Location: Pittsburgh, PA USA
Posted: Wed May 15, 2024 9:50 Post subject: R7800 weird IPv6 behavior
At egc's advice, I'm asking in the forum.
Starting with r56326, Netgear R7800 gets IPv6 address from ISP (Verizon Fios) but does not route IPv6 packets. Cannot ping IPv6 hosts from the router CLI itself, or from client machines behind it. Note that issue does not occur on Marvell-based Linksys WRT1900AC v1 running the same version of DD-WRT with the same configuration. It may be something Atheros specific.
IPv6 config:
Code:
IPV6 Enabled
IPV6 Type: DHCP6 with Prefix Delegation
Prefix: 56
Static DNS 1: 2a10:50c0::ad2:ff
Static DNS 2: 2a10:50c0::ad3:ff
MTU: 1452
No release on reconnect - Disabled
Custom Config - Disabled
DHCPV6 Server - Disabled
RADVD - Disabled
A route appears to be missing from the routing table.
From the R7800 command line, which does not work (Router name is Barricade in both cases)
Code:
root@Barricade:~# ip -6 route
2600:4041:402:2c00::/56 dev br0 metric 256
fe80::/64 dev eth1 metric 256
fe80::/64 dev br0 metric 256
fe80::/64 dev wlan1 metric 256
fe80::/64 dev wlan0 metric 256
fe80::/64 dev tun2 metric 256
fe80::/64 dev eth0 metric 256
default dev eth0 metric 2048
anycast 2600:4041:402:2c00:: dev br0 metric 0
anycast fe80:: dev eth1 metric 0
anycast fe80:: dev br0 metric 0
anycast fe80:: dev wlan1 metric 0
anycast fe80:: dev wlan0 metric 0
anycast fe80:: dev tun2 metric 0
anycast fe80:: dev eth0 metric 0
multicast ff00::/8 dev eth1 metric 256
multicast ff00::/8 dev br0 metric 256
multicast ff00::/8 dev wlan1 metric 256
multicast ff00::/8 dev wlan0 metric 256
multicast ff00::/8 dev tun2 metric 256
multicast ff00::/8 dev eth0 metric 256
multicast ff00::/8 dev oet1 metric 256
Same command on the WRT1900AC, which does work
Code:
root@Barricade:~# ip -6 route
2600:4041:402:4a00::/64 dev br0 metric 256
fe80::/64 dev eth0 metric 256
fe80::/64 dev br0 metric 256
fe80::/64 dev wlan1 metric 256
fe80::/64 dev wlan0 metric 256
fe80::/64 dev tun2 metric 256
fe80::/64 dev eth1 metric 256
default via fe80::4e96:14ff:fe6e:fcf5 dev eth1 metric 1024 expires 0sec
default dev eth1 metric 2048
anycast 2600:4041:402:4a00:: dev br0 metric 0
anycast fe80:: dev eth0 metric 0
anycast fe80:: dev br0 metric 0
anycast fe80:: dev wlan1 metric 0
anycast fe80:: dev wlan0 metric 0
anycast fe80:: dev tun2 metric 0
anycast fe80:: dev eth1 metric 0
multicast ff00::/8 dev eth0 metric 256
multicast ff00::/8 dev br0 metric 256
multicast ff00::/8 dev wlan1 metric 256
multicast ff00::/8 dev wlan0 metric 256
multicast ff00::/8 dev tun2 metric 256
multicast ff00::/8 dev eth1 metric 256
multicast ff00::/8 dev oet1 metric 256
Aside from the eth0/eth1 reversal, which is expected, and fact that it pulled a slightly different IPv6 range in each case, the major difference appears to be the line
default via fe80::4e96:14ff:fe6e:fcf5 dev eth1 metric 1024 expires 0sec
This line is present on the WRT1900AC but not on the R7800.
Running the below command from the CLI on the R7800 will allow it to route packets for several hours, but eventually it stops, presumably when the IPv6 range is renewed.
Code:
ip -6 route add default via fe80::4e96:14ff:fe6e:fcf5 dev eth0
Same behavior if I add
Code:
Sleep 30
ip -6 route add default via fe80::4e96:14ff:fe6e:fcf5 dev eth0
to the Startup script in the GUI. It will work for a few hours, then stop. I kludged it by adding a cron job to run the command every 30 minutes, but I don't understand why it works on one router and not the other. _________________ __________________________
Linksys MR7350
DD-WRT v3.0 STD
Joined: 12 Dec 2007 Posts: 896 Location: Pittsburgh, PA USA
Posted: Wed May 15, 2024 16:01 Post subject:
I've been cloning the MAC address of Verizon's router for years, as it's required to allow Remote DVR to work. I don't have a modem, I have an Optical Network Terminal, and I can probably count on my fingers the number of times I've had to power-cycle the ONT in the last 18 years that I've had Verizon. I can try it this evening. _________________ __________________________
Linksys MR7350
DD-WRT v3.0 STD
Joined: 12 Dec 2007 Posts: 896 Location: Pittsburgh, PA USA
Posted: Fri May 17, 2024 9:47 Post subject:
I finally had a chance to test cycling the ONT as egc requested. Powered off the ONT, swapped the R7800 in and the WRT1900AC out, waited 8 more minutes, then plugged in the ONT, waited for the lights to turn green, then powered on the R7800. On the router, I got a different IPv4 address, different IPv6 address. I waited several minutes, then checked the IPv6 routing table on the router. That line was still missing.
I swapped the routers back, without recycling the ONT, and the WRT1900AC picked up the same new IPv4 address, a different IPv6 address, and the routing table contained the line in question. (Note: every time I reboot the router under normal use, I get a different IPv6 range, so this is expected behavior).
I'll gather logs from the R7800 over the weekend showing the boot sequence. Maybe there's something in there that will help. _________________ __________________________
Linksys MR7350
DD-WRT v3.0 STD
This still seems to be a problem. I'm running 58850.
After a reboot:
Code:
~# ip -6 route show
2600:8804:XXXX:XXXX::/64 dev br0 metric 256
2600:8804:XXXX:XXXX::/64 dev wlan1.1 metric 256
2600:8804:XXXX:XXXX::/64 dev wlan0.1 metric 256
2600:8804:XXXX:XXXX::/64 dev br1 metric 256
2600:8804:XXXX:XXXX::/64 dev wlan1.2 metric 256
2600:8804:XXXX:XXXX::/64 dev wlan0.2 metric 256
2600:8804:XXXX:XXXX::/64 dev br2 metric 256
2600:8804:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX dev eth0 metric 256
fe80::/64 dev br1 metric 256
fe80::/64 dev br2 metric 256
fe80::/64 dev eth1 metric 256
fe80::/64 dev br0 metric 256
fe80::/64 dev wlan1 metric 256
fe80::/64 dev wlan1.1 metric 256
fe80::/64 dev wlan1.2 metric 256
fe80::/64 dev wlan0 metric 256
fe80::/64 dev wlan0.1 metric 256
fe80::/64 dev wlan0.2 metric 256
fe80::/64 dev eth0 metric 256
default via fe80::a47:d0ff:fe07:c2a7 dev eth0 metric 1024 expires 0sec <---Important, and interesting that it shows expires 0sec[onds]
default dev eth0 metric 2048
After some time:
Code:
~# ip -6 route show
2600:8804:XXXX:XXXX::/64 dev br0 metric 256
2600:8804:XXXX:XXXX::/64 dev wlan1.1 metric 256
2600:8804:XXXX:XXXX::/64 dev wlan0.1 metric 256
2600:8804:XXXX:XXXX::/64 dev br1 metric 256
2600:8804:XXXX:XXXX::/64 dev wlan1.2 metric 256
2600:8804:XXXX:XXXX::/64 dev wlan0.2 metric 256
2600:8804:XXXX:XXXX::/64 dev br2 metric 256
2600:8804:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX dev eth0 metric 256
fe80::/64 dev br1 metric 256
fe80::/64 dev br2 metric 256
fe80::/64 dev eth1 metric 256
fe80::/64 dev br0 metric 256
fe80::/64 dev wlan1 metric 256
fe80::/64 dev wlan1.1 metric 256
fe80::/64 dev wlan1.2 metric 256
fe80::/64 dev wlan0 metric 256
fe80::/64 dev wlan0.1 metric 256
fe80::/64 dev wlan0.2 metric 256
fe80::/64 dev eth0 metric 256
default dev eth0 metric 2048
Any resolutions? _________________ R7800 Nighthawk - DD-WRT v3.0-r58850 std (Primary)
R7800 Nighthawk - DD-WRT v3.0-r58389 std (Cold Secondary)
▲ ACTIVE / INACTIVE ▼
R7000 Nighthawk - DD-WRT v3.0-r58850 std (Still works great after running for 10 years solid)
R7000 Nighthawk - DD-WRT v3.0-r58850 std (Cold Secondary)
R7000 Nighthawk - DD-WRT v3.0-r58389 std (Extra)
~~~~~~~~~~Dismantled for learning opportunities~~~~~~~~~~
WRT54Gv2
WRT54Gv8.2
~~~~~~~~~~Other Settings~~~~~~~~~
https://nextdns.io/?from=2d3sq39x https://pi-hole.net/ https://github.com/DNSCrypt/dnscrypt-proxy
Joined: 12 Dec 2007 Posts: 896 Location: Pittsburgh, PA USA
Posted: Mon Dec 30, 2024 14:29 Post subject:
@egc, I tested recently again with the R7800. If I don't use NSS, it works fine. If I do use NSS, the IPV6 routing table seems to be very different. What's weird is that I don't see the same behavior on the Linksys MR7350 (or for that matter on the Linksys WRT1900AC I was using before, although that doesn't have NSS cores).
Routing tables below. In both cases, using NSS-ECM. IPV6 settings were posted in an earlier thread. Both are on the latest version (r58892). The difference is just one route, but that particular route is rather important.
MR7350:
Code:
root@Barricade:~# ip -6 route
2600:4041:401:1700::/64 dev br0 metric 256
fe80::/64 dev tun2 metric 256
fe80::/64 dev eth4 metric 256
fe80::/64 dev br0 metric 256
fe80::/64 dev wlan1 metric 256
fe80::/64 dev wlan1.1 metric 256
fe80::/64 dev wlan0 metric 256
fe80::/64 dev wlan0.1 metric 256
fe80::/64 dev eth1 metric 256
default via fe80::4e96:14ff:fe6e:fcf5 dev eth4 metric 1024 expires 0sec
default dev eth4 metric 2048
R7800:
Code:
root@Barricade:~# ip -6 route
2600:4041:40e:2e00::/56 dev br0 metric 256
fe80::/64 dev eth1 metric 256
fe80::/64 dev br0 metric 256
fe80::/64 dev wlan1 metric 256
fe80::/64 dev wlan1.1 metric 256
fe80::/64 dev wlan0 metric 256
fe80::/64 dev wlan0.1 metric 256
fe80::/64 dev tun2 metric 256
fe80::/64 dev eth0 metric 256
default dev eth0 metric 2048
I realize it's not an apples-to-apples comparison, as they are different processors, but they're both Atheros with NSS cores, so it's as close as I can get.
While it's not outside the realm of possiblity that it's something on Verizon's end, why does it work with the Linksys routers and not the Netgear? _________________ __________________________
Linksys MR7350
DD-WRT v3.0 STD
For posterity's sake, I am able to fix my issue by manually adding the route back, which took me a while to figure out the syntax;
Code:
ip route add default via fe80::a47:XXXX:XXXX:XXXX dev eth0
This at least gets the default route back albeit not exactly the way it originally gets put in, but I'm not sure it makes much of a difference.
Original:
Code:
default via fe80::a47:XXXX:XXXX:XXXX dev eth0 metric 1024 expires 0sec
Manual:
Code:
default via fe80::a47:XXXX:XXXX:XXXX dev eth0 metric 1024
_________________ R7800 Nighthawk - DD-WRT v3.0-r58850 std (Primary)
R7800 Nighthawk - DD-WRT v3.0-r58389 std (Cold Secondary)
▲ ACTIVE / INACTIVE ▼
R7000 Nighthawk - DD-WRT v3.0-r58850 std (Still works great after running for 10 years solid)
R7000 Nighthawk - DD-WRT v3.0-r58850 std (Cold Secondary)
R7000 Nighthawk - DD-WRT v3.0-r58389 std (Extra)
~~~~~~~~~~Dismantled for learning opportunities~~~~~~~~~~
WRT54Gv2
WRT54Gv8.2
~~~~~~~~~~Other Settings~~~~~~~~~
https://nextdns.io/?from=2d3sq39x https://pi-hole.net/ https://github.com/DNSCrypt/dnscrypt-proxy
Last edited by HalfBit on Fri Jan 03, 2025 13:30; edited 1 time in total
I've basically found myself in the same situation. The only part I can't understand is when I use my R7000, disabling multicast is not necessary, but with the R7800 it is. I guess probably because of the architecture differences between SFE for R700 (BCM) vs. R7800 (QCA) with NSS? _________________ R7800 Nighthawk - DD-WRT v3.0-r58850 std (Primary)
R7800 Nighthawk - DD-WRT v3.0-r58389 std (Cold Secondary)
▲ ACTIVE / INACTIVE ▼
R7000 Nighthawk - DD-WRT v3.0-r58850 std (Still works great after running for 10 years solid)
R7000 Nighthawk - DD-WRT v3.0-r58850 std (Cold Secondary)
R7000 Nighthawk - DD-WRT v3.0-r58389 std (Extra)
~~~~~~~~~~Dismantled for learning opportunities~~~~~~~~~~
WRT54Gv2
WRT54Gv8.2
~~~~~~~~~~Other Settings~~~~~~~~~
https://nextdns.io/?from=2d3sq39x https://pi-hole.net/ https://github.com/DNSCrypt/dnscrypt-proxy
I've basically found myself in the same situation. The only part I can't understand is when I use my R7000, disabling multicast is not necessary, but with the R7800 it is. I guess probably because of the architecture differences between SFE for R700 (BCM) vs. R7800 (QCA) with NSS?
Multicast should be enabled automatically when IPv6 is used:
My workaround is adding all multicast to eth0 in the startup commands:
Code:
ifconfig eth0 allmulti
Does anyone understand more fully why adding all multicast, or promiscuous (ifconfig eth0 promisc) on eth0 would help continue to obtain the default IPv6 route from an ISP? _________________ R7800 Nighthawk - DD-WRT v3.0-r58850 std (Primary)
R7800 Nighthawk - DD-WRT v3.0-r58389 std (Cold Secondary)
▲ ACTIVE / INACTIVE ▼
R7000 Nighthawk - DD-WRT v3.0-r58850 std (Still works great after running for 10 years solid)
R7000 Nighthawk - DD-WRT v3.0-r58850 std (Cold Secondary)
R7000 Nighthawk - DD-WRT v3.0-r58389 std (Extra)
~~~~~~~~~~Dismantled for learning opportunities~~~~~~~~~~
WRT54Gv2
WRT54Gv8.2
~~~~~~~~~~Other Settings~~~~~~~~~
https://nextdns.io/?from=2d3sq39x https://pi-hole.net/ https://github.com/DNSCrypt/dnscrypt-proxy