I just went through setting up IPv6 yesterday, and there were 2 things that were catching me out. Maybe they will help you too?
My ISP does not send router advertisements - they only support DHCPv6 for both the IP address assigned to your routerās WAN, and also for the prefix delegation to your LAN. Note the WAN interface IPv6 address is different to the prefix delegated for LAN.
My vyos firewall was blocking the DHCPv6 traffic - I had a zone-based firewall configure for IPv4, but no rules configured for IPv6 - this didnāt prevent the zones I was using for IPv4 from blocking the traffic (zones were default drop). I could see the dropped traffic using the operational command show log firewall ipv6
To address the above - I used the config below. Maybe something in this will help you too?
Interface config:
The first line requests an address for the WAN interface via DHCPv6, the later lines request a prefix delegation for the LAN interfaces. SLA-ID of 32 is unimportant - Iām using that value to get my IPv6 prefixes to match my IPv4 subnets to help me identify addresses.
set interfaces ethernet <WAN> address 'dhcpv6'
set interfaces ethernet <WAN> description 'WAN'
set interfaces ethernet <WAN> dhcpv6-options pd 0 interface <LAN> address '1'
set interfaces ethernet <WAN> dhcpv6-options pd 0 interface <LAN> sla-id '32'
set interfaces ethernet <WAN> dhcpv6-options pd 0 length '48'
Router Advertisement:
Advertise the prefixes delegated by my ISP to my LAN.
set service router-advert interface <LAN> dnssl '<MY DOMAIN>'
set service router-advert interface <LAN> prefix ::/64
Firewall Rules:
GLOBAL - allow reply traffic.
WAN - Allow DHCPv6 replies from my ISP. Also allow ICMPv6 as it is more heavily relied upon in IPv6.
LAN - allow ICMPv6 from WAN.
set firewall global-options state-policy established action 'accept'
set firewall global-options state-policy invalid action 'drop'
set firewall global-options state-policy related action 'accept'
set firewall ipv6 name LAN-LOCAL-v6 default-action 'reject'
set firewall ipv6 name LAN-LOCAL-v6 default-log
set firewall ipv6 name LAN-LOCAL-v6 rule 1 action 'accept'
set firewall ipv6 name LAN-LOCAL-v6 rule 1 protocol 'ipv6-icmp'set firewall ipv6 name LAN-WAN-v6 default-action 'accept'
set firewall ipv6 name LOCAL-LAN-v6 default-action 'accept'
set firewall ipv6 name LOCAL-WAN-v6 default-action 'accept'
set firewall ipv6 name WAN-LAN-v6 default-action 'drop'
set firewall ipv6 name WAN-LAN-v6 default-log
set firewall ipv6 name WAN-LAN-v6 rule 1 action 'accept'
set firewall ipv6 name WAN-LAN-v6 rule 1 protocol 'ipv6-icmp'
set firewall ipv6 name WAN-LOCAL-v6 default-action 'drop'
set firewall ipv6 name WAN-LOCAL-v6 default-log
set firewall ipv6 name WAN-LOCAL-v6 rule 1 action 'accept'
set firewall ipv6 name WAN-LOCAL-v6 rule 1 protocol 'ipv6-icmp'
set firewall ipv6 name WAN-LOCAL-v6 rule 2 action 'accept'
set firewall ipv6 name WAN-LOCAL-v6 rule 2 description 'Allow DHCPv6 response from ISP'set firewall ipv6 name WAN-LOCAL-v6 rule 2 destination port '546'
set firewall ipv6 name WAN-LOCAL-v6 rule 2 protocol 'udp'
set firewall ipv6 name WAN-LOCAL-v6 rule 2 source port '547'
set firewall zone LAN from LOCAL firewall ipv6-name 'LOCAL-LAN-v6'
set firewall zone LAN from WAN firewall ipv6-name 'WAN-LAN-v6'
set firewall zone LOCAL from LAN firewall ipv6-name 'LAN-LOCAL-v6'
set firewall zone LOCAL from WAN firewall ipv6-name 'WAN-LOCAL-v6'
set firewall zone WAN from LAN firewall ipv6-name 'LAN-WAN-v6'
set firewall zone WAN from LOCAL firewall ipv6-name 'LOCAL-WAN-v6'
Many thanks for your hint. That was the final piece missing. I did not setup any ipv6 firewall rules as I thought that at least the address allocation to wan interface should work. I have now added the ipv6 firewall and now both interface receive an ipv6 address.