OpenWrt behind ISP Router: IPv6 Pass On Global Präfix/Adresses

uci set network.LAN.ip6class="wan local"
uci commit network
service network reload

https://openwrt.org/docs/guide-user/network/ipv6/start#downstream_configuration_for_lan_interfaces

1 Like

okay, now i got local and global adresses. But no ipv6 default route on the clients.
From my understanding at IPv4 we have a dhcp server and at ipv6 we got dhcpv6 and RA.
The RA - Server is in server mode on the lan interface, but still no default route on the clients.
Can you guess why that could be?

https://openwrt.org/docs/guide-user/network/routes_configuration#ipv6_routes

1 Like

I'm sorry but I'm not here to get links to the openwrt wiki. I know that the wiki is good, but I cant get a clue why that doesnt work..

ifstatus:

root@oscar:~# ifstatus wan
{
        "up": true,
        "pending": false,
        "available": true,
        "autostart": true,
        "dynamic": false,
        "uptime": 69241,
        "l3_device": "eth0.1",
        "proto": "static",
        "device": "eth0.1",
        "updated": [
                "addresses",
                "routes",
                "prefixes"
        ],
        "metric": 0,
        "dns_metric": 0,
        "delegation": true,
        "ipv4-address": [
                {
                        "address": "10.0.10.1",
                        "mask": 24
                }
        ],
        "ipv6-address": [
                {
                        "address": "fd42:0:0:1010::1",
                        "mask": 64
                }
        ],
        "ipv6-prefix": [
                {
                        "address": "2001:470:xxxx::",
                        "mask": 59,
                        "class": "wan",
                        "assigned": {
                                "LAN": {
                                        "address": "2001:470:xxxx::",
                                        "mask": 64
                                },
                                "IoT": {
                                        "address": "2001:470:xxxx:1::",
                                        "mask": 64
                                },
                                "GAST": {
                                        "address": "2001:470:xxxx:2::",
                                        "mask": 64
                                },
                                "DMZ": {
                                        "address": "2001:470:xxxx:3::",
                                        "mask": 64
                                }
                        }
                }
        ],
        "ipv6-prefix-assignment": [
                
        ],
        "route": [
                {
                        "target": "fd42:0:0:1010::",
                        "mask": 64,
                        "nexthop": "fd42:0:0:1010::1",
                        "source": "::\/0"
                },
                {
                        "target": "10.0.10.0",
                        "mask": 24,
                        "nexthop": "0.0.0.0",
                        "mtu": 1500,
                        "metric": 0,
                        "source": "0.0.0.0\/0"
                },
                {
                        "target": "::",
                        "mask": 0,
                        "nexthop": "2001:470:6c:9b2::2",
                        "source": "::\/0"
                },
                {
                        "target": "0.0.0.0",
                        "mask": 0,
                        "nexthop": "10.0.10.10",
                        "source": "0.0.0.0\/0"
                },
                {
                        "target": "::",
                        "mask": 0,
                        "nexthop": "2001:470:6c:9b2::2",
                        "source": "::\/0"
                },
                {
                        "target": "0.0.0.0",
                        "mask": 0,
                        "nexthop": "10.0.10.10",
                        "source": "0.0.0.0\/0"
                }
        ],
        "dns-server": [
                "46.182.19.48",
                "2a02:2970:1002::18",
                "1.1.1.1"
        ],
        "dns-search": [
                
        ],
        "inactive": {
                "ipv4-address": [
                        
                ],
                "ipv6-address": [
                        
                ],
                "route": [
                        
                ],
                "dns-server": [
                        
                ],
                "dns-search": [
                        
                ]
        },
        "data": {
                
        }
}
root@oscar:~# 
root@oscar:~# ifstatus LAN
{
        "up": true,
        "pending": false,
        "available": true,
        "autostart": true,
        "dynamic": false,
        "uptime": 79357,
        "l3_device": "eth0.2",
        "proto": "static",
        "device": "eth0.2",
        "updated": [
                "addresses",
                "routes"
        ],
        "metric": 0,
        "dns_metric": 0,
        "delegation": true,
        "ipv4-address": [
                {
                        "address": "10.0.0.1",
                        "mask": 24
                }
        ],
        "ipv6-address": [
                
        ],
        "ipv6-prefix": [
                
        ],
        "ipv6-prefix-assignment": [
                {
                        "address": "2001:470:xxxx::",
                        "mask": 64,
                        "local-address": {
                                "address": "2001:470:xxxx::1",
                                "mask": 64
                        }
                },
                {
                        "address": "fd42::",
                        "mask": 64,
                        "local-address": {
                                "address": "fd42::1",
                                "mask": 64
                        }
                }
        ],
        "route": [
                {
                        "target": "2001:470:xxxx::",
                        "mask": 64,
                        "nexthop": "2001:470:xxxx::1",
                        "source": "::\/0"
                },
                {
                        "target": "fd42:0:0:1000::",
                        "mask": 64,
                        "nexthop": "fd42:0:0:1000::1",
                        "source": "::\/0"
                },
                {
                        "target": "10.0.0.0",
                        "mask": 24,
                        "nexthop": "0.0.0.0",
                        "mtu": 1500,
                        "metric": 0,
                        "source": "0.0.0.0\/0"
                },
                {
                        "target": "0.0.0.0",
                        "mask": 0,
                        "nexthop": "10.0.0.1",
                        "source": "0.0.0.0\/0"
                }
        ],
        "dns-server": [
                "46.182.19.48",
                "2a02:2970:1002::18",
                "1.1.1.1"
        ],
        "dns-search": [
                
        ],
        "inactive": {
                "ipv4-address": [
                        
                ],
                "ipv6-address": [
                        
                ],
                "route": [
                        
                ],
                "dns-server": [
                        
                ],
                "dns-search": [
                        
                ]
        },
        "data": {
                
        }
}

and on the fritzbox I got a route:
Network: 2001:470:5436::
Prefix: 59
Gateway: fd42:0:0:1010::1

I also got a default route on the openwrt router to the fritzbox:

config route6
        option interface 'wan'
        option gateway '2001:470:xxx:xxx::2' (adress of the fritzbox)
        option target '::/0'

config route6
        option interface 'LAN'
        option target '2001:470:xxxx::/64'
        option gateway '2001:470:xxxx::1'

Is that a LAN address of the fritzbox? It seems openwrt doesn't have an address in that network. You need to use the address of the fritzbox in a network connected to the openwrt, which seems to be fd42:0:0:1010::/64, Or you can use a link-local address (in fe80::/64).

1 Like

To use the link-local address I believe you'll have to specify the link as well:

fe80::abcd:1234%eth0.1 for example

network.@route6[x].interface is enough.

2 Likes

Okay,

the ULA of the fritzbox is: fd42::1010:464e:6dff:fef0:6fdd/64
The ULA of the openwrt wan interface is: fd42:0:0:1010::1/64

Thats the same network, or am I completetly wrong here?

On the openwrt router I got the following routes:

config route6
        option interface 'wan'
        option target 'fd42:0:0:1010::/64'

config route6
        option interface 'DMZ'
        option target 'fd42:0:0:1003::/64'

config route6
        option interface 'GAST'
        option target 'fd42:0:0:1002::/64'

config route6
        option interface 'IoT'
        option target 'fd42:0:0:1001::/64'

config route6
        option interface 'LAN'
        option target 'fd42:0:0:1000::/64'

config route6
        option interface 'wan'
        option target '::/0'
        option gateway 'fd42::1010:464e:6dff:fef0:6fdd/64'

And on the fritzbox I got the follwing routes:

 	Netzwerk  	Präfixlänge  	Gateway  	
	2001:470:5436:0::	64	fd42:0:0:1010::1	
	2001:470:5436:1::	64	fd42:0:0:1010::1	
	2001:470:5436:2::	64	fd42:0:0:1010::1	
	2001:470:5436:3::	64	fd42:0:0:1010::1	
	fd42:0:0:1000::	64	fd42:0:0:1010::1	
	fd42:0:0:1001::	64	fd42:0:0:1010::1	
	fd42:0:0:1002::	64	fd42:0:0:1010::1	
	fd42:0:0:1003::	64	fd42:0:0:1010::1	

On every interface on the openwrt router there is this "Always announce default router"-switch. Should i turn it on or off?

I tested being in WLAN of the fritzbox, getting a fd42::/64 adress.. ping not possible to fd42:0:0:1010::1/64. I really dont now know why.. :frowning:

you can simplify your fritzbox routes to fd42::/48 and 2001:470:5436::/59

but it does seem like your config should work. evidently the fritzbox is on the fritz :grinning:

I don't think you should include the prefix length ("/64") in the gateway option. Check if the route has been installed on the status->routes page or with ip -6 route show.

BTW you shouldn't need to use a route6 since there is a "IPv6 gateway" setting in the web gui (option ip6gw).

https://openwrt.org/docs/guide-user/network/ipv6/start

1 Like

@dlakelan you can simplify your fritzbox routes to fd42::/48 and 2001:470:5436::/59

well yeah, I got this now.

@mikma I don't think you should include the prefix length ("/64") in the gateway option. Check if the route has been installed on the status->routes page or with ip -6 route show. BTW you shouldn't need to use a route6 since there is a "IPv6 gateway" setting in the web gui (option ip6gw).

When I set the gateway(default) route without /64 it appears in the status->routes page, if not, then not eventhough I got a ipv6gateway set at the wan interface

@dlakelan but it does seem like your config should work. evidently the fritzbox is on the fritz :grinning:

well.. :smiley: I guess so :confused:

I think the problem is, that the clients dont get a proper default route...
a client in the LAN networks gets something like this?!

default via fe80::2a10:7bff:fece:5854 dev eth0  metric 202  mtu 1500
default via fe80::2a10:7bff:fece:5854 dev eth0  proto ra  metric 1024  expires 1686sec hop
limit 64

this fe80 adress ca be found at the interfaces on the openwrt router:

ip a|grep -E '(fe80|: eth0)'                                                 
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet6 fe80::2a10:7bff:fece:5854/64 scope link 
    inet6 fe80::2a10:7bff:fece:5854/64 scope link 
32: eth0.4@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-GAST state UP group default qlen 1000
    inet6 fe80::2a10:7bff:fece:5854/64 scope link 
34: eth0.3@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-IoT state UP group default qlen 1000
35: eth0.5@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    inet6 fe80::2a10:7bff:fece:5854/64 scope link 
51: eth0.2@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    inet6 fe80::2a10:7bff:fece:5854/64 scope link 
53: eth0.1@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    inet6 fe80::2a10:7bff:fece:5854/64 scope link 

That's an ok default route, it basically says to send packets to the router using the router's link-local address. That's fine.

if you traceroute from a client, what do you see?

Should I be able to ping this link-local adress from a client?
This is the output of a traceroute:

traceroute -6 ipv6.google.com
traceroute to ipv6.google.com (2a00:1450:4001:81d::200e), 30 hops max, 80 byte packets
 1  2001:470:5436::1 (2001:470:5436::1)  0.507 ms  0.644 ms  0.756 ms
 2  2001:470:5436::1 (2001:470:5436::1)  3104.110 ms !H  3104.167 ms !H  3104.208 ms !H

yes. Though on the client you may need to use the %dev notation at the end of the address, as a link local address needs to have its link specified to make sense. each client should be able to ping its gateway (assuming you're not blocking pings).

Is 2001:470:5436::1 an address on your OpenWrt or on the fritzbox? Does the fritzbox have a default route to the ipv6 internet?

okay, I can ping the gaterway. :slight_smile:

the 2001:470:5436::1 is the lan port on the openwrt router.

I guess that the fritzbox have a default route to the internet. When I try to save one ::/0 route it's displays me that the prefix must be between 16 and 64.
EDIT: I have to add that, when I am in the wlan of the frtzbox I got IPv6 internet access. So there must be a default route, right?

When I understand this problem correctly, I whould guess that the clients do connect to the openwrt router, but then they doesnt have a route to the Internet.
But on the openwrt I got a default route to the fd42:: adress of the fritzbox via the wan interface..
Should I alter this route to the fe80 adress of the fritzbox? (btw: How can I find what that adress is?)

I got an FritzBox 6490 Cable. But I am unable to find out what fe80 adress it has.
I got the mac from the back of the router.. but that didnt work..

Try with ip -6 neigh show

1 Like

I on the openwrt router via ssh:

root@oscar:~# ip -6 r |grep default                                                         
default via fe80::464e:6dff:fef0:6fda dev eth0.1 proto static metric 1024 pref medium

root@oscar:~# ip -6 neigh show |grep eth0.1                                                 
fe80::464e:6dff:fef0:6fda dev eth0.1  INCOMPLETE

root@oscar:~# ping6 fe80::464e:6dff:fef0:6fda                                               
PING fe80::464e:6dff:fef0:6fda (fe80::464e:6dff:fef0:6fda): 56 data bytes
^C
--- fe80::464e:6dff:fef0:6fda ping statistics ---
16 packets transmitted, 0 packets received, 100% packet loss

root@oscar:~# ping6 fe80::464e:6dff:fef0:6fda%eth0.1                                        
PING fe80::464e:6dff:fef0:6fda%eth0.1 (fe80::464e:6dff:fef0:6fda%64): 56 data bytes
^C
--- fe80::464e:6dff:fef0:6fda%eth0.1 ping statistics ---
7 packets transmitted, 0 packets received, 100% packet loss