DHCPv6 for home installations?

Addendum: Now the set default gateway command is there but not available in winbox, only in command line mode…

@nsayer: What ROS version are you using? /ipv6 route print looks different in 5.19…

[admin@MikroTik] /ipv6 route> /ipv6 route print     
Flags: X - disabled, A - active, D - dynamic, 
C - connect, S - static, r - rip, o - ospf, b - bgp, U - unreachable 
 #      DST-ADDRESS              GATEWAY                  DISTANCE
 0 A S  ::/0                     RDS-PPPoE                       1
 ...
 5 ADC  2a02:2f02:1022:f0cb::/64 ether1                          0
[admin@MikroTik] /ipv6 route>

Here rule 0 is the default route and i do not get any dynamic route to the provider, only to ether1 which is my internal network the prefix pool is delegated to.

I am using 5.19. I have no explanation for any difference.

[edit]

Well… Except I did a “print detail” and the site might be reformatting it a bit.

ok… i missed that “detail” parameter :confused:

so here are my settings (ether1 - internal, RDS-PPPoE - external interface)…

 0 A S  dst-address=::/0 gateway=RDS-PPPoE gateway-status=RDS-PPPoE reachable distance=1 scope=30
        target-scope=10
...
 5 ADC  dst-address=2a02:2f02:1022:f0cb::/64 gateway=ether1 gateway-status=ether1 reachable 
        distance=0 scope=10

Nothing else related to that interfaces.

DHCP client:

 0    interface=RDS-PPPoE pool-name="ipv6test" pool-prefix-length=64 status=bound 
      prefix=2a02:2f02:1022:f0cb::/64 duid="00030001000c42a0636c" add-default-route=no

Local IP assignement:

1  G address=2a02:2f02:1022:f0cb::1/64 interface=ether1 actual-interface=ether1 eui-64=no 
      advertise=yes

Assignement is dynamic form dhcp pool using address=::1/64 and there is NO PUBLIC IPv6 assigned to the external interface, only LL…

And on ND:

 0    interface=ether1 ra-interval=20s-1m ra-delay=3s mtu=unspecified reachable-time=unspecified 
      retransmit-interval=unspecified ra-lifetime=30m hop-limit=64 advertise-mac-address=yes 
      advertise-dns=yes managed-address-configuration=no other-configuration=no

Now why the difference… i don’t know.

The biggest difference I see is that I have 3 routs showing instead of two:

0 A S  dst-address=::/0 gateway=ether1-gateway 
        gateway-status=ether1-gateway reachable distance=1 scope=30 
        target-scope=10 

 1 X S  dst-address=::/0 gateway=fe80::201:5cff:fe3c:b241%ether1-gateway 
        gateway-status=fe80::201:5cff:fe3c:b241%ether1-gateway inactive 
        distance=1 scope=30 target-scope=10 

 2 ADC  dst-address=2601:9:4980:52::/64 gateway=bridge1 
        gateway-status=bridge1 reachable distance=0 scope=10 

 3  DS  dst-address=2601:9:4980:52::/64 
        gateway=fe80::201:5cff:fe3c:b241%ether1-gateway 
        gateway-status=fe80::201:5cff:fe3c:b241%ether1-gateway reachable 
        distance=1 scope=30 target-scope=10

When route 0 is enabled and 1 disabled, it doesn’t work. When it’s the other way around, it does.

I’m testing by using /ping on IPv6 literals to public hosts. When that works, the inside hosts work fine as well.

I think i don’t get your setup details…

You have an interface called ether1-gateway which is your ISP connection.
Another one called bridge1 as your internal interface.

If this is correct, your route number 3 is wrong!

If 2601:9:4980:52::/64 is your delegated prefix, than there must be only 1 route to that prefix, via bridge1.
There are no addresses 2601:9:4980:52::/64 via ether1-gateway route, all are delegated to you and must be IPs of bridge1 or via bridge1.

Do you use a pool for prefix delegation?

I’m able to reproduce the same behavior with from-pool and add-default-route. Details are in this thread: http://forum.mikrotik.com/t/comcast-dhcpv6-pd-problems-with-5-19/58227/1

I think there are two separate bugs in 5.19:

  1. add-default-route actually adds a route for the prefix received via dhcpv6-pd, not a default route. I can reproduce this and it looks like you can too.
  2. /ipv6 address attribute from-pool does not seem to be effective.

I was able to get home IPv6 up and running, albeit in a hacky configuration, by:

  1. disabling add-default-route, but manually adding a default route pointing to v6 LL address of the CMTS
  2. manually addressing my internal interface with the prefix handed out by dhcpv6-pd

Can anyone else reproduce this behavior? If so, we should confirm as a bug and submit to mikrotik support.

I agree that route 3 is wrong. It is, however, what showed up when I turned “add-default-route” on in the dhcpv6 client.

If 2601:9:4980:52::/64 is your delegated prefix, than there must be only 1 route to that prefix, via bridge1.
There are no addresses 2601:9:4980:52::/64 via ether1-gateway route, all are delegated to you and must be IPs of bridge1 or via bridge1.

Do you use a pool for prefix delegation?

Yes. That’s what results in the creation of route #2.

I’ve sent a supout.rif to support.

Contact support with attached supout files.

That appears to be working for me.

I was able to get home IPv6 up and running, albeit in a hacky configuration, by:

  1. manually addressing my internal interface with the prefix handed out by dhcpv6-pd

I didn’t need to do that. I just added an address of ::/0, with from-pool, and turned off Use EUI64 and turned on advertising.

AFAIK you also need to enable RA in IPV6/ND (Neighbour discovery) and enable advertisement of MAC and DNS (if you need it - mikrotik’s dns server supports IPv6 resolution) on your internal interface.

I don’t advertise DNS. MacOS X machines appear to be allergic to that (at least, last time I tried it).

Support responded to me saying there would be a fix in the next release. Huzzah!

Good news!
And maybe we will get the “Use default gateway” checkbox in Winbox also :slight_smile:

Hi everyone!

Thanks for the great post!

I’m currently testing the PPPoE Server with RouterOS 5.19 and giving out /64 IPv6 prefixes to PPPoE Clients. This works fine with RouterOS Clients (in my case I’m manually configuring one IPv6 address out of the prefix on the PPPoE Clients LAN side). If I have a non-RouterOS client as many customers do (for example a D-Link DIR-600 or Linksys E900) which support IPv6, than I’m running into some troubles :frowning:

On both tested routers (D-Link DIR-600 and Linksys E900) they see the prefix on the WAN port if I’m giving it out via the PPPoE Secret (Remote IPv6 prefix). On the D-Link I can configure the LAN IPv6 address but it still doesn’t work as the Router believes that the prefix is on the WAN (PPPoE out so to speak) interface.
If I’m using the RouterOS DHCP PD feature as explained in the Wiki it works like a charme with both Routers (the D-Link and the Linksys), BUT:
How can I be sure that a certain IPv6 PPPoE client always receives the same prefix?? DUID would help, but with the standard DHCP PD the client could change the end device and receive a different prefix. I could make some frewall rules which drop all not “officially” configured prefixes, but this would be some additional work as there is no automatic “add to address list” feature like with IPv4 PPPoE addresses. I also don’t wanna configure a single profile for every single secret with a single pool for every single user G


Are there currently any BCPs for MikroTik+PPPoE+static IPv4 address+static IPv6 prefix??



Big thanks and kind regards,
uebi

Hi,
Why do you need one of the IP6 assigned to the PPoE LAN side?
As long as you don’t need router access on that interface/IP combination it has no use.
All IPv6 enabled interfaces have a LL address assigned automatically for data transport purposes, and only forwarding has to be done for “inside” addresses.
IPv4 needed that interface address mainly for NAT purposes which is not available in IPv6.

On the other hand, RA is intended to assign addresses to one single broadcast domain (speak 1 LAN) and uses a single /64 prefix and assigns individual addresses to interfaces (in fact the addresses are locally generated, and the RA server has no exact idea how, it just advertizes the prefix, the router and optionally the DNS). It is not intended for PD nor is it capable to do such thing.
So, to do PD on a subsequent router, you have to assign a address range to it (at least /64), using e.g. DHCP, or by hand, so it can create a pool from which to delegate individual addresses (not prefix ranges) to its LAN.

Well, that’s what I actually meant.
I want to assign one /64 prefix to the customer’s/end user’s LAN. The customer’s/end user’s WAN port just has a LL (PPPoE) address. The only problem is that I don’t know how to do that with a MikroTik (RouterOS) as PPPoE Server as long as the client isn’t RouterOS, too (what can be the case of course). Well, in fact I know how it could work (Wiki’s DHCP PD over PPP), but I want the customer/end user to have the same prefix all the time, what can’t be guranteed with this solution afaik. The sweetest solution would be the “Remote IPv6 prefix” option in the PPP secrets. That works great with RouterOS clients, but not with others (D-Link and Linksys at least). So I’m wondering if this feature is not 100% conform to some standards or how it can be implemented to be compatible with other vendor’s end devices.


KR,
uebi

Why don’t you simply assign static IPs/64 from your pool? Do you really want/need an DHCP server?

And regarding the DHCP server… There is something called “bindings” which i think is ment to do exactly this: assign a ip/prefix to an DUID.
This DUID afaik is an unique machine identifier of the client. How exactly it is formed i don’t know.
Never played with it so some digging is needed.

The default route issue is, indeed, fixed in 5.20.