On Mon, 2014-10-06 at 12:51 -0700, Ed Swierk wrote:
> I'm using NetworkManager on a server with two wired Ethernet interfaces
> (eth0 and eth1) configured as slaves of a bond in active-backup mode. I'd
> like the bond interface to always be assigned eth0's MAC address.
> 
> This is easy with old-school static network configuration like ifupdown:
> just make eth0 the first slave of the bond interface, and Linux will copy
> eth0's MAC address to the bond.
> 
> When NetworkManager starts up and reads system-interface config files, it
> creates the bond interface right away, but doesn't add a slave until it
> notices that the slave's link is up (i.e. carrier is 1). And of course the
> link state depends on lots of things, like whether a cable is plugged in
> and the state of the switch or host at the other end. Thus whether eth0 or
> eth1 gets enslaved to the bond first is unpredictable, meaning the bond
> interface's MAC address is unpredictable. This is troublesome in some
> environments, such as ones where a DHCP server assigns IP addresses based
> on the MAC address of the client.

Does setting the "primary" bond option when in active-backup mode to
"eth0" make things better?  In nm-connection-editor it'll be in the page
for Bond options, in nmtui it'll be in about the same place, and in
nmcli you'd do:

nmcli con mod Bond1 +bond.options "primary=eth0"

and then re-activate the connection.  Let me know if that does/doesn't
help.  (note; this may only work with 0.9.10+)

Dan

> NetworkManager already treats a bond slave interface differently when its
> link goes down, leaving it in DISCONNECTED state rather than switching it
> to UNAVAILABLE. So there's precedent for having a bond interface with one
> or more link-down slave interfaces. I think the easiest way to achieve a
> stable MAC address is to extend that behavior to the startup case: as soon
> as NetworkManager sees an interface that's configured as a bond slave, it
> should move it from UNAVAILABLE to DISCONNECTED. That way the first
> configured slave interface, rather than the first one with link up, is
> enslaved to the bond.
> 
> I couldn't figure out a way to configure this in NetworkManager 0.9.8.10,
> nor in mainline code. As a proof of concept, I hacked
> nm_device_state_changed() in src/nm-device.c: in the second switch(state),
> UNAVAILABLE case, I force the transition to DISCONNECTED for eth0 and eth1.
> This works as I'd hoped: both interfaces are enslaved right away, with eth0
> always first.
> 
> I didn't see any easy way to implement this behavior cleanly, though. This
> new behavior should apply only to bond slave interfaces. At the point where
> nm_device_state_changed() is called, there's not yet a corresponding
> connection for eth0 or eth1, so I can't check whether the interface is
> configured as a bond slave. I thought I'd ask for advice before spending
> more time on this.
> 
> Any help would be appreciated!
> 
> --Ed
> _______________________________________________
> networkmanager-list mailing list
> networkmanager-list@gnome.org
> https://mail.gnome.org/mailman/listinfo/networkmanager-list


_______________________________________________
networkmanager-list mailing list
networkmanager-list@gnome.org
https://mail.gnome.org/mailman/listinfo/networkmanager-list

Reply via email to