IPV6 on PVE

HerrieMna

New Member
Jan 3, 2026
5
0
1
Hi,
I'm struggling to get ipv6 working correctly on my pve hosts, I have a small system here at home with two pve-hosts and one pbs-host.
On one pve-host and on the pbs-host I have correctly working ipv6, with global routable 2xxx::something address delegated from my isp, a fdxx:something local address and a fe80:something link local address, only on the other pve-host I can't get it to work correctly.
Both pve-hosts have (as far as I know) exactly the same configuration, my /etc/network/interfaces file is like this:
Code:
root@pve:~# cat /etc/network/interfaces
auto lo
iface lo inet loopback

iface eno1 inet manual

auto vmbr0
iface vmbr0 inet static
        address something/24
        gateway something
        bridge-ports eno1
        bridge-stp off
        bridge-fd 0

iface vmbr0 inet6 auto
        accept_ra 2

source /etc/network/interfaces.d/*

And the sysctl settings for the vmbr0 are as follows:
Code:
root@pve:~# sysctl net.ipv6.conf.vmbr0
net.ipv6.conf.vmbr0.accept_dad = 1
net.ipv6.conf.vmbr0.accept_ra = 2
net.ipv6.conf.vmbr0.accept_ra_defrtr = 1
net.ipv6.conf.vmbr0.accept_ra_from_local = 0
net.ipv6.conf.vmbr0.accept_ra_min_hop_limit = 1
net.ipv6.conf.vmbr0.accept_ra_min_lft = 0
net.ipv6.conf.vmbr0.accept_ra_mtu = 1
net.ipv6.conf.vmbr0.accept_ra_pinfo = 1
net.ipv6.conf.vmbr0.accept_ra_rt_info_max_plen = 0
net.ipv6.conf.vmbr0.accept_ra_rt_info_min_plen = 0
net.ipv6.conf.vmbr0.accept_ra_rtr_pref = 1
net.ipv6.conf.vmbr0.accept_redirects = 1
net.ipv6.conf.vmbr0.accept_source_route = 0
net.ipv6.conf.vmbr0.accept_untracked_na = 0
net.ipv6.conf.vmbr0.addr_gen_mode = 0
net.ipv6.conf.vmbr0.autoconf = 1
net.ipv6.conf.vmbr0.dad_transmits = 1
net.ipv6.conf.vmbr0.disable_ipv6 = 0
net.ipv6.conf.vmbr0.disable_policy = 0
net.ipv6.conf.vmbr0.drop_unicast_in_l2_multicast = 0
net.ipv6.conf.vmbr0.drop_unsolicited_na = 0
net.ipv6.conf.vmbr0.enhanced_dad = 1
net.ipv6.conf.vmbr0.force_forwarding = 0
net.ipv6.conf.vmbr0.force_mld_version = 0
net.ipv6.conf.vmbr0.force_tllao = 0
net.ipv6.conf.vmbr0.forwarding = 1
net.ipv6.conf.vmbr0.hop_limit = 64
net.ipv6.conf.vmbr0.ignore_routes_with_linkdown = 0
net.ipv6.conf.vmbr0.ioam6_enabled = 0
net.ipv6.conf.vmbr0.ioam6_id = 65535
net.ipv6.conf.vmbr0.ioam6_id_wide = 4294967295
net.ipv6.conf.vmbr0.keep_addr_on_down = 0
net.ipv6.conf.vmbr0.max_addresses = 16
net.ipv6.conf.vmbr0.max_desync_factor = 600
net.ipv6.conf.vmbr0.mc_forwarding = 0
net.ipv6.conf.vmbr0.mldv1_unsolicited_report_interval = 10000
net.ipv6.conf.vmbr0.mldv2_unsolicited_report_interval = 1000
net.ipv6.conf.vmbr0.mtu = 1500
net.ipv6.conf.vmbr0.ndisc_evict_nocarrier = 1
net.ipv6.conf.vmbr0.ndisc_notify = 0
net.ipv6.conf.vmbr0.ndisc_tclass = 0
net.ipv6.conf.vmbr0.optimistic_dad = 0
net.ipv6.conf.vmbr0.proxy_ndp = 0
net.ipv6.conf.vmbr0.ra_defrtr_metric = 1024
net.ipv6.conf.vmbr0.ra_honor_pio_life = 0
net.ipv6.conf.vmbr0.ra_honor_pio_pflag = 0
net.ipv6.conf.vmbr0.regen_max_retry = 3
net.ipv6.conf.vmbr0.regen_min_advance = 2
net.ipv6.conf.vmbr0.router_probe_interval = 60
net.ipv6.conf.vmbr0.router_solicitation_delay = 1
net.ipv6.conf.vmbr0.router_solicitation_interval = 4
net.ipv6.conf.vmbr0.router_solicitation_max_interval = 3600
net.ipv6.conf.vmbr0.router_solicitations = -1
net.ipv6.conf.vmbr0.rpl_seg_enabled = 0
net.ipv6.conf.vmbr0.seg6_enabled = 0
net.ipv6.conf.vmbr0.seg6_require_hmac = 0
net.ipv6.conf.vmbr0.suppress_frag_ndisc = 1
net.ipv6.conf.vmbr0.temp_prefered_lft = 86400
net.ipv6.conf.vmbr0.temp_valid_lft = 604800
net.ipv6.conf.vmbr0.use_oif_addrs_only = 0
net.ipv6.conf.vmbr0.use_optimistic = 0
net.ipv6.conf.vmbr0.use_tempaddr = 0

I don't know why on the one pve-host these settings work correctly, while on the other pve-host it doesn't.
Are there other settings somewhere that might be related to this that might be different between my two pve-hosts ?
Does someone know a way how to debug this properly ?
Thanks,
Herman
 
If your configuration is identical, how about the physical connection? Some switches can drop multicast etc... Also what type of network cards?

Does your non working host have a link-local address? Hosts should ALWAYS have a link-local address even on a legacy network, so this would usually be present even if the host is failing to get a global address.

Since you're using SLAAC, have you tried running a tcpdump on vmbr0 to make sure that the router advertisements are being received by the host:
tcpdump -n -i vmbr0 icmp6 and 'ip6[40] == 134' -s 0 -v

You can also try manually sending a router solicitation and see what response you get (install the ndisc6 package with apt and then use the rdisc6 command).

Finally make sure that your hosts can communicate with each other via their link-local addresses, make sure to use the interface prefix when addressing them eg: ping6 fe80::aaaa:bbbb:cccc:dddd%vmbr0

Or see if temporarily assigning an address manually works?

My PVE and PBS hosts are actually v6-only, and working fine.
 
thanks for your reply, but the issues sort of solved itself....
I did an 'apt update; apt upgrade' and ~20 packages or so got updated, when I rebooted the pve-host that was not getting proper ipv6 addresses it now suddenly did.
btw when it wasn't working earlier it did get a link-local fe80:... address as well as a fdxx:... local-address, only the global address with prefix delegated from my isp was always missing as well as the dns/gateway info.
now it seems to be working, either some of the updated packages had something to do with it, or something else changed that I don't know of
 
ehhmmm, not entirely sure what to make of your linked post, am I supposed to use 'apt dist-upgrade' instead of 'apt upgrade' ? or am I supposed to do something else ?