Router can't ping ipv6

I've got a r7800, just flashed with 19.07.2 with practically default settings.
I noticed I can't ping ipv6.google.com from my computer (attached to lan interface) nor from the router itself.

Here's some clues I believe:
On this device, wan and wan6 are on eth0.2 (the only vlan on eth0). Lan is on eth1.1 (the only vlan on eth1). Again, this is how openwrt is set up by default on this device.

Anyway, I started by trying to ping my comcast modem's link local address, mostly because this was shown when I do an ip -6 route from the router:
default from 2603:300d:1a7:a000::6949 via fe80::10:18ff:fe0c:5da4 dev eth0.2 metric 4096
default from 2603:300d:1a7:a020::/59 via fe80::10:18ff:fe0c:5da4 dev eth0.2 metric 4096

but when I ping fe80::10:18ff:fe0c:5da4, I get no response.

But what I CAN do is:

ping -I eth0.2 fe80::10:18ff:fe0c:5da4
or
ping fe80::10:18ff:fe0c:5da4%eth0.2

either of those ping successfully from the router.

So, it's like the router doesn't know to use the eth0.2 interface.

Here's what I've tried:

  1. I tried setting a static route, as referenced in this post:
    [Solved] Can't ping IPv6 WAN from router
  2. I tried just stopping the wan interface (so wan6 is the only option)

Nothing works.

There are other shenanigans though: even when I specify eth0.2, the modem's link local address is the only address I can ping. So, for example, I can't ping -I eth0.2 ipv6.google.com

Does anyone have any ideas?

Please post here the output of the following command, copy and paste the whole block:

uci export network; uci export dhcp; uci export firewall; \
head -n -0 /etc/firewall.user; \
ip -6 addr ; ip -6 ro ls tab all ; ip -6 ru; \
ifstatus wan6; ifstatus lan

Please use "Preformatted text </>" for logs, scripts, configs and general console output.

BusyBox v1.30.1 () built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt 19.07.2, r10947-65030d81f3
 -----------------------------------------------------
root@OpenWrt:~# uci export network; uci export dhcp; uci export firewall; \
> head -n -0 /etc/firewall.user; \
> ip -6 addr ; ip -6 ro ls tab all ; ip -6 ru; \
> ifstatus wan6; ifstatus lan
package network

config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fdb5:4d49:0f29::/48'

config interface 'lan'
        option type 'bridge'
        option ifname 'eth1.1'
        option proto 'static'
        option netmask '255.255.255.0'
        option ipaddr '10.0.77.1'
        option ip6assign '60'

config interface 'wan'
        option ifname 'eth0.2'
        option proto 'dhcp'

config interface 'wan6'
        option ifname 'eth0.2'
        option proto 'dhcpv6'

config switch
        option name 'switch0'
        option reset '1'
        option enable_vlan '1'

config switch_vlan
        option device 'switch0'
        option vlan '1'
        option ports '1 2 3 4 6t'

config switch_vlan
        option device 'switch0'
        option vlan '2'
        option ports '5 0t'

package dhcp

config dnsmasq
        option domainneeded '1'
        option boguspriv '1'
        option filterwin2k '0'
        option localise_queries '1'
        option rebind_protection '1'
        option rebind_localhost '1'
        option local '/lan/'
        option domain 'lan'
        option expandhosts '1'
        option nonegcache '0'
        option authoritative '1'
        option readethers '1'
        option leasefile '/tmp/dhcp.leases'
        option resolvfile '/tmp/resolv.conf.auto'
        option nonwildcard '1'
        option localservice '1'

config dhcp 'lan'
        option interface 'lan'
        option start '100'
        option limit '150'
        option leasetime '12h'
        option dhcpv6 'server'
        option ra 'server'
        option ra_management '1'

config dhcp 'wan'
        option interface 'wan'
        option ignore '1'

config odhcpd 'odhcpd'
        option maindhcp '0'
        option leasefile '/tmp/hosts/odhcpd'
        option leasetrigger '/usr/sbin/odhcpd-update'
        option loglevel '4'

package firewall

config defaults
        option syn_flood '1'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'REJECT'

config zone
        option name 'lan'
        list network 'lan'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'ACCEPT'

config zone
        option name 'wan'
        list network 'wan'
        list network 'wan6'
        option input 'REJECT'
        option output 'ACCEPT'
        option forward 'REJECT'
        option masq '1'
        option mtu_fix '1'

config forwarding
        option src 'lan'
        option dest 'wan'

config rule
        option name 'Allow-DHCP-Renew'
        option src 'wan'
        option proto 'udp'
        option dest_port '68'
        option target 'ACCEPT'
        option family 'ipv4'

config rule
        option name 'Allow-Ping'
        option src 'wan'
        option proto 'icmp'
        option icmp_type 'echo-request'
        option family 'ipv4'
        option target 'ACCEPT'

config rule
        option name 'Allow-IGMP'
        option src 'wan'
        option proto 'igmp'
        option family 'ipv4'
        option target 'ACCEPT'

config rule
        option name 'Allow-DHCPv6'
        option src 'wan'
        option proto 'udp'
        option src_ip 'fc00::/6'
        option dest_ip 'fc00::/6'
        option dest_port '546'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-MLD'
        option src 'wan'
        option proto 'icmp'
        option src_ip 'fe80::/10'
        list icmp_type '130/0'
        list icmp_type '131/0'
        list icmp_type '132/0'
        list icmp_type '143/0'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-ICMPv6-Input'
        option src 'wan'
        option proto 'icmp'
        list icmp_type 'echo-request'
        list icmp_type 'echo-reply'
        list icmp_type 'destination-unreachable'
        list icmp_type 'packet-too-big'
        list icmp_type 'time-exceeded'
        list icmp_type 'bad-header'
        list icmp_type 'unknown-header-type'
        list icmp_type 'router-solicitation'
        list icmp_type 'neighbour-solicitation'
        list icmp_type 'router-advertisement'
        list icmp_type 'neighbour-advertisement'
        option limit '1000/sec'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-ICMPv6-Forward'
        option src 'wan'
        option dest '*'
        option proto 'icmp'
        list icmp_type 'echo-request'
        list icmp_type 'echo-reply'
        list icmp_type 'destination-unreachable'
        list icmp_type 'packet-too-big'
        list icmp_type 'time-exceeded'
        list icmp_type 'bad-header'
        list icmp_type 'unknown-header-type'
        option limit '1000/sec'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-IPSec-ESP'
        option src 'wan'
        option dest 'lan'
        option proto 'esp'
        option target 'ACCEPT'

config rule
        option name 'Allow-ISAKMP'
        option src 'wan'
        option dest 'lan'
        option dest_port '500'
        option proto 'udp'
        option target 'ACCEPT'

config include
        option path '/etc/firewall.user'

# This file is interpreted as shell script.
# Put your custom iptables rules here, they will
# be executed with each firewall (re-)start.

# Internal uci firewall chains are flushed and recreated on reload, so
# put custom rules into the root chains e.g. INPUT or FORWARD or into the
# special user chains, e.g. input_wan_rule or postrouting_lan_rule.
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 fe80::8e3b:adff:fe33:d55b/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 fe80::8e3b:adff:fe33:d55a/64 scope link
       valid_lft forever preferred_lft forever
7: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 2603:300d:1a7:a020::1/60 scope global dynamic
       valid_lft 345346sec preferred_lft 345346sec
    inet6 fdb5:4d49:f29::1/60 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::8e3b:adff:fe33:d55a/64 scope link
       valid_lft forever preferred_lft forever
9: eth0.2@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 2603:300d:1a7:a000::6949/128 scope global dynamic
       valid_lft 604546sec preferred_lft 604546sec
    inet6 fe80::8e3b:adff:fe33:d55b/64 scope link
       valid_lft forever preferred_lft forever
ip: invalid argument 'ls' to 'ip'
0:      from all lookup local
32766:  from all lookup main
4200000000:     from 2603:300d:1a7:a020::1/60 iif br-lan lookup unspec unreachable
4200000001:     from all iif lo lookup unspec 12
4200000007:     from all iif br-lan lookup unspec 12
4200000009:     from all iif eth0.2 lookup unspec 12
4200000009:     from all iif eth0.2 lookup unspec 12
{
        "up": true,
        "pending": false,
        "available": true,
        "autostart": true,
        "dynamic": false,
        "uptime": 245,
        "l3_device": "eth0.2",
        "proto": "dhcpv6",
        "device": "eth0.2",
        "updated": [
                "addresses",
                "routes",
                "prefixes",
                "data"
        ],
        "metric": 0,
        "dns_metric": 0,
        "delegation": true,
        "ipv4-address": [

        ],
        "ipv6-address": [
                {
                        "address": "2603:300d:1a7:a000::6949",
                        "mask": 128,
                        "preferred": 604545,
                        "valid": 604545
                }
        ],
        "ipv6-prefix": [
                {
                        "address": "2603:300d:1a7:a020::",
                        "mask": 59,
                        "preferred": 345345,
                        "valid": 345345,
                        "class": "wan6",
                        "assigned": {
                                "lan": {
                                        "address": "2603:300d:1a7:a020::",
                                        "mask": 60
                                }
                        }
                }
        ],
        "ipv6-prefix-assignment": [

        ],
        "route": [
                {
                        "target": "::",
                        "mask": 0,
                        "nexthop": "fe80::10:18ff:fe0c:5da4",
                        "metric": 4096,
                        "valid": 345345,
                        "source": "2603:300d:1a7:a020::/59"
                },
                {
                        "target": "::",
                        "mask": 0,
                        "nexthop": "fe80::10:18ff:fe0c:5da4",
                        "metric": 4096,
                        "valid": 345345,
                        "source": "2603:300d:1a7:a000::6949/128"
                }
        ],
        "dns-server": [
                "2001:558:feed::1",
                "2001:558:feed::2"
        ],
        "dns-search": [

        ],
        "neighbors": [

        ],
        "inactive": {
                "ipv4-address": [

                ],
                "ipv6-address": [

                ],
                "route": [

                ],
                "dns-server": [

                ],
                "dns-search": [

                ],
                "neighbors": [

                ]
        },
        "data": {
                "passthru": "0017002020010558feed0000000000000000000120010558feed00000000000000000002"
        }
}
{
        "up": true,
        "pending": false,
        "available": true,
        "autostart": true,
        "dynamic": false,
        "uptime": 258,
        "l3_device": "br-lan",
        "proto": "static",
        "device": "br-lan",
        "updated": [
                "addresses"
        ],
        "metric": 0,
        "dns_metric": 0,
        "delegation": true,
        "ipv4-address": [
                {
                        "address": "10.0.77.1",
                        "mask": 24
                }
        ],
        "ipv6-address": [

        ],
        "ipv6-prefix": [

        ],
        "ipv6-prefix-assignment": [
                {
                        "address": "2603:300d:1a7:a020::",
                        "mask": 60,
                        "preferred": 345345,
                        "valid": 345345,
                        "local-address": {
                                "address": "2603:300d:1a7:a020::1",
                                "mask": 60
                        }
                },
                {
                        "address": "fdb5:4d49:f29::",
                        "mask": 60,
                        "local-address": {
                                "address": "fdb5:4d49:f29::1",
                                "mask": 60
                        }
                }
        ],
        "route": [

        ],
        "dns-server": [

        ],
        "dns-search": [

        ],
        "neighbors": [

        ],
        "inactive": {
                "ipv4-address": [

                ],
                "ipv6-address": [

                ],
                "route": [

                ],
                "dns-server": [

                ],
                "dns-search": [

                ],
                "neighbors": [

                ]
        },
        "data": {

        }
}
root@OpenWrt:~#

I just noticed that ip -6 ro ls tab didn't work for some reason, so here's just ip -6 ro:

root@OpenWrt:~# ip -6 ro
default from 2603:300d:1a7:a000::6949 via fe80::10:18ff:fe0c:5da4 dev eth0.2  metric 4096
default from 2603:300d:1a7:a020::/59 via fe80::10:18ff:fe0c:5da4 dev eth0.2  metric 4096
2603:300d:1a7:a020::/64 dev br-lan  metric 1024
unreachable 2603:300d:1a7:a020::/59 dev lo  metric 2147483647  error -113
fdb5:4d49:f29::/64 dev br-lan  metric 1024
unreachable fdb5:4d49:f29::/48 dev lo  metric 2147483647  error -113
fe80::/64 dev eth1  metric 256
fe80::/64 dev br-lan  metric 256
fe80::/64 dev eth0  metric 256
fe80::/64 dev eth0.2  metric 256
anycast 2603:300d:1a7:a020:: dev br-lan  metric 0
anycast fdb5:4d49:f29:: dev br-lan  metric 0
anycast fe80:: dev eth0  metric 0
anycast fe80:: dev eth0.2  metric 0
anycast fe80:: dev eth1  metric 0
anycast fe80:: dev br-lan  metric 0
ff00::/8 dev br-lan  metric 256
ff00::/8 dev eth1  metric 256
ff00::/8 dev eth0  metric 256
ff00::/8 dev eth0.2  metric 256

When you ping or try to access some resource on the internet, OpenWrt will use as source address the IPv6 address of the LAN (or the first LAN interface). So just pinging the link local address of the modem without specifying the interface will fail anyway. But when you ping the link local of comcast from the eth0.2 it is using its link local and it works.
This comcast device is in bridge mode or is it routing?

Routing.

That's interesting what you said about openwrt using the lan ip by default.

So, when I look at the comcast modem, it says it's global address on the lan interface is:
2603:300d:1a7:a000:623d:26ff:fe68:7270
and the comcast modem distributes to the internal lan the following via dhcp:
2603:300d:1a7:a000::/64

But:
ping -I eth0.2 2603:300d:1a7:a000:623d:26ff:fe68:7270 doesn't work, even though wan6's global IP is 2603:300d:1a7:a000::6949

Furthermore

I do see that ipv6-pd on wan6 is 2603:300d:1a7:a020::/59
which my lan seems autoconfigured to use, as it's internal IP is 2603:300d:1a7:a020::1/60.

But when I look at the comcast modem lan page, I don't see anything about this network.
The only hint i have that this is kosher is on the comcast modem wan page, I see that the delegated prefix is 2603:300d:1a7:a000::/56, so this makes me think that the prefix delegate openwrt is picking up and setting to the lan interface is valid.

Does all of this look right?
I ask because a lot of my googling into this hits threads where folks are posting workarounds to only picking up a /64 from comcast. I don't think this is my issue, but I honestly don't know enough about troubleshooting ipv6 routing to know for sure.

If you check the arp after you ping, do you see an entry for this?
ip neigh show | grep "2603:300d:1a7:a000:623d:26ff:fe68:7270"

Yes it is valid, however apart from delegating the /59 prefix the comcast should also create a route to OpenWrt for that. Otherwise it won't know how to reach it. And the /128 address that the wan interface of OpenWrt has doesn't let it communicate with comcast. By the looks of it, your OpenWrt only gets the DHCP6 from comcast and not the SLAAC from RA.
Run this to verify that you get the RA:
`tcpdump -vvvni eth0.2 icmp6 or ip6[40] == 134 &
ifup wan6
...
kill $(pidof tcpdump)

I don't know how comcast is configured, however I would expect a /64 no matter what and optionally some /128.

So yeah, ip neigh show returns nothing for that IP.

I did an ifdown wan6, ran tcpdump, then ifup wan6 in another console. It seemed to just do an endless amount of neighbor solicitations, with the occassional router advertisement. Here's a clip from the very beginning, if you need more, let me know.

tcpdump: listening on eth0.2, link-type EN10MB (Ethernet), capture size 262144 bytes
18:51:20.824548 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 136) fe80::10:18ff:fe0c:5da4 > ff02::1: [icmp6 sum ok] ICMP6, router advertisement, length 136
        hop limit 64, Flags [managed], pref medium, router lifetime 180s, reachable time 0ms, retrans timer 0ms
          rdnss option (25), length 56 (7):  lifetime 86400s, addr: 2603:300d:1a7:a000:623d:26ff:fe68:7270 addr: 2001:558:feed::1 addr: 2001:558:feed::2
            0x0000:  0000 0001 5180 2603 300d 01a7 a000 623d
            0x0010:  26ff fe68 7270 2001 0558 feed 0000 0000
            0x0020:  0000 0000 0001 2001 0558 feed 0000 0000
            0x0030:  0000 0000 0002
          prefix info option (3), length 32 (4): 2603:300d:1a7:a000::/64, Flags [onlink, auto], valid time 300s, pref. time 300s
            0x0000:  40c0 0000 012c 0000 012c 0000 0000 2603
            0x0010:  300d 01a7 a000 0000 0000 0000 0000
          route info option (24), length 24 (3):  ::/0, pref=medium, lifetime=180s
            0x0000:  0000 0000 00b4 0000 0000 0000 0000 0000
            0x0010:  0000 0000 0000
          source link-address option (1), length 8 (1): 60:3d:26:68:72:70
            0x0000:  603d 2668 7270
18:51:23.826944 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 136) fe80::10:18ff:fe0c:5da4 > ff02::1: [icmp6 sum ok] ICMP6, router advertisement, length 136
        hop limit 64, Flags [managed], pref medium, router lifetime 180s, reachable time 0ms, retrans timer 0ms
          rdnss option (25), length 56 (7):  lifetime 86400s, addr: 2603:300d:1a7:a000:623d:26ff:fe68:7270 addr: 2001:558:feed::1 addr: 2001:558:feed::2
            0x0000:  0000 0001 5180 2603 300d 01a7 a000 623d
            0x0010:  26ff fe68 7270 2001 0558 feed 0000 0000
            0x0020:  0000 0000 0001 2001 0558 feed 0000 0000
            0x0030:  0000 0000 0002
          prefix info option (3), length 32 (4): 2603:300d:1a7:a000::/64, Flags [onlink, auto], valid time 300s, pref. time 300s
            0x0000:  40c0 0000 012c 0000 012c 0000 0000 2603
            0x0010:  300d 01a7 a000 0000 0000 0000 0000
          route info option (24), length 24 (3):  ::/0, pref=medium, lifetime=180s
            0x0000:  0000 0000 00b4 0000 0000 0000 0000 0000
            0x0010:  0000 0000 0000
          source link-address option (1), length 8 (1): 60:3d:26:68:72:70
            0x0000:  603d 2668 7270
18:51:24.013545 IP6 (flowlabel 0xcfbe7, hlim 255, next-header ICMPv6 (58) payload length: 16) fe80::8e3b:adff:fe33:d55b > ff02::2: [icmp6 sum ok] ICMP6, router solicitation, length 16
          source link-address option (1), length 8 (1): 8c:3b:ad:33:d5:5b
            0x0000:  8c3b ad33 d55b
18:51:24.017624 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 136) fe80::10:18ff:fe0c:5da4 > ff02::1: [icmp6 sum ok] ICMP6, router advertisement, length 136
        hop limit 64, Flags [managed], pref medium, router lifetime 180s, reachable time 0ms, retrans timer 0ms
          rdnss option (25), length 56 (7):  lifetime 86400s, addr: 2603:300d:1a7:a000:623d:26ff:fe68:7270 addr: 2001:558:feed::1 addr: 2001:558:feed::2
            0x0000:  0000 0001 5180 2603 300d 01a7 a000 623d
            0x0010:  26ff fe68 7270 2001 0558 feed 0000 0000
            0x0020:  0000 0000 0001 2001 0558 feed 0000 0000
            0x0030:  0000 0000 0002
          prefix info option (3), length 32 (4): 2603:300d:1a7:a000::/64, Flags [onlink, auto], valid time 300s, pref. time 300s
            0x0000:  40c0 0000 012c 0000 012c 0000 0000 2603
            0x0010:  300d 01a7 a000 0000 0000 0000 0000
          route info option (24), length 24 (3):  ::/0, pref=medium, lifetime=180s
            0x0000:  0000 0000 00b4 0000 0000 0000 0000 0000
            0x0010:  0000 0000 0000
          source link-address option (1), length 8 (1): 60:3d:26:68:72:70
            0x0000:  603d 2668 7270
18:51:25.479132 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) :: > ff02::1:ff33:d55b: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2603:300d:1a7:a000:8e3b:adff:fe33:d55b
          unknown option (14), length 8 (1):
            0x0000:  8d1a 2f88 800d
18:51:26.020126 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) :: > ff02::1:ff00:6949: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2603:300d:1a7:a000::6949
          unknown option (14), length 8 (1):
            0x0000:  3ab5 e987 b756
18:51:26.184677 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::10:18ff:fe0c:5da4 > ff02::1:ff1f:eaab: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2603:300d:1a7:a020:ccd4:5014:5d1f:eaab
          source link-address option (1), length 8 (1): 60:3d:26:68:72:70
            0x0000:  603d 2668 7270
18:51:26.190475 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::10:18ff:fe0c:5da4 > ff02::1:ff11:879e: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2603:300d:1a7:a020:5081:88c5:3b11:879e
          source link-address option (1), length 8 (1): 60:3d:26:68:72:70
            0x0000:  603d 2668 7270
18:51:26.196391 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::10:18ff:fe0c:5da4 > ff02::1:ff27:b2ad: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2603:300d:1a7:a020:8d13:2fb0:df27:b2ad
          source link-address option (1), length 8 (1): 60:3d:26:68:72:70
            0x0000:  603d 2668 7270
18:51:26.204267 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::10:18ff:fe0c:5da4 > ff02::1:ff69:8541: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2603:300d:1a7:a020:3180:6962:5e69:8541
          source link-address option (1), length 8 (1): 60:3d:26:68:72:70
            0x0000:  603d 2668 7270
18:51:26.829315 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 136) fe80::10:18ff:fe0c:5da4 > ff02::1: [icmp6 sum ok] ICMP6, router advertisement, length 136
        hop limit 64, Flags [managed], pref medium, router lifetime 180s, reachable time 0ms, retrans timer 0ms
          rdnss option (25), length 56 (7):  lifetime 86400s, addr: 2603:300d:1a7:a000:623d:26ff:fe68:7270 addr: 2001:558:feed::1 addr: 2001:558:feed::2
            0x0000:  0000 0001 5180 2603 300d 01a7 a000 623d
            0x0010:  26ff fe68 7270 2001 0558 feed 0000 0000
            0x0020:  0000 0000 0001 2001 0558 feed 0000 0000
            0x0030:  0000 0000 0002
          prefix info option (3), length 32 (4): 2603:300d:1a7:a000::/64, Flags [onlink, auto], valid time 300s, pref. time 300s
            0x0000:  40c0 0000 012c 0000 012c 0000 0000 2603
            0x0010:  300d 01a7 a000 0000 0000 0000 0000
          route info option (24), length 24 (3):  ::/0, pref=medium, lifetime=180s
            0x0000:  0000 0000 00b4 0000 0000 0000 0000 0000
            0x0010:  0000 0000 0000
          source link-address option (1), length 8 (1): 60:3d:26:68:72:70
            0x0000:  603d 2668 7270
18:51:27.181001 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::10:18ff:fe0c:5da4 > ff02::1:ff1f:eaab: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2603:300d:1a7:a020:ccd4:5014:5d1f:eaab
          source link-address option (1), length 8 (1): 60:3d:26:68:72:70
            0x0000:  603d 2668 7270
18:51:27.181018 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::10:18ff:fe0c:5da4 > ff02::1:ff11:879e: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2603:300d:1a7:a020:5081:88c5:3b11:879e
          source link-address option (1), length 8 (1): 60:3d:26:68:72:70
            0x0000:  603d 2668 7270
18:51:27.190911 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::10:18ff:fe0c:5da4 > ff02::1:ff27:b2ad: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2603:300d:1a7:a020:8d13:2fb0:df27:b2ad
          source link-address option (1), length 8 (1): 60:3d:26:68:72:70
            0x0000:  603d 2668 7270
18:51:27.201142 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::10:18ff:fe0c:5da4 > ff02::1:ff69:8541: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2603:300d:1a7:a020:3180:6962:5e69:8541
          source link-address option (1), length 8 (1): 60:3d:26:68:72:70
            0x0000:  603d 2668 7270
18:51:28.181126 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::10:18ff:fe0c:5da4 > ff02::1:ff1f:eaab: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2603:300d:1a7:a020:ccd4:5014:5d1f:eaab
          source link-address option (1), length 8 (1): 60:3d:26:68:72:70
            0x0000:  603d 2668 7270
18:51:28.181144 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::10:18ff:fe0c:5da4 > ff02::1:ff11:879e: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2603:300d:1a7:a020:5081:88c5:3b11:879e
          source link-address option (1), length 8 (1): 60:3d:26:68:72:70
            0x0000:  603d 2668 7270
18:51:28.190924 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::10:18ff:fe0c:5da4 > ff02::1:ff27:b2ad: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2603:300d:1a7:a020:8d13:2fb0:df27:b2ad
          source link-address option (1), length 8 (1): 60:3d:26:68:72:70
            0x0000:  603d 2668 7270
18:51:28.201114 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::10:18ff:fe0c:5da4 > ff02::1:ff69:8541: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2603:300d:1a7:a020:3180:6962:5e69:8541
          source link-address option (1), length 8 (1): 60:3d:26:68:72:70
            0x0000:  603d 2668 7270
18:51:29.186436 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::10:18ff:fe0c:5da4 > ff02::1:ff1f:eaab: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2603:300d:1a7:a020:ccd4:5014:5d1f:eaab
          source link-address option (1), length 8 (1): 60:3d:26:68:72:70
            0x0000:  603d 2668 7270
18:51:29.193180 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::10:18ff:fe0c:5da4 > ff02::1:ff11:879e: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2603:300d:1a7:a020:5081:88c5:3b11:879e
          source link-address option (1), length 8 (1): 60:3d:26:68:72:70
            0x0000:  603d 2668 7270
18:51:29.206369 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::10:18ff:fe0c:5da4 > ff02::1:ff69:8541: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2603:300d:1a7:a020:3180:6962:5e69:8541
          source link-address option (1), length 8 (1): 60:3d:26:68:72:70
            0x0000:  603d 2668 7270
18:51:29.212847 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::10:18ff:fe0c:5da4 > ff02::1:ff27:b2ad: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2603:300d:1a7:a020:8d13:2fb0:df27:b2ad
          source link-address option (1), length 8 (1): 60:3d:26:68:72:70
            0x0000:  603d 2668 7270
18:51:29.832551 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 136) fe80::10:18ff:fe0c:5da4 > ff02::1: [icmp6 sum ok] ICMP6, router advertisement, length 136
        hop limit 64, Flags [managed], pref medium, router lifetime 180s, reachable time 0ms, retrans timer 0ms
          rdnss option (25), length 56 (7):  lifetime 86400s, addr: 2603:300d:1a7:a000:623d:26ff:fe68:7270 addr: 2001:558:feed::1 addr: 2001:558:feed::2
            0x0000:  0000 0001 5180 2603 300d 01a7 a000 623d
            0x0010:  26ff fe68 7270 2001 0558 feed 0000 0000
            0x0020:  0000 0000 0001 2001 0558 feed 0000 0000
            0x0030:  0000 0000 0002
          prefix info option (3), length 32 (4): 2603:300d:1a7:a000::/64, Flags [onlink, auto], valid time 300s, pref. time 300s
            0x0000:  40c0 0000 012c 0000 012c 0000 0000 2603
            0x0010:  300d 01a7 a000 0000 0000 0000 0000
          route info option (24), length 24 (3):  ::/0, pref=medium, lifetime=180s
            0x0000:  0000 0000 00b4 0000 0000 0000 0000 0000
            0x0010:  0000 0000 0000
          source link-address option (1), length 8 (1): 60:3d:26:68:72:70
            0x0000:  603d 2668 7270
18:51:30.181272 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::10:18ff:fe0c:5da4 > ff02::1:ff1f:eaab: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2603:300d:1a7:a020:ccd4:5014:5d1f:eaab
          source link-address option (1), length 8 (1): 60:3d:26:68:72:70
            0x0000:  603d 2668 7270
18:51:30.190965 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::10:18ff:fe0c:5da4 > ff02::1:ff11:879e: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2603:300d:1a7:a020:5081:88c5:3b11:879e
          source link-address option (1), length 8 (1): 60:3d:26:68:72:70
            0x0000:  603d 2668 7270
18:51:30.201149 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::10:18ff:fe0c:5da4 > ff02::1:ff69:8541: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2603:300d:1a7:a020:3180:6962:5e69:8541
          source link-address option (1), length 8 (1): 60:3d:26:68:72:70
            0x0000:  603d 2668 7270
18:51:30.210917 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::10:18ff:fe0c:5da4 > ff02::1:ff27:b2ad: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2603:300d:1a7:a020:8d13:2fb0:df27:b2ad
          source link-address option (1), length 8 (1): 60:3d:26:68:72:70
            0x0000:  603d 2668 7270
18:51:31.181162 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::10:18ff:fe0c:5da4 > ff02::1:ff1f:eaab: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2603:300d:1a7:a020:ccd4:5014:5d1f:eaab
          source link-address option (1), length 8 (1): 60:3d:26:68:72:70
            0x0000:  603d 2668 7270
18:51:31.190863 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::10:18ff:fe0c:5da4 > ff02::1:ff11:879e: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2603:300d:1a7:a020:5081:88c5:3b11:879e
          source link-address option (1), length 8 (1): 60:3d:26:68:72:70
            0x0000:  603d 2668 7270
18:51:31.201138 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::10:18ff:fe0c:5da4 > ff02::1:ff69:8541: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2603:300d:1a7:a020:3180:6962:5e69:8541
          source link-address option (1), length 8 (1): 60:3d:26:68:72:70
            0x0000:  603d 2668 7270
18:51:31.210924 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::10:18ff:fe0c:5da4 > ff02::1:ff27:b2ad: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2603:300d:1a7:a020:8d13:2fb0:df27:b2ad
          source link-address option (1), length 8 (1): 60:3d:26:68:72:70
            0x0000:  603d 2668 7270
18:51:31.219712 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::8e3b:adff:fe33:d55b > fe80::10:18ff:fe0c:5da4: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has fe80::10:18ff:fe0c:5da4
          source link-address option (1), length 8 (1): 8c:3b:ad:33:d5:5b
            0x0000:  8c3b ad33 d55b
18:51:31.221371 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 24) fe80::10:18ff:fe0c:5da4 > fe80::8e3b:adff:fe33:d55b: [icmp6 sum ok] ICMP6, neighbor advertisement, length 24, tgt is fe80::10:18ff:fe0c:5da4, Flags [router, solicited]
^C

Looks normal, it sends out the router advertisements and even responded on the neighbor solicitation at the end of the capture.
Is there anything else connected on the comcast except the OpenWrt? I can see a lot of neighbor solicitations from the comcast but for the subnet that has been delegated 2603:...:a020:...and belongs to the lan. Are you certain that there is no loop somewhere, right?

There's only one cable going from the comcast modem to the wan port on the r7800 (openwrt), and my computer is plugged into a mikrotik switch plugged into the lan port of the openwrt. No chance of loops.

I find myself again wondering if this is something wrong on comcast's side: it's like the modem is configured expecting the entire a000/56 network to be link local...that's the only explanation for it soliciting for a020 addresses, right? It wouldn't do a neighbor solicitation for addresses on the other side of my router? I want to make sure it knows that only a000/64 is link local, and that it needs to pass a020 through the r7800.

Following that thought, I'm gonna make sure this is an openwrt issue.
Before I ever bothered you guys, I was sure to just test the modem by hooking my computer directly to the modem, and ipv6 worked in that scenario. That's what made me think it had to be my openwrt router.

But now I realize that a computer connected to the modem is a much simpler setup, as my computer is just picking up an ipv6 address in the a000/64 network. There's no prefix delegation for example.

So, there's 2 things I'm gonna try:

  1. I'm gonna try disabling ipv6 on the lan interface, such that the wan6 interface is the only ipv6 interface, disable delegation request, and see if I can use ipv6 from the device in that scenario where the only IP it's getting is one in the a000/64 network.

  2. I'm gonna try this with a pfsense box, and see if I encounter similar issues.

Depending on how those tests turn out, I'll have a better idea of where to focus my efforts.

1 Like

Just as a heads up on this thread, when I tried things with a pfsense box, I had very similar results.
At first, it seemed to work better, but I realized that's just because pfsense defaulted to pinging using the wan ip instead of the lan ip (as Trendy informed me, openwrt does the opposite).

It looks like it's probably a bug with my CGA4131COM modem from comcast...there are plenty of threads pointing out that this modem fails to route from the delegated ip space (used by the lan interface), while working fine routing the ip assigned directly to the device. Some examples:

Sorry for wasting your time Trendy...as I said, I thought I confirmed it was an openwrt issue before I ever posted. This modem was just broken in the worst possible way...it seemed to work until I put the router on, but now I see it's because it's broken specifically for delegated addresses.

No worries. Unfortunately I come across a lot of issues recently where routers are not able to route the downstream OpenWrt properly. I guess it's poor testing, especially in the case of prefix delegated.