Re: Setting MACADDR with nmcli


On Wed, 2018-08-08 at 08:24 -0400, Robert Moskowitz wrote:

On 08/07/2018 09:07 AM, Thomas Haller wrote:
On Tue, 2018-08-07 at 08:43 -0400, Robert Moskowitz wrote:
I hope this is the right list for nmcli.

I want to set MACADDR in ifcfg-eth0

I thought it was:

nmcli con mod eth0 mac "02:67:15:00:81:0B"

but this sets HWADDR, which has a totally different use.  I could
change HWADDR to MACADDR with:

sed -i -e "s/HWADDR/MACADDR/w /dev/stdout"

But that is a hack.  It would be nice to be able to directly set
MACADDR, but I cannot find any documentation that states how to



$ nmcli connection modify "$PROFILE" ethernet.cloned-mac-address

I wonder what the history of naming this object 'cloned' mac
Perhaps because we were cloning the address of the broken card for
new card so the licensed software would work?  :)

Historical reasons. I agree, the name is suboptimal. But changing it
now, would be too much hazzle.

I did that a lot in my early days with 3com cards and VAX ethernet

Now we use it for ARM boards (and others) that come without a MAC 
address and the uboot or OS has to invent some local scope address.

Oh, btw, you might like setting it to "stable". The property can also
be configured with a system-wide default value (see `man
NetworkManager.conf`). That is, drop a file
/etc/NetworkManager/conf.d/90-mac-addr.conf with


and it will be used by default in all profiles (which don't specify the
cloned-mac-address option explicitly).
If you'd like some details, see `man nm-settings` or [1].


Theoretically, this is documented in `man nm-settings`. However,
manual is generated and for cloned-mac-address the
generated documentation is confusing. It's confusing, because `man
settings` is undecided whether it documents libnm GObject
properties or
D-bus API. Especially, since you care about nmcli syntax. In most
cases, there is little difference between libnm API, D-Bus API and
nmcli, so "nm-settings" manual does apply. For "cloned-mac-address"
it's different.

And as you seem concerned about ifcfg files, see also
`man nm-settings-ifcfg-rh`. But usually, you would not concern
with the details of ifcfg files.

You do for ARM based servers.  No GUI typically.  Fixed IP
and the like and a predictable MAC addr.  Sometimes the uboot is 
consistent for a given board on how it computes the MAC address.  Of 
course a new version of uboot may compute it differently.

So perhaps there is a more modern method than using ifcfg files for 
servers.  I have not encountered it.  I have at least switched from
coding my ifcfg to using nmcli in scripts.

The modern way is NetworkManager ;-)

If you look at `man nmcli` it has a table:


        Table 3. Wired Ethernet options
        │Alias      │ Property                 │
        │mtu        │ wired.mtu                │
        │mac        │ wired.mac-address        │
        │cloned-mac │ wired.cloned-mac-address │

And you have to realize that mac maps to HWADDR to link the ifcfg to
specific card. While cloned-mac maps to MACADDR to set the MAC
actually used for an interface.  I had to read a lot to tease that 
distinction out.

The details of ifcfg syntax, are only relevant if you want to switch
between NetworkManager and initscripts, and use the same ifcfg files in
both setups. If you use NetworkManager exclusively, it is not necessary
to concern yourself with ifcfg syntax.

For $MACADDR variable, this is relatively straight forward. But how
to result in ipv6.method setting, is far from obvious. It's less error-
prone to just set ipv6.method via nmcli.

But if you want to pre-deploy profiles and copy them around, you are
indeed concerned with the files. Sure, that works. Maybe you'd want to
use keyfiles for that however.


Attachment: signature.asc
Description: This is a digitally signed message part

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]