Ways to check if IPv6 issues are upstream (ISP) or not

I recently got a new modem from my ISP (changed from coax to fiber), and was unable to get IPv6. I know the issue lies that the wan is not getting ipv6, but wasn't sure if it was because for some reason the ISP doesn't have ipv6 with fiber (had it with coaxial), or because some configuration on my router. My router is connected directly to the ONT, and the relevant part of network file is:

config interface 'wan'
        option device 'wan.10'
        option proto 'pppoe'
        option username 'username'
        option password 'password'
        option ipv6 'auto'

config interface 'wan6'
        option device 'wan.10'
        option proto 'dhcpv6'
        option reqaddress 'try'
        option reqprefix 'auto'

I successfully get an IPv4, but no IPv6. Calling the ISP got nowhere, they just said "we should have IPv6, but there's nothing I can do to diagnose it". Of note, is that the ISP's router also does not get IPv6 (but I'm not using that router, as mentioned my openwrt router is plugged directly to the fiber "modem".
In the log I get these errors:

daemon.err odhcp6c[3402]: Failed to send RS (Address not available)
daemon.err odhcp6c[3402]: Failed to send SOLICIT message to ff02::1:2 (Address not available)

Doing a tcpdump:

root@openwrt:~# tcpdump -i wan.20 'ip6 multicast and udp port 547'

15:37:21.381050 IP6 fe80::1234:12ff:fea0:a123.123 > ff02::1:2.547: dhcp6 solicit

So it seems I get a link local address, and so it seems it's not the issue of having no link local as described here.

I'm not sure if this is correct, but I tried pinging that server with:

ping6 -c 4 ff02::1:2%wan.20 

But get no response. The firewall has the default traffic rule for "Allow-DHCPv6", (incoming ipv6, protocol udp, from wan, to this device, port 546, accept input, enabled)

Is it safe to assume that it's the ISP that does not have any DHCPv6 set up from these tests? Or is there something else I can do to make sure I don't have any missing configuration on my side?

You need to sent ip6 solicitations inside ppp tunnel.

1 Like

Sorry, how do I do that? I'm still very much a novice.

Edit: Following the docs, it just says "PPP-based protocols - for example pppoe and pppoa - require that option ipv6 is specified in the parent config interface wan section". I'm under the impression that's what's done in my network file

It is checkbox under same ppp connection, under very rare circumstances you need to use another v6 config protocols.

In luci, for the "wan" interface, in advanced there's a "IPv6 source routing" checkbox, and it's ticked. Is that the one you're referring to?

I'm doing this tcpdump too, and it's coming up blank:

tcpdump -i pppoe-wan 'udp port 547 or udp port 546 or ip6'

The pppoe driver should notice that the ISP advertises IPv6, then spawn a wan_6 interface and use DHCP to configure it. You don't need a wan6 section at all. This will be logged in the system log during connection.

I've been getting snippets of that here and there, what threw me off is that the docs say "All other IPv6 configuration is made in the wan6 interface which must be configured manually, as described below.". But it's better then to just do the following?

config interface 'wan'
        option device 'wan.20'
        option proto 'pppoe'
        option username 'username'
        option password 'password'
        option ipv6 'auto'

#config interface 'wan6'
#       option device '@wan'
#        option proto 'dhcpv6'
#        option reqaddress 'try'
#        option reqprefix 'auto'

Edit:
After doing that, I get the following log errors:

odhcp6c[12905]: Failed to send SOLICIT message to ff02::1:2 (Network unreachable)

Edit 2:
After a network reset, I get no logs about dhcp6c. I'm getting them by:

logread | grep 'dhcp6c'

Try this:

config interface 'wan'
        option device 'wan.10'
        option proto 'pppoe'
        option username 'username'
        option password 'password'
        option ipv6 '1'  <-change here

config interface 'wan6'
        option device '@wan' <-change here
        option proto 'dhcpv6'
        option reqaddress 'try'
        option reqprefix 'auto'
1 Like

Thanks for the input. Made the changes, still get get in the log:

daemon.err odhcp6c[20794]: Failed to send SOLICIT message to ff02::1:2 (Network unreachable)

I'm thinking it's the ISP's side issue, since the router the ISP provided (which I can see very limited setup on it, but can toggle "on" IPv6) also does not get IPv6. But to to be sure, are there any sure ways to test if there's any DHCPv6 server on the ISP side of things?

There is a page in the wiki for that.
https://openwrt.org/docs/guide-user/network/protocol.dhcp#troubleshooting
I would also add the ip6 in the tcpdump filter.
tcpdump -evni any ip6 or udp port 547 & \

Had not found that wiki page before, that's a good script, thanks. I ran the DHCpv6 one (with the ip6 as well as you mentioned), and no wan/wan.20/pppoe-wan ipv6 nor port 547 activity shows up. I suspect that it's because the pppoe-wan device does not have a link local ipv6. Checking with "ip addr show":

30: pppoe-wan: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc fq_codel state UNKNOWN group default qlen 3
    link/ppp
    inet 24.xx.xxx.xx peer 24.xx.xxx.x/32 scope global pppoe-wan
       valid_lft forever preferred_lft forever

Just for testing, I manually assigned a link local to pppoe-wan:

ip -6 addr add fe80::1/64 dev pppoe-wan

And re-ran the dhcpv6 tcpdump script. This time there was some activity:

pppoe-wan Out ifindex 30 ethertype IPv6 (0x86dd), length 167: (flowlabel 0x4d91a, hlim 1, next-header UDP (17) payload length: 107) fe80::1.546 > ff02::1:2.547: [udp sum ok] dhcp6 solicit (xid=23980f (elapsed-time 108) (option-request SIP-servers-domain SIP-servers-address DNS-server DNS-search-list SNTP-servers NTP-server AFTR-Name opt_67 opt_94 opt_95 opt_96 opt_82) (client-ID hwaddr type 1 XXXXXXXX) (reconfigure-accept) (Client-FQDN) (IA_NA IAID:1 T1:0 T2:0) (IA_PD IAID:1 T1:0 T2:0))
pppoe-wan Out ifindex 30 ethertype IPv6 (0x86dd), length 167: (flowlabel 0x4d91a, hlim 1, next-header UDP (17) payload length: 107) fe80::1.546 > ff02::1:2.547: [udp sum ok] dhcp6 solicit (xid=23980f (elapsed-time 332) (option-request SIP-servers-domain SIP-servers-address DNS-server DNS-search-list SNTP-servers NTP-server AFTR-Name opt_67 opt_94 opt_95 opt_96 opt_82) (client-ID hwaddr type 1 XXXXXXXX) (reconfigure-accept) (Client-FQDN) (IA_NA IAID:1 T1:0 T2:0) (IA_PD IAID:1 T1:0 T2:0))
pppoe-wan Out ifindex 30 ethertype IPv6 (0x86dd), length 167: (flowlabel 0x4d91a, hlim 1, next-header UDP (17) payload length: 107) fe80::1.546 > ff02::1:2.547: [udp sum ok] dhcp6 solicit (xid=23980f (elapsed-time 0) (option-request SIP-servers-domain SIP-servers-address DNS-server DNS-search-list SNTP-servers NTP-server AFTR-Name opt_67 opt_94 opt_95 opt_96 opt_82) (client-ID hwaddr type 1 XXXXXXXX) (reconfigure-accept) (Client-FQDN) (IA_NA IAID:1 T1:0 T2:0) (IA_PD IAID:1 T1:0 T2:0))

But no response from a DHCPv6 server. Should ppoe-wan have a link local ipv6?

Edit: What I also noticed was that the client-ID was sending the original MAC address, not the one I was cloning from the ISP's router. I configured the pppoe-wan device to clone a MAC address, but it did not change the client-ID captured by the tcpdump. Should I also be trying to "spoof" the MAC address on the captured tcpdump?

Then it looks like the PPP is not advertising that there is any IPv6 connectivity.

You can try that too, although it doesn't seem to me that it's the problem.
Under Network-Interfaces, devices tab, edit the physical interface for the wan interface and add the custom MAC address.

Okay, thanks. I'm going to conclude that indeed there's not IPv6 connectivity from ISP's side.

My device is a WRT1200AC, so the wan is on eth0. When I add a mac address to eth0 and apply it, the device's lights all go off and it is not reachable (thankfully the settings revert after the 3 min and a reboot). Trying to ping it just comes back as unreachable. I used static ip assignment on my computer itself just to make sure it wasn't a dhcp issue but still no ping back. But I'm not going to keep trying to change eth0's MAC as just changing the wan's device mac makes it successfully connect to pppoe, and like you said it seems there's no ppp advertisement of ipv6 so likely that's the issue. Thanks again for taking the time to go over my issue.

1 Like

apparently, this solved my issue in this thread: DHCPv6 client "Network device is not present" after PPPoE session resets (disconnects/reconnects), system restart restores the IPv6, netifd issue? - #3 by vincejv

lol thanks @trendy

1 Like

yeah on my end it needs a link-local, when ISP enabled IPv6 on PPPoE it started giving me a link local, before there was none, this link local address should appear on PPPD debug logs or else you get a "conf rej" for ipv6

Ok thanks, so more reason to believe in my case the ISP is not assigning IPv6. What you had in your config file for wan is a nice addition to the debugging approach, am including it here too for posterity:

config interface 'wan'
    option pppd_options 'debug logfile /var/log/pppd.log'
    ...

Edit: And those options can be found in the pppd man page.

If ISP doesn't support IPv6 on PPPoE should see something like this on pppd, the error was protrej (Protocol Reject)

sent [IPCP ConfReq id=0x1 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns2 0.0.0.0>]
sent [IPV6CP ConfReq id=0x1 <addr fe80::48e0:8d0f:00f3:8c85>]
rcvd [LCP ProtRej id=0x30 80 57 01 01 00 0e 01 0a 48 e0 8d 0f 00 f3 8c 85]
Protocol-Reject for 'IPv6 Control Protocol' (0x8057) received

and if it supports, you will see something like this, IPV6CP ConfAck (configuration acknowledged)

sent [IPV6CP ConfReq id=0x1 <addr fe80::2849:340f:60da:20d0>]
rcvd [IPCP ConfReq id=0xdc <addr x.x.x.x>]
sent [IPCP ConfAck id=0xdc <addr x.x.x.x>]
rcvd [IPCP ConfNak id=0x1 <addr x.x.x.x> <ms-dns1 x.x.x.x> <ms-dns2 x.x.x.x>]
sent [IPCP ConfReq id=0x2 <addr x.x.x.x> <ms-dns1 x.x.x.x> <ms-dns2 x.x.x.x>]
rcvd [IPV6CP ConfReq id=0x22 <addr fe80::a651:5eff:fe90:b325>]
sent [IPV6CP ConfAck id=0x22 <addr fe80::a651:5eff:fe90:b325>]
rcvd [IPCP ConfAck id=0x2 <addr x.x.x.x> <ms-dns1 x.x.x.x> <ms-dns2 x.x.x.x>]
1 Like

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.