How do I access the router via its IPv6 link-local address?

I managed to somehow screw up my router's IPv4 connectivity in ways that do not make sense (I inentionally set an invalid config on a VLAN assigned to 1 port, but the lan was left intact and available on 3 of the ports, so I expected connectivity would work on those ports).

Failsafe doesn't work properly on the router (Linksys E3000), so I'm locked out.

I am getting an IPv6 Link Local address assigned to my computer (fd83:34f4:b40::1c79:c0aa:8d05:afc6). How do I access the router using the IPv6 LL addressing?

I'm assuming the issue is you don't know the router's IPv6 prefix/addresses?
ip neigh from a Linux box attached to it or
netsh interface ipv6 show neighbors from a windows box attached to it

Either of those will send out broadcast pings, listen to responses, and list all the nodes it sees.

2 Likes

ip -6 r should give you some hints for the ULA prefix (the router will have the :1), additionally you should get its link local address as well (fxxx:xxxx:xxxx::/48 via fe80::xxx:xxx:xxxx:xxxx dev br-lan proto ra metric 1024 expires 1602sec pref medium, the fe80:: would be what you're after).

The E3000 (based on my experience with the virtually identical WRT610Nv1) is quite nasty, with its broken CFE implementation - you may need serial console access to recover, easiest from the inside - but the traces are also exposed (just hard to grasp) in the WAN port.

Mac OS doesn't have the ip command installd by default (although it is available via brew). What is the equivalent? can I do this with arp?

Alternatively, I can fire up a linux box I have lying around, but need to set that up.

busybox route -A inet6 might do the job (omit busybox, but I no longer have net-tools' /bin/route installed (Debian/unstable), so I'm just extrapolating from busybox' minimal alternatives.

Hmmm... ok, maybe just try pinging the broadcast address

ping6 -I <interface> ff02::1
1 Like

So this works and I get these returns:

16 bytes from fe80::872:2c36:822a:103d%en1, icmp_seq=2 hlim=64 time=0.125 ms
16 bytes from fe80::c2c1:c0ff:fe04:7b76%en1, icmp_seq=2 hlim=64 time=0.734 ms

(the only device connected on the interface is the router). But when I try to ssh, I get this error (same for both addresses):

$ ssh root@fe80::c2c1:c0ff:fe04:7b76
ssh: connect to host fe80::c2c1:c0ff:fe04:7b76 port 22: No route to host

This is true even if the only active interface is the one connecte to the E3000 (the others are disabled).
(I'm not used to using IPv6, so I'm sure I'm doing something silly).

I have to admit, I'm not a fan of IPv6 myself.

You forced a multicast ping out a specific interface, and got a couple link local addresses that responded. Is IPv6 mostly disabled on the device? Is there no IPv6 prefix set on it?

Even if you only have link local addresses to work with, there should be link local routes out all of your interfaces. Though I don't know how macs work that way. route -A inet6 will print your v6 routes. If you don't have any routes for fe80:: you should be able to add one.

Thanks to @slh and @VA1DER for their help... turned out that the solution was a bit more simple. I haven't made any progress on the IPv6 methods of recovery, but the problem is fixed.

On a hunch, I set my computer's IP manually (knowing that the lan itself should be working properly)... and huzaah! it worked.

So the problem turned out to be that the DHCP server crashed.

Fri Mar 17 23:16:51 2023 daemon.info dnsmasq[1]: exiting on receipt of SIGTERM
Fri Mar 17 23:16:52 2023 daemon.crit dnsmasq[1]: inconsistent DHCP range at line 32 of /var/etc/dnsmasq.conf.cfg01411c
Fri Mar 17 23:16:52 2023 daemon.crit dnsmasq[1]: FAILED to start up

And the offending line is here:

dhcp-range=set:Test,192.168.5.2,192.168.5.0,255.255.255.255,12h

Which was the result of leaving the DHCP server setup with a /32 network (I knew the /32 was wasn't going to work, but I was running a test to see what it would do... I didn't realize I would kill dnsmasq by not disabling the DHCP server).

Offending DHCP server config
config dhcp 'Test'
        option interface 'Test'
        option leasetime '12h'
        option start '2'
        option limit '1'
Along with the /32 network config
config interface 'Test'
	option proto 'static'
	option device 'eth0.3'
	option ipaddr '192.168.5.1'
	option netmask '255.255.255.255'

Once I set the Test network interface back to a /24, dnsmasq was no longer unhappy.

Don't nail me on the details for os x,. But...
You should use ping on the interface like if you want to ping all devices on the link it's ff02::1%eth0 or to ping all routers on a link it's ff02::2
The syntax for ssh is then too ssh root@lla%eth0.
I recommend to try this out so you are prepared for the thr next time.

1 Like

Most browsers won't be able to connect to link local addresses, fortunately this address you're mentioning is actually a ULA address... A link local address will be fe80::...%eth0 or something like that, the link specifier %eth0 is necessary because all link local addresses are in the same range. However firefox and I think chrome both have reasons why they won't load them.

ULA addresses are formed from prefixes advertised by your router and are site-specific and should be chosen by random (as OpenWrt does) so you should be able to enter the address like this:

http://[fd83:34f4:b40::1c79:c0aa:8d05:afc6]/

and get LuCi

1 Like

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