He.net - two prefix - but only one ip6class

Hi everybody.

Just a short question:

How can I assign only one of my 2 tunnelbroker prefixes to an interface ?
As you know he.net now only allow one tunnel but you can have one /64 and one /48 prefixes.

But the 2 prefixes got the same class:

ifstatus henet
                        "address": "2001:470:xxxx:yyyy::",
                        "mask": 64,
                        "class": "henet",
                        "assigned": {

                        "address": "2001:470:xxxx::",
                        "mask": 48,
                        "class": "henet",
                        "assigned": {


It is not an important need as my ISP (FTTH since yesterday) delegate a /56 so I can still play a lot with this one.

but once a HE /64 is assigned both are

is there any option somewhere to 'increment' the numbering (henet1 .. henet2) reported by ifstatus so each prefix can simply get its own ipclass ?

Perhaps someone can ask a dev about that ?
... adding an ipclass pick-list on Luci should also be great :innocent:

Thanks in advance

You can filter the prefixes per interface.

list ip6class 'local'
list ip6class 'he-interface-name'


No I can't

The 2 prefixes share the same class ... they come from the same interface. See the ifstatus export

I logged into my account and it still says 5 maximum. Have they changed for new accounts?

Can't you add it to another interface using @wan6 alias and static protocol? You may need to configure a default route (with source prefix) manually for this prefix.
(You should also be able to split the /48.)

1 Like

Just assign the prefix to the proper Interface/network and give it an IP from that range. The router is smart enough to route the traffic there (because the Kernel knows there's an IP from that subnet).

1 Like


@mikma :

... why an alias to @wan6 ?? it should not be an alias for a "lan" interface ?????
I don't understand the idea here, can you explain in details please ?

@lleachii :

I have no problem with that. (in fact IT IS my problem) .. how to explain that

The question is:
how to EXCLUDE one off the two HE prefixes from an interface ?

So actually I CAN'T use ip6assign in that case

OpenWRT has internal decisions I can't bypass.
It's great to make 'common things' easier but sometimes it is #~@{~`^|/

Ok, let's see what I have if we 'play' with ip6assign:

ISP: WAN6 <=====> 2a01:a:b:cc00::/56 <==> LAN1 - 2a01:a:b:cc00::/64 ( ip6assign = 64 - ip6class = wan6 - ip6hint = 0 )
                                     <==> LAN2 - 2a01:a:b:cc01::/64 ( ip6assign = 64 - ip6class = wan6 - ip6hint = 1 )
                                     <==> LAN3 - 2a01:a:b:cc02::/64 ( ip6assign = 64 - ip6class = wan6 - ip6hint = 2 )

HE : 6IN4 <=====> | 2001:d:e:f::/64 | <==> LAN4 - 2001:d:e:f::/64 !!!! AND !!!! 2001:g:h:0004::/64 ( ip6assign = 64 - ip6class = henet - ip6hint = 4 but I can choose FFFF if I want it is the same, just 2001:g:h:0::/64 will become d:h:i:ZZZZ::/64 but 2001:d:e:f::/64 will not ... of course ;op )
                  | 2001:g:h::/48   |      etc ...

Ok ?

So no problem to get ISP prefix (and only the ISP one) routed to my lan1 with:

config interface 'lan1'
     option ip6assign "/64"
     list   ip6class "wan6"    <= HERE
#    list   ip6class "local"   <= Add this to add the ULA-Prefix to LAN1 devices
     option ip6hint '0'

PD+RA+DHCPv6 working fine on LAN1


But what happens to the first use of a HE prefixes to LAN4
No problem, let's do that:

config interface 'lan4'
     option ip6assign "/64"
     list   ip6class "henet"   <= HERE
     option ip6hint '4'        <= '4' is just for this exemple to stay with LAN'4'


The TWO prefixes are delegated to LAN4 ====> completly useless !
So ok, It is only for the first HE's prefix delegation (because the first prefix is allready a /64)
So none of the remaining 65535 networks will have this problem

But how to do in order to NOT have that with OpenWRT ??

I want to dedicate this small /64 for a special use, I don't want devices on this LAN to see any of the other /48 devices ... any (and share any broadcast/multicast/something-cast)

Ok, I now, nobody (but me) cares about that, HE give us 2 ENORMOUS scopes (so, 65537 /64 ... + 256 coming from my ISP), So I just have to forgot the HE::/64, by omitting its declaration on the network section

config interface 'henet'
option proto '6in4'
option username 'my_user'
option peeraddr ''
list ip6prefix '2001:d:e:f::/64' <===== line to remove - pffffffffffffff
list ip6prefix '2001:g:h::/48'
option ip6addr '2001:d:e:f::2/64'
option tunnelid 'my_id'
option password 'my_pass'

in the case of HE it is definitely not a real problem, but with more prefixes delegated from the same provider, how to do that with OpenWRT ???

sorry to annoy everyone with my stupid questions

To specify another ip6prefix, so you can use a different interface name for ip6class.

but one tunnel for the same source IP

Oh yes !
Many many thanks, it works well now

Should be (a way) easier with the class auto-incrementing in ifstatus ifname but at least it works now

Made some testing since your reply ==> works very fine.
For thoose (like me) who needs more details:

=> Edit /etc/config/network and add 'n' lines on your existing LAN interface (and others if others exist) to choose each prefix to define for each interface:**

list ip6class 'local'  # ULA-Prefix fdxx:xxxx:...
list ip6class '....'    
list ip6class '....'   
list ip6class 'wan6'   # from your ISP

This will exclude all the others (and free the HENET /64 in my case)

=> Edit henet interface and remove the /64 from Local IPv6 address (leave only the /48)

=> create new alias interface: Protocol Static address

  • name: you choose
  • bridge: no
  • interface: Alias @henet_interface_name
    => Create interface

=> General settings:

  • IPv6 routed prefix: put the henet ::/64 previously removed

Edit /etc/config/network and add a line on your newly created alias interface:

list ip6class 'henet_interface_name'

reload network and check the class exists:

root@gw:/etc/config# ifstatus wan6he2 | grep class
                        "class": "wan6he2",

And then another interface to connect clients: Protocol Static address
=> create new interface:

  • name: you choose (ipv6wifi in my case)
  • bridge: no
  • interface: Alias @henet_interface_name
    => Create interface

=> General settings: don't fill/change anything (eg. no IP address) but:

  • IPv6 assignment lenght: for the HE /64 scope no choice, /64. could be different for you
  • IPv6 assignment hint: for the HE /64 leave empty, for a scope from a larger prefix you can choose where to start your subprefix

=> Advanced settings: leave defaults

=> Physical settings:

  • In my case, to make testing with a tablet, I isolated an unused ethernet port on my router (dedicater VLAN tagged CPU + untagged Port) + bridge with my Wifi 2.4GHz

=> Firewall settings: your choice

=> DHCP Server:

  • RA-Service : Server mode
  • DHCPv6-Service: Server mode
  • NDP-Proxy: disable
  • DHVPv6 mode: S + S
  • Always annonce default router: no
    => not yet understand the meaning of this option - unchecked works fine for me !

=> Save

I made some testing with my tablet in IPv6 only by switching (editing ip6class and playing with ip6hint) between:

  • HE /64 prefix from the /48
  • HE /64 standalone (not previously delegated to any other interface)
  • ISP /64 from the /48

Great for me
5AM here ... time to go to bed

Thanks a lot !!

Less mess with just the config file:

config interface 'lan'
        option type 'bridge'
        option ifname 'eth0.1'
        option proto 'static'
        option ipaddr '192.168.x.x'
        option netmask ''
        option ip6assign '60'
        option ip6ifaceid '::1'
        list ip6class 'local'
        list ip6class 'wan6'     # what you need
        option ip6hint '0'       # or what you need

config interface 'wan6he2'       # alias_interface_name
        option proto 'static'
        option ifname '@wan6he'
        option ip6prefix '2001:x:x:x::/64'   # the henet /64 in my case

config interface 'ipv6wifi'
        option proto 'static'
        option ip6assign '64'
        option ip6ifaceid '::1'
        list ip6class 'wan6he2'   # alias_interface_name
        option type 'bridge'      # as needed
        option ifname 'eth0.4'    # as needed
        option ip6hint '0'        # as needed, none for the henet /64
1 Like

That will land together with https://github.com/openwrt/luci/pull/4307

1 Like

Great !
hope to be able to select one if more than one is delegated on a given interface

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