ovh / infrastructure-roadmap

Agile roadmap for OVHcloud for Baremetal, Network and Storage IaaS services. Discover the features our product teams are working on, comment and influence our backlog.
https://github.com/orgs/ovh/projects/16
38 stars 1 forks source link

vMac for ipv6 #181

Open NotLazy opened 7 months ago

NotLazy commented 7 months ago

As an OVHcloud customer using dedicated bare metal servers I want to be able to assign virtual mac addresses to the ipv6 address block so that I can assign ipv6 addresses to guests in my proxmox instance

I have an existing setup with ipv4 addresses that I can easily set the mac address of a VM or LXC and through the use of a dhcp server, have the VM or LXC automatically discover and use their ipv4 address. I would appreciate a similar functionality for ipv6, as it seems very weird that we're not already able to do this, since we can do it with ipv4.

I'd expect that I can use "Select IPv6" or a new option "Add a virtual MAC" from the dropdown to select an ipv6 and then define a vMac and then have that ipv6 show up inside the ipv6's fold with the vmac, sort of similar to how ipv4's additional IP blocks work.

yomovh commented 7 months ago

Thanks for your issue. I have transferred to infrastructure roadmap which is managing additional IP product

jslocinski commented 4 months ago

Have you seen Additional IPv6 working with vRack? No vMac there, but next-hop and routed subnets available. Would that help you, @NotLazy ?

NotLazy commented 4 months ago

Have you seen Additional IPv6 working with vRack?

No vMac there, but next-hop and routed subnets available.

Would that help you, @NotLazy ?

Unfortunately the RISE series doesn't support vRack, so that's not an option for my use case.

zarlo commented 4 months ago

@NotLazy do you have proxy_ndp turned on on your bridge? this is needed for the router to find the vms

net.ipv6.conf.default.proxy_ndp = 1
net.ipv6.conf.all.proxy_ndp = 1
NotLazy commented 4 months ago

@zarlo I'm not totally familiar with how all this works, so just to clarify, are those two settings the only thing I would need to change to test if that would work?

zarlo commented 4 months ago

@NotLazy they should be

sysctl -w net.ipv6.conf.default.proxy_ndp = 1
sysctl -w net.ipv6.conf.all.proxy_ndp = 1

this will turn on ndp proxying for all interfaces

root@pve5480:~# sysctl -a | grep "net.ipv6.conf.all"
net.ipv6.conf.all.accept_dad = 0
net.ipv6.conf.all.accept_ra = 1
net.ipv6.conf.all.accept_ra_defrtr = 1
net.ipv6.conf.all.accept_ra_from_local = 0
net.ipv6.conf.all.accept_ra_min_hop_limit = 1
net.ipv6.conf.all.accept_ra_min_lft = 0
net.ipv6.conf.all.accept_ra_mtu = 1
net.ipv6.conf.all.accept_ra_pinfo = 1
net.ipv6.conf.all.accept_ra_rt_info_max_plen = 0
net.ipv6.conf.all.accept_ra_rt_info_min_plen = 0
net.ipv6.conf.all.accept_ra_rtr_pref = 1
net.ipv6.conf.all.accept_redirects = 1
net.ipv6.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_untracked_na = 0
net.ipv6.conf.all.addr_gen_mode = 0
net.ipv6.conf.all.autoconf = 1
net.ipv6.conf.all.dad_transmits = 1
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.all.disable_policy = 0
net.ipv6.conf.all.drop_unicast_in_l2_multicast = 0
net.ipv6.conf.all.drop_unsolicited_na = 0
net.ipv6.conf.all.enhanced_dad = 1
net.ipv6.conf.all.force_mld_version = 0
net.ipv6.conf.all.force_tllao = 0
net.ipv6.conf.all.forwarding = 0
net.ipv6.conf.all.hop_limit = 64
net.ipv6.conf.all.ignore_routes_with_linkdown = 0
net.ipv6.conf.all.ioam6_enabled = 0
net.ipv6.conf.all.ioam6_id = 65535
net.ipv6.conf.all.ioam6_id_wide = 4294967295
net.ipv6.conf.all.keep_addr_on_down = 0
net.ipv6.conf.all.max_addresses = 16
net.ipv6.conf.all.max_desync_factor = 600
net.ipv6.conf.all.mc_forwarding = 0
net.ipv6.conf.all.mldv1_unsolicited_report_interval = 10000
net.ipv6.conf.all.mldv2_unsolicited_report_interval = 1000
net.ipv6.conf.all.mtu = 1280
net.ipv6.conf.all.ndisc_evict_nocarrier = 1
net.ipv6.conf.all.ndisc_notify = 0
net.ipv6.conf.all.ndisc_tclass = 0
net.ipv6.conf.all.proxy_ndp = 1
net.ipv6.conf.all.ra_defrtr_metric = 1024
net.ipv6.conf.all.regen_max_retry = 3
net.ipv6.conf.all.router_probe_interval = 60
net.ipv6.conf.all.router_solicitation_delay = 1
net.ipv6.conf.all.router_solicitation_interval = 4
net.ipv6.conf.all.router_solicitation_max_interval = 3600
net.ipv6.conf.all.router_solicitations = -1
net.ipv6.conf.all.rpl_seg_enabled = 0
net.ipv6.conf.all.seg6_enabled = 0
net.ipv6.conf.all.seg6_require_hmac = 0
net.ipv6.conf.all.suppress_frag_ndisc = 1
net.ipv6.conf.all.temp_prefered_lft = 86400
net.ipv6.conf.all.temp_valid_lft = 604800
net.ipv6.conf.all.use_oif_addrs_only = 0
net.ipv6.conf.all.use_tempaddr = 0

my set up that works for me

NotLazy commented 4 months ago

@zarlo without further configuration than those two settings, it didn't work. I updated them, restarted my vm and this is how that went:

# curl -6 ifconfig.me
curl: (7) Couldn't connect to server
zarlo commented 4 months ago

are you setting you gateway?