> On Sep 10, 2020, at 11:16 AM, Demi M. Obenour <demioben...@gmail.com> wrote:
>
> How do I assign the same IP and MAC address to multiple interfaces?
> This is easy on Linux, but I cannot figure out how to do it on
> OpenBSD. The (virtual) machine is assigned a single IP address by
> the hypervisor, so changing the IP not an option, and bridging is
> a no-go as all the peers share a MAC address. All netmasks are /32
> for IPv4 and /128 for IPv6.
>
> Each of the interfaces is a point-to-point Ethernet link, and both
> its IP and MAC address and that of its peer are statically known.
> All routes are also assigned statically. In short, I need to assign
> a route based purely on the name of an interface.
>
> The -ifp keyword in route(8) seems like it should be used for this,
> and the kernel sources indicate that it can be used to disambiguate
> which interface should be selected. However, I was not able to get
> it to work. I don’t have access to the VM I was using for testing
> anymore, but if I recall correctly, the C code and shell scripts I
> was using did the equivalent of the following:
>
> # ifconfig xnf0 inet 10.137.0.77 prefixlen 32
> # route -n delete 10.137.0.77/32 10.137.0.77
> # # this doesn’t work due to a route(8) bug ― I was using C code instead
> # # I submitted a bug report (with patch) to bugs@ a while back
> # route -n add -inet 10.137.255.254 -link fe:ff:ff:ff:ff:ff -ifp xnf0 -ifa
> 10.137.0.77
> # ifconfig vether0 create lladdr fe:ff:ff:ff:ff:ff
> # ifconfig vether0 inet 10.137.0.77 prefixlen 32
> # # this doesn’t work due to a route(8) bug ― I was using C code instead
> # route -n add -inet 10.139.255.254 -link fe:ff:ff:ff:ff:ff -ifp vether0 -ifa
> 10.137.0.77
> # route -n delete 10.137.0.77/32 10.137.0.77
> $ route -n show
>
> I expect that the route would to 10.139.255.254 would go through
> vether0, but it goes through xnf0 instead. If I then run:
>
> # ifconfig xnf0 -inet
> $ route -n show
>
> the route is gone.
>
> Should the above commands have worked? If not, is this just
> unsupported in OpenBSD? If it is supported, what should I have done
> differently? I did manage to create a workaround: I can assign each
> interface a unique alias address from the 169.254.0.0/16 link-local
> range, and use PF to NAT packets in this range to 10.137.0.77.
> However, this feels like an ugly hack.
>
> For IPv6, I can use the link-local address of each interface as the
> -ifa argument, so I am much less worried.
>
> Thank you for your time and attention.
>
> Sincerely,
>
> Demi M. Obenour
>
I’m confused by what you want to do, but maybe routing domains (route tables)
can help solve your problem?
Check out the keyword rdomain in ifconfig man page.