hzyitc / armbian-onecloud

Armbian for onecloud. 玩客云用armbian
1.24k stars 239 forks source link

刷了两台mac地址都一样 #21

Closed weigeloveu closed 2 years ago

weigeloveu commented 2 years ago

mac地址要手动写进去吗?我看之前的教程都是在/etc/network/interfaces里边手动写,这两台拆机之后主板上没写mac地址,如何能获取到真实的mac地址?

hzyitc commented 2 years ago

mac是自动随机生成的。

具体代码见packages/bsp/common/usr/lib/armbian/armbian-common#L35

# set fixed IP address from first randomly assigned one. If nothing is detected, generate one.
set_fixed_mac ()
{
    if [ -n "$(command -v nmcli)" ]; then
        CONNECTION="$(nmcli -f UUID,ACTIVE,DEVICE,TYPE connection show --active | tail -n1)"
        UUID=$(awk -F" " '/ethernet/ {print $1}' <<< "${CONNECTION}")
        DEVNAME=$(awk -F" " '/ethernet/ {print $3}' <<< "${CONNECTION}")
    else
        DEVNAME=eth0
    fi

    MACADDR=$(/sbin/ip link | grep -A1 ${DEVNAME} | awk -F" " '/ether / {print $2}')

    [[ -z $MACADDR ]] && get_random_mac

    if [[ -n "$(command -v nmcli)" && -n $UUID ]]; then
        nmcli connection modify "$UUID" ethernet.cloned-mac-address "$MACADDR"
        nmcli connection modify "$UUID" -ethernet.mac-address ""
        nmcli connection down "$UUID" >/dev/null 2>&1
        nmcli connection up "$UUID" >/dev/null 2>&1
    elif [[ -f /etc/systemd/network/$DEVNAME.network ]]; then
        if ! grep '^ *MACAddress=' /etc/systemd/network/$DEVNAME.network > /dev/null; then
            sed -i "s/#MACAddress=/MACAddress=$MACADDR/g" /etc/systemd/network/$DEVNAME.network
        fi
    fi
    return 0
} # set fixed mac to the 1st active network adapter
MDCY9008 commented 2 years ago

我反复刷了两次,两次都是一样的mac,感觉没有生效。

weigeloveu commented 2 years ago

我反复刷了两次,两次都是一样的mac,感觉没有生效。 刷回官方包找的mac地址 我目前还是用卡刷,install脚本里边可以自定义mac地址,但是没生效。然后手动在/etc/network/interfaces里边自定义mac地址也没生效,/etc/systemd/network/目录是空的,不知道要在哪改。

weigeloveu commented 2 years ago

mac是自动随机生成的。

具体代码见packages/bsp/common/usr/lib/armbian/armbian-common#L35

# set fixed IP address from first randomly assigned one. If nothing is detected, generate one.
set_fixed_mac ()
{
  if [ -n "$(command -v nmcli)" ]; then
      CONNECTION="$(nmcli -f UUID,ACTIVE,DEVICE,TYPE connection show --active | tail -n1)"
      UUID=$(awk -F" " '/ethernet/ {print $1}' <<< "${CONNECTION}")
      DEVNAME=$(awk -F" " '/ethernet/ {print $3}' <<< "${CONNECTION}")
  else
      DEVNAME=eth0
  fi

  MACADDR=$(/sbin/ip link | grep -A1 ${DEVNAME} | awk -F" " '/ether / {print $2}')

  [[ -z $MACADDR ]] && get_random_mac

  if [[ -n "$(command -v nmcli)" && -n $UUID ]]; then
      nmcli connection modify "$UUID" ethernet.cloned-mac-address "$MACADDR"
      nmcli connection modify "$UUID" -ethernet.mac-address ""
      nmcli connection down "$UUID" >/dev/null 2>&1
      nmcli connection up "$UUID" >/dev/null 2>&1
  elif [[ -f /etc/systemd/network/$DEVNAME.network ]]; then
      if ! grep '^ *MACAddress=' /etc/systemd/network/$DEVNAME.network > /dev/null; then
          sed -i "s/#MACAddress=/MACAddress=$MACADDR/g" /etc/systemd/network/$DEVNAME.network
      fi
  fi
  return 0
} # set fixed mac to the 1st active network adapter

大佬如何改回正确的mac地址呢,我试了常规的修改/etc/network/interfaces并不好使

weigeloveu commented 2 years ago

搜到一篇文章,情况类似 修改了这个文件,终于可以把mac地址改过来了/etc/NetworkManager/system-connections/Wired\ connection\ 1.nmconnection

hzyitc commented 2 years ago

也可以使用nmtui进行修改。

hzyitc commented 2 years ago

系统启动后就会固定MAC,并且是写入到配置文件中的。

如果是直接复制系统文件进行刷机的话,大概率是把这个配置文件也给复制过去了。

MDCY9008 commented 2 years ago

系统启动后就会固定MAC,并且是写入到配置文件中的。

如果是直接复制系统文件进行刷机的话,大概率是把这个配置文件也给复制过去了。

image 你好,想问一下这句是不是有点问题,貌似不会执行get_random_mac

hzyitc commented 2 years ago

系统启动后就会固定MAC,并且是写入到配置文件中的。 如果是直接复制系统文件进行刷机的话,大概率是把这个配置文件也给复制过去了。

image 你好,想问一下这句是不是有点问题,貌似不会执行get_random_mac

它优先获取网卡(自带或自动生成)的MAC。如果获取不到才随机生成。

Yellow-Fitz commented 2 years ago

搜到一篇文章,情况类似 修改了这个文件,终于可以把mac地址改过来了/etc/NetworkManager/system-connections/Wired\ connection\ 1.nmconnection

你好,请问具体怎么操作呢?求教一下,谢谢

Yellow-Fitz commented 2 years ago

也可以使用nmtui进行修改。您好,我尝试过这样修改,修改完后重启。也会回到最初的MAC地址。请问还有别的办法嘛?谢谢

hzyitc commented 2 years ago

麻烦提供下MAC,我确认下具体bug

经测试,bullseyejammy会在启动时使用一个固定的MAC覆盖掉网卡生成的MAC,而busterfocal不会。初步怀疑是systemdudev的问题。

hzyitc commented 2 years ago

systemd默认把MACAddressPolicy设置为persistent

meson的网卡不支持persistent MAC address,于是systemd会自动使用machine-id生成MAC覆盖掉网卡生成的MAC

由于armbian官方脚本生成的镜像里面并没有删除machine-id,所以使用同个镜像刷写的机子会拥有相同的machine-id,进而拥有相同的MAC

已向官方报告此问题 armbian/build#4070

Yellow-Fitz commented 2 years ago

明白。谢谢

发自我的iPhone

在 2022年8月14日,18:31,hzyitc @.***> 写道:

 systemd默认把MACAddressPolicy设置为persistent。

meson的网卡不支持persistent MAC address,于是systemd会自动使用machine-id生成MAC覆盖掉网卡生成的MAC。

由于armbian官方脚本生成的镜像里面并没有删除machine-id,所以使用同个镜像刷写的机子会拥有相同的machine-id,进而拥有相同的MAC。

已向官方报告此问题 armbian#4070

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.

Yellow-Fitz commented 2 years ago

ea:88:de:28:67:6c 这个是JAMMY的。发自我的iPhone

在 2022年8月14日,01:44,hzyitc @.***> 写道:

 麻烦提供下MAC,我确认下具体bug。

经测试,bullseye和jammy会在启动时使用一个固定的MAC覆盖掉网卡生成的MAC,而buster和focal不会。初步怀疑是systemd或udev的问题。

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.

hzyitc commented 2 years ago

armbian/build#4288 应该能修复这个问题。