IPv6 DHCP PD over PPPoE

My ISP provides an IPv6 /48 to customers over PPPoE. Using mikrotik I can request for a /48 prefix, it adds a /48 blackhole route to the routing table. I then manually set /64 addresses on LAN interfaces.

Hello @mafiosa
You can configure the pppoe interface to get the ipv6 prefix (using VyOS version 1.4):

set interfaces pppoe pppoe0 authentication password 'pass'
set interfaces pppoe pppoe0 authentication user 'user'
set interfaces pppoe pppoe0 dhcpv6-options pd 0 interface eth1 address '1'
set interfaces pppoe pppoe0 dhcpv6-options pd 0 interface eth1 sla-id '0'
set interfaces pppoe pppoe0 dhcpv6-options pd 0 length '48'
set interfaces pppoe pppoe0 ipv6 address autoconf
set interfaces pppoe pppoe0 source-interface 'eth0'
vyos@vyos:~$ show interface
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface        IP Address                        S/L  Description
---------        ----------                        ---  -----------
eth0             -                                 u/u  
eth1             2001:1:1002::1/64                 u/u  
eth2             -                                 u/D  
eth3             -                                 u/D  
lo               127.0.0.1/8                       u/u  
                 ::1/128                                
pppoe0           2001:1:1001:0:200::/64            u/u

In my example, the interface eth 1 is LAN. The interface will receive ipv6 address with a mask of 64. You can configure IP addresses manually on network devices that are connected to the interface eth1.
Routing table:

vyos@vyos# run show ipv6 route
Codes: K - kernel route, C - connected, S - static, R - RIPng,
       O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,
       v - VNC, V - VNC-Direct, A - Babel, D - SHARP, F - PBR,
       f - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup

K>* ::/0 [0/1024] via fe80::100:0:0:0, pppoe0, 00:07:27
S   ::/0 [1/0] is directly connected, pppoe0, weight 1, 00:07:30
C>* 2001:1:1001:2::/64 is directly connected, pppoe0, 00:07:27
C>* 2001:1:1002:200::/64 is directly connected, eth1, 00:06:55
C>* fe80::/10 is directly connected, pppoe0, 00:07:30
K * fe80::/10 [0/1] is directly connected, pppoe0, 00:07:30
C * fe80::/64 is directly connected, eth0, 00:10:29
C * fe80::/64 is directly connected, eth1, 00:10:30
C>* fe80::/64 is directly connected, lo, 00:10:32
[edit]

Documentation:
https://docs.vyos.io/en/latest/configuration/interfaces/pppoe.html#ipv6